{
  "version": 3,
  "sources": ["../../../node_modules/nunjucks/src/lib.js", "../../../node_modules/asap/raw.js", "../../../node_modules/asap/asap.js", "../../../node_modules/a-sync-waterfall/index.js", "../../../node_modules/nunjucks/src/lexer.js", "../../../node_modules/nunjucks/src/object.js", "../../../node_modules/nunjucks/src/nodes.js", "../../../node_modules/nunjucks/src/parser.js", "../../../node_modules/nunjucks/src/transformer.js", "../../../node_modules/nunjucks/src/runtime.js", "../../../node_modules/nunjucks/src/compiler.js", "../../../node_modules/nunjucks/src/filters.js", "../../../node_modules/nunjucks/src/loader.js", "../../../node_modules/nunjucks/src/precompiled-loader.js", "../../../node_modules/nunjucks/src/node-loaders.js", "../../../node_modules/nunjucks/src/loaders.js", "../../../node_modules/nunjucks/src/tests.js", "../../../node_modules/nunjucks/src/globals.js", "../../../node_modules/nunjucks/src/express-app.js", "../../../node_modules/nunjucks/src/environment.js", "../../../node_modules/nunjucks/src/precompile-global.js", "../../../node_modules/nunjucks/src/precompile.js", "../../../node_modules/nunjucks/src/jinja-compat.js", "../../../node_modules/nunjucks/index.js", "../package.json", "../src/cli.ts", "../node_modules/find-up/index.js", "../node_modules/locate-path/index.js", "../node_modules/yocto-queue/index.js", "../node_modules/p-limit/index.js", "../node_modules/p-locate/index.js", "../../../node_modules/unicorn-magic/node.js", "../src/render.ts"],
  "sourcesContent": ["'use strict';\n\nvar ArrayProto = Array.prototype;\nvar ObjProto = Object.prototype;\nvar escapeMap = {\n  '&': '&amp;',\n  '\"': '&quot;',\n  '\\'': '&#39;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\\\\': '&#92;'\n};\nvar escapeRegex = /[&\"'<>\\\\]/g;\nvar _exports = module.exports = {};\nfunction hasOwnProp(obj, k) {\n  return ObjProto.hasOwnProperty.call(obj, k);\n}\n_exports.hasOwnProp = hasOwnProp;\nfunction lookupEscape(ch) {\n  return escapeMap[ch];\n}\nfunction _prettifyError(path, withInternals, err) {\n  if (!err.Update) {\n    // not one of ours, cast it\n    err = new _exports.TemplateError(err);\n  }\n  err.Update(path);\n\n  // Unless they marked the dev flag, show them a trace from here\n  if (!withInternals) {\n    var old = err;\n    err = new Error(old.message);\n    err.name = old.name;\n  }\n  return err;\n}\n_exports._prettifyError = _prettifyError;\nfunction TemplateError(message, lineno, colno) {\n  var err;\n  var cause;\n  if (message instanceof Error) {\n    cause = message;\n    message = cause.name + \": \" + cause.message;\n  }\n  if (Object.setPrototypeOf) {\n    err = new Error(message);\n    Object.setPrototypeOf(err, TemplateError.prototype);\n  } else {\n    err = this;\n    Object.defineProperty(err, 'message', {\n      enumerable: false,\n      writable: true,\n      value: message\n    });\n  }\n  Object.defineProperty(err, 'name', {\n    value: 'Template render error'\n  });\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(err, this.constructor);\n  }\n  var getStack;\n  if (cause) {\n    var stackDescriptor = Object.getOwnPropertyDescriptor(cause, 'stack');\n    getStack = stackDescriptor && (stackDescriptor.get || function () {\n      return stackDescriptor.value;\n    });\n    if (!getStack) {\n      getStack = function getStack() {\n        return cause.stack;\n      };\n    }\n  } else {\n    var stack = new Error(message).stack;\n    getStack = function getStack() {\n      return stack;\n    };\n  }\n  Object.defineProperty(err, 'stack', {\n    get: function get() {\n      return getStack.call(err);\n    }\n  });\n  Object.defineProperty(err, 'cause', {\n    value: cause\n  });\n  err.lineno = lineno;\n  err.colno = colno;\n  err.firstUpdate = true;\n  err.Update = function Update(path) {\n    var msg = '(' + (path || 'unknown path') + ')';\n\n    // only show lineno + colno next to path of template\n    // where error occurred\n    if (this.firstUpdate) {\n      if (this.lineno && this.colno) {\n        msg += \" [Line \" + this.lineno + \", Column \" + this.colno + \"]\";\n      } else if (this.lineno) {\n        msg += \" [Line \" + this.lineno + \"]\";\n      }\n    }\n    msg += '\\n ';\n    if (this.firstUpdate) {\n      msg += ' ';\n    }\n    this.message = msg + (this.message || '');\n    this.firstUpdate = false;\n    return this;\n  };\n  return err;\n}\nif (Object.setPrototypeOf) {\n  Object.setPrototypeOf(TemplateError.prototype, Error.prototype);\n} else {\n  TemplateError.prototype = Object.create(Error.prototype, {\n    constructor: {\n      value: TemplateError\n    }\n  });\n}\n_exports.TemplateError = TemplateError;\nfunction escape(val) {\n  return val.replace(escapeRegex, lookupEscape);\n}\n_exports.escape = escape;\nfunction isFunction(obj) {\n  return ObjProto.toString.call(obj) === '[object Function]';\n}\n_exports.isFunction = isFunction;\nfunction isArray(obj) {\n  return ObjProto.toString.call(obj) === '[object Array]';\n}\n_exports.isArray = isArray;\nfunction isString(obj) {\n  return ObjProto.toString.call(obj) === '[object String]';\n}\n_exports.isString = isString;\nfunction isObject(obj) {\n  return ObjProto.toString.call(obj) === '[object Object]';\n}\n_exports.isObject = isObject;\n\n/**\n * @param {string|number} attr\n * @returns {(string|number)[]}\n * @private\n */\nfunction _prepareAttributeParts(attr) {\n  if (!attr) {\n    return [];\n  }\n  if (typeof attr === 'string') {\n    return attr.split('.');\n  }\n  return [attr];\n}\n\n/**\n * @param {string}   attribute      Attribute value. Dots allowed.\n * @returns {function(Object): *}\n */\nfunction getAttrGetter(attribute) {\n  var parts = _prepareAttributeParts(attribute);\n  return function attrGetter(item) {\n    var _item = item;\n    for (var i = 0; i < parts.length; i++) {\n      var part = parts[i];\n\n      // If item is not an object, and we still got parts to handle, it means\n      // that something goes wrong. Just roll out to undefined in that case.\n      if (hasOwnProp(_item, part)) {\n        _item = _item[part];\n      } else {\n        return undefined;\n      }\n    }\n    return _item;\n  };\n}\n_exports.getAttrGetter = getAttrGetter;\nfunction groupBy(obj, val, throwOnUndefined) {\n  var result = {};\n  var iterator = isFunction(val) ? val : getAttrGetter(val);\n  for (var i = 0; i < obj.length; i++) {\n    var value = obj[i];\n    var key = iterator(value, i);\n    if (key === undefined && throwOnUndefined === true) {\n      throw new TypeError(\"groupby: attribute \\\"\" + val + \"\\\" resolved to undefined\");\n    }\n    (result[key] || (result[key] = [])).push(value);\n  }\n  return result;\n}\n_exports.groupBy = groupBy;\nfunction toArray(obj) {\n  return Array.prototype.slice.call(obj);\n}\n_exports.toArray = toArray;\nfunction without(array) {\n  var result = [];\n  if (!array) {\n    return result;\n  }\n  var length = array.length;\n  var contains = toArray(arguments).slice(1);\n  var index = -1;\n  while (++index < length) {\n    if (indexOf(contains, array[index]) === -1) {\n      result.push(array[index]);\n    }\n  }\n  return result;\n}\n_exports.without = without;\nfunction repeat(char_, n) {\n  var str = '';\n  for (var i = 0; i < n; i++) {\n    str += char_;\n  }\n  return str;\n}\n_exports.repeat = repeat;\nfunction each(obj, func, context) {\n  if (obj == null) {\n    return;\n  }\n  if (ArrayProto.forEach && obj.forEach === ArrayProto.forEach) {\n    obj.forEach(func, context);\n  } else if (obj.length === +obj.length) {\n    for (var i = 0, l = obj.length; i < l; i++) {\n      func.call(context, obj[i], i, obj);\n    }\n  }\n}\n_exports.each = each;\nfunction map(obj, func) {\n  var results = [];\n  if (obj == null) {\n    return results;\n  }\n  if (ArrayProto.map && obj.map === ArrayProto.map) {\n    return obj.map(func);\n  }\n  for (var i = 0; i < obj.length; i++) {\n    results[results.length] = func(obj[i], i);\n  }\n  if (obj.length === +obj.length) {\n    results.length = obj.length;\n  }\n  return results;\n}\n_exports.map = map;\nfunction asyncIter(arr, iter, cb) {\n  var i = -1;\n  function next() {\n    i++;\n    if (i < arr.length) {\n      iter(arr[i], i, next, cb);\n    } else {\n      cb();\n    }\n  }\n  next();\n}\n_exports.asyncIter = asyncIter;\nfunction asyncFor(obj, iter, cb) {\n  var keys = keys_(obj || {});\n  var len = keys.length;\n  var i = -1;\n  function next() {\n    i++;\n    var k = keys[i];\n    if (i < len) {\n      iter(k, obj[k], i, len, next);\n    } else {\n      cb();\n    }\n  }\n  next();\n}\n_exports.asyncFor = asyncFor;\nfunction indexOf(arr, searchElement, fromIndex) {\n  return Array.prototype.indexOf.call(arr || [], searchElement, fromIndex);\n}\n_exports.indexOf = indexOf;\nfunction keys_(obj) {\n  /* eslint-disable no-restricted-syntax */\n  var arr = [];\n  for (var k in obj) {\n    if (hasOwnProp(obj, k)) {\n      arr.push(k);\n    }\n  }\n  return arr;\n}\n_exports.keys = keys_;\nfunction _entries(obj) {\n  return keys_(obj).map(function (k) {\n    return [k, obj[k]];\n  });\n}\n_exports._entries = _entries;\nfunction _values(obj) {\n  return keys_(obj).map(function (k) {\n    return obj[k];\n  });\n}\n_exports._values = _values;\nfunction extend(obj1, obj2) {\n  obj1 = obj1 || {};\n  keys_(obj2).forEach(function (k) {\n    obj1[k] = obj2[k];\n  });\n  return obj1;\n}\n_exports._assign = _exports.extend = extend;\nfunction inOperator(key, val) {\n  if (isArray(val) || isString(val)) {\n    return val.indexOf(key) !== -1;\n  } else if (isObject(val)) {\n    return key in val;\n  }\n  throw new Error('Cannot use \"in\" operator to search for \"' + key + '\" in unexpected types.');\n}\n_exports.inOperator = inOperator;", "\"use strict\";\n\nvar domain; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n    if (!queue.length) {\n        requestFlush();\n        flushing = true;\n    }\n    // Avoids a function call\n    queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n    while (index < queue.length) {\n        var currentIndex = index;\n        // Advance the index before calling the task. This ensures that we will\n        // begin flushing on the next task the task throws an error.\n        index = index + 1;\n        queue[currentIndex].call();\n        // Prevent leaking memory for long chains of recursive calls to `asap`.\n        // If we call `asap` within tasks scheduled by `asap`, the queue will\n        // grow, but to avoid an O(n) walk for every task we execute, we don't\n        // shift tasks off the queue after they have been executed.\n        // Instead, we periodically shift 1024 tasks off the queue.\n        if (index > capacity) {\n            // Manually shift all values starting at the index back to the\n            // beginning of the queue.\n            for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n                queue[scan] = queue[scan + index];\n            }\n            queue.length -= index;\n            index = 0;\n        }\n    }\n    queue.length = 0;\n    index = 0;\n    flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n    // Ensure flushing is not bound to any domain.\n    // It is not sufficient to exit the domain, because domains exist on a stack.\n    // To execute code outside of any domain, the following dance is necessary.\n    var parentDomain = process.domain;\n    if (parentDomain) {\n        if (!domain) {\n            // Lazy execute the domain module.\n            // Only employed if the user elects to use domains.\n            domain = require(\"domain\");\n        }\n        domain.active = process.domain = null;\n    }\n\n    // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n    // cannot handle recursion.\n    // `requestFlush` will only be called recursively from `asap.js`, to resume\n    // flushing after an error is thrown into a domain.\n    // Conveniently, `setImmediate` was introduced in the same version\n    // `process.nextTick` started throwing recursion errors.\n    if (flushing && hasSetImmediate) {\n        setImmediate(flush);\n    } else {\n        process.nextTick(flush);\n    }\n\n    if (parentDomain) {\n        domain.active = process.domain = parentDomain;\n    }\n}\n", "\"use strict\";\n\nvar rawAsap = require(\"./raw\");\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n    var rawTask;\n    if (freeTasks.length) {\n        rawTask = freeTasks.pop();\n    } else {\n        rawTask = new RawTask();\n    }\n    rawTask.task = task;\n    rawTask.domain = process.domain;\n    rawAsap(rawTask);\n}\n\nfunction RawTask() {\n    this.task = null;\n    this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n    if (this.domain) {\n        this.domain.enter();\n    }\n    var threw = true;\n    try {\n        this.task.call();\n        threw = false;\n        // If the task throws an exception (presumably) Node.js restores the\n        // domain stack for the next event.\n        if (this.domain) {\n            this.domain.exit();\n        }\n    } finally {\n        // We use try/finally and a threw flag to avoid messing up stack traces\n        // when we catch and release errors.\n        if (threw) {\n            // In Node.js, uncaught exceptions are considered fatal errors.\n            // Re-throw them to interrupt flushing!\n            // Ensure that flushing continues if an uncaught exception is\n            // suppressed listening process.on(\"uncaughtException\") or\n            // domain.on(\"error\").\n            rawAsap.requestFlush();\n        }\n        // If the task threw an error, we do not want to exit the domain here.\n        // Exiting the domain would prevent the domain from catching the error.\n        this.task = null;\n        this.domain = null;\n        freeTasks.push(this);\n    }\n};\n\n", "// MIT license (by Elan Shanker).\n(function(globals) {\n  'use strict';\n\n  var executeSync = function(){\n    var args = Array.prototype.slice.call(arguments);\n    if (typeof args[0] === 'function'){\n      args[0].apply(null, args.splice(1));\n    }\n  };\n\n  var executeAsync = function(fn){\n    if (typeof setImmediate === 'function') {\n      setImmediate(fn);\n    } else if (typeof process !== 'undefined' && process.nextTick) {\n      process.nextTick(fn);\n    } else {\n      setTimeout(fn, 0);\n    }\n  };\n\n  var makeIterator = function (tasks) {\n    var makeCallback = function (index) {\n      var fn = function () {\n        if (tasks.length) {\n          tasks[index].apply(null, arguments);\n        }\n        return fn.next();\n      };\n      fn.next = function () {\n        return (index < tasks.length - 1) ? makeCallback(index + 1): null;\n      };\n      return fn;\n    };\n    return makeCallback(0);\n  };\n  \n  var _isArray = Array.isArray || function(maybeArray){\n    return Object.prototype.toString.call(maybeArray) === '[object Array]';\n  };\n\n  var waterfall = function (tasks, callback, forceAsync) {\n    var nextTick = forceAsync ? executeAsync : executeSync;\n    callback = callback || function () {};\n    if (!_isArray(tasks)) {\n      var err = new Error('First argument to waterfall must be an array of functions');\n      return callback(err);\n    }\n    if (!tasks.length) {\n      return callback();\n    }\n    var wrapIterator = function (iterator) {\n      return function (err) {\n        if (err) {\n          callback.apply(null, arguments);\n          callback = function () {};\n        } else {\n          var args = Array.prototype.slice.call(arguments, 1);\n          var next = iterator.next();\n          if (next) {\n            args.push(wrapIterator(next));\n          } else {\n            args.push(callback);\n          }\n          nextTick(function () {\n            iterator.apply(null, args);\n          });\n        }\n      };\n    };\n    wrapIterator(makeIterator(tasks))();\n  };\n\n  if (typeof define !== 'undefined' && define.amd) {\n    define([], function () {\n      return waterfall;\n    }); // RequireJS\n  } else if (typeof module !== 'undefined' && module.exports) {\n    module.exports = waterfall; // CommonJS\n  } else {\n    globals.waterfall = waterfall; // <script>\n  }\n})(this);\n", "'use strict';\n\nvar lib = require('./lib');\nvar whitespaceChars = \" \\n\\t\\r\\xA0\";\nvar delimChars = '()[]{}%*-+~/#,:|.<>=!';\nvar intChars = '0123456789';\nvar BLOCK_START = '{%';\nvar BLOCK_END = '%}';\nvar VARIABLE_START = '{{';\nvar VARIABLE_END = '}}';\nvar COMMENT_START = '{#';\nvar COMMENT_END = '#}';\nvar TOKEN_STRING = 'string';\nvar TOKEN_WHITESPACE = 'whitespace';\nvar TOKEN_DATA = 'data';\nvar TOKEN_BLOCK_START = 'block-start';\nvar TOKEN_BLOCK_END = 'block-end';\nvar TOKEN_VARIABLE_START = 'variable-start';\nvar TOKEN_VARIABLE_END = 'variable-end';\nvar TOKEN_COMMENT = 'comment';\nvar TOKEN_LEFT_PAREN = 'left-paren';\nvar TOKEN_RIGHT_PAREN = 'right-paren';\nvar TOKEN_LEFT_BRACKET = 'left-bracket';\nvar TOKEN_RIGHT_BRACKET = 'right-bracket';\nvar TOKEN_LEFT_CURLY = 'left-curly';\nvar TOKEN_RIGHT_CURLY = 'right-curly';\nvar TOKEN_OPERATOR = 'operator';\nvar TOKEN_COMMA = 'comma';\nvar TOKEN_COLON = 'colon';\nvar TOKEN_TILDE = 'tilde';\nvar TOKEN_PIPE = 'pipe';\nvar TOKEN_INT = 'int';\nvar TOKEN_FLOAT = 'float';\nvar TOKEN_BOOLEAN = 'boolean';\nvar TOKEN_NONE = 'none';\nvar TOKEN_SYMBOL = 'symbol';\nvar TOKEN_SPECIAL = 'special';\nvar TOKEN_REGEX = 'regex';\nfunction token(type, value, lineno, colno) {\n  return {\n    type: type,\n    value: value,\n    lineno: lineno,\n    colno: colno\n  };\n}\nvar Tokenizer = /*#__PURE__*/function () {\n  function Tokenizer(str, opts) {\n    this.str = str;\n    this.index = 0;\n    this.len = str.length;\n    this.lineno = 0;\n    this.colno = 0;\n    this.in_code = false;\n    opts = opts || {};\n    var tags = opts.tags || {};\n    this.tags = {\n      BLOCK_START: tags.blockStart || BLOCK_START,\n      BLOCK_END: tags.blockEnd || BLOCK_END,\n      VARIABLE_START: tags.variableStart || VARIABLE_START,\n      VARIABLE_END: tags.variableEnd || VARIABLE_END,\n      COMMENT_START: tags.commentStart || COMMENT_START,\n      COMMENT_END: tags.commentEnd || COMMENT_END\n    };\n    this.trimBlocks = !!opts.trimBlocks;\n    this.lstripBlocks = !!opts.lstripBlocks;\n  }\n  var _proto = Tokenizer.prototype;\n  _proto.nextToken = function nextToken() {\n    var lineno = this.lineno;\n    var colno = this.colno;\n    var tok;\n    if (this.in_code) {\n      // Otherwise, if we are in a block parse it as code\n      var cur = this.current();\n      if (this.isFinished()) {\n        // We have nothing else to parse\n        return null;\n      } else if (cur === '\"' || cur === '\\'') {\n        // We've hit a string\n        return token(TOKEN_STRING, this._parseString(cur), lineno, colno);\n      } else if (tok = this._extract(whitespaceChars)) {\n        // We hit some whitespace\n        return token(TOKEN_WHITESPACE, tok, lineno, colno);\n      } else if ((tok = this._extractString(this.tags.BLOCK_END)) || (tok = this._extractString('-' + this.tags.BLOCK_END))) {\n        // Special check for the block end tag\n        //\n        // It is a requirement that start and end tags are composed of\n        // delimiter characters (%{}[] etc), and our code always\n        // breaks on delimiters so we can assume the token parsing\n        // doesn't consume these elsewhere\n        this.in_code = false;\n        if (this.trimBlocks) {\n          cur = this.current();\n          if (cur === '\\n') {\n            // Skip newline\n            this.forward();\n          } else if (cur === '\\r') {\n            // Skip CRLF newline\n            this.forward();\n            cur = this.current();\n            if (cur === '\\n') {\n              this.forward();\n            } else {\n              // Was not a CRLF, so go back\n              this.back();\n            }\n          }\n        }\n        return token(TOKEN_BLOCK_END, tok, lineno, colno);\n      } else if ((tok = this._extractString(this.tags.VARIABLE_END)) || (tok = this._extractString('-' + this.tags.VARIABLE_END))) {\n        // Special check for variable end tag (see above)\n        this.in_code = false;\n        return token(TOKEN_VARIABLE_END, tok, lineno, colno);\n      } else if (cur === 'r' && this.str.charAt(this.index + 1) === '/') {\n        // Skip past 'r/'.\n        this.forwardN(2);\n\n        // Extract until the end of the regex -- / ends it, \\/ does not.\n        var regexBody = '';\n        while (!this.isFinished()) {\n          if (this.current() === '/' && this.previous() !== '\\\\') {\n            this.forward();\n            break;\n          } else {\n            regexBody += this.current();\n            this.forward();\n          }\n        }\n\n        // Check for flags.\n        // The possible flags are according to https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp)\n        var POSSIBLE_FLAGS = ['g', 'i', 'm', 'y'];\n        var regexFlags = '';\n        while (!this.isFinished()) {\n          var isCurrentAFlag = POSSIBLE_FLAGS.indexOf(this.current()) !== -1;\n          if (isCurrentAFlag) {\n            regexFlags += this.current();\n            this.forward();\n          } else {\n            break;\n          }\n        }\n        return token(TOKEN_REGEX, {\n          body: regexBody,\n          flags: regexFlags\n        }, lineno, colno);\n      } else if (delimChars.indexOf(cur) !== -1) {\n        // We've hit a delimiter (a special char like a bracket)\n        this.forward();\n        var complexOps = ['==', '===', '!=', '!==', '<=', '>=', '//', '**'];\n        var curComplex = cur + this.current();\n        var type;\n        if (lib.indexOf(complexOps, curComplex) !== -1) {\n          this.forward();\n          cur = curComplex;\n\n          // See if this is a strict equality/inequality comparator\n          if (lib.indexOf(complexOps, curComplex + this.current()) !== -1) {\n            cur = curComplex + this.current();\n            this.forward();\n          }\n        }\n        switch (cur) {\n          case '(':\n            type = TOKEN_LEFT_PAREN;\n            break;\n          case ')':\n            type = TOKEN_RIGHT_PAREN;\n            break;\n          case '[':\n            type = TOKEN_LEFT_BRACKET;\n            break;\n          case ']':\n            type = TOKEN_RIGHT_BRACKET;\n            break;\n          case '{':\n            type = TOKEN_LEFT_CURLY;\n            break;\n          case '}':\n            type = TOKEN_RIGHT_CURLY;\n            break;\n          case ',':\n            type = TOKEN_COMMA;\n            break;\n          case ':':\n            type = TOKEN_COLON;\n            break;\n          case '~':\n            type = TOKEN_TILDE;\n            break;\n          case '|':\n            type = TOKEN_PIPE;\n            break;\n          default:\n            type = TOKEN_OPERATOR;\n        }\n        return token(type, cur, lineno, colno);\n      } else {\n        // We are not at whitespace or a delimiter, so extract the\n        // text and parse it\n        tok = this._extractUntil(whitespaceChars + delimChars);\n        if (tok.match(/^[-+]?[0-9]+$/)) {\n          if (this.current() === '.') {\n            this.forward();\n            var dec = this._extract(intChars);\n            return token(TOKEN_FLOAT, tok + '.' + dec, lineno, colno);\n          } else {\n            return token(TOKEN_INT, tok, lineno, colno);\n          }\n        } else if (tok.match(/^(true|false)$/)) {\n          return token(TOKEN_BOOLEAN, tok, lineno, colno);\n        } else if (tok === 'none') {\n          return token(TOKEN_NONE, tok, lineno, colno);\n          /*\n           * Added to make the test `null is null` evaluate truthily.\n           * Otherwise, Nunjucks will look up null in the context and\n           * return `undefined`, which is not what we want. This *may* have\n           * consequences is someone is using null in their templates as a\n           * variable.\n           */\n        } else if (tok === 'null') {\n          return token(TOKEN_NONE, tok, lineno, colno);\n        } else if (tok) {\n          return token(TOKEN_SYMBOL, tok, lineno, colno);\n        } else {\n          throw new Error('Unexpected value while parsing: ' + tok);\n        }\n      }\n    } else {\n      // Parse out the template text, breaking on tag\n      // delimiters because we need to look for block/variable start\n      // tags (don't use the full delimChars for optimization)\n      var beginChars = this.tags.BLOCK_START.charAt(0) + this.tags.VARIABLE_START.charAt(0) + this.tags.COMMENT_START.charAt(0) + this.tags.COMMENT_END.charAt(0);\n      if (this.isFinished()) {\n        return null;\n      } else if ((tok = this._extractString(this.tags.BLOCK_START + '-')) || (tok = this._extractString(this.tags.BLOCK_START))) {\n        this.in_code = true;\n        return token(TOKEN_BLOCK_START, tok, lineno, colno);\n      } else if ((tok = this._extractString(this.tags.VARIABLE_START + '-')) || (tok = this._extractString(this.tags.VARIABLE_START))) {\n        this.in_code = true;\n        return token(TOKEN_VARIABLE_START, tok, lineno, colno);\n      } else {\n        tok = '';\n        var data;\n        var inComment = false;\n        if (this._matches(this.tags.COMMENT_START)) {\n          inComment = true;\n          tok = this._extractString(this.tags.COMMENT_START);\n        }\n\n        // Continually consume text, breaking on the tag delimiter\n        // characters and checking to see if it's a start tag.\n        //\n        // We could hit the end of the template in the middle of\n        // our looping, so check for the null return value from\n        // _extractUntil\n        while ((data = this._extractUntil(beginChars)) !== null) {\n          tok += data;\n          if ((this._matches(this.tags.BLOCK_START) || this._matches(this.tags.VARIABLE_START) || this._matches(this.tags.COMMENT_START)) && !inComment) {\n            if (this.lstripBlocks && this._matches(this.tags.BLOCK_START) && this.colno > 0 && this.colno <= tok.length) {\n              var lastLine = tok.slice(-this.colno);\n              if (/^\\s+$/.test(lastLine)) {\n                // Remove block leading whitespace from beginning of the string\n                tok = tok.slice(0, -this.colno);\n                if (!tok.length) {\n                  // All data removed, collapse to avoid unnecessary nodes\n                  // by returning next token (block start)\n                  return this.nextToken();\n                }\n              }\n            }\n            // If it is a start tag, stop looping\n            break;\n          } else if (this._matches(this.tags.COMMENT_END)) {\n            if (!inComment) {\n              throw new Error('unexpected end of comment');\n            }\n            tok += this._extractString(this.tags.COMMENT_END);\n            break;\n          } else {\n            // It does not match any tag, so add the character and\n            // carry on\n            tok += this.current();\n            this.forward();\n          }\n        }\n        if (data === null && inComment) {\n          throw new Error('expected end of comment, got end of file');\n        }\n        return token(inComment ? TOKEN_COMMENT : TOKEN_DATA, tok, lineno, colno);\n      }\n    }\n  };\n  _proto._parseString = function _parseString(delimiter) {\n    this.forward();\n    var str = '';\n    while (!this.isFinished() && this.current() !== delimiter) {\n      var cur = this.current();\n      if (cur === '\\\\') {\n        this.forward();\n        switch (this.current()) {\n          case 'n':\n            str += '\\n';\n            break;\n          case 't':\n            str += '\\t';\n            break;\n          case 'r':\n            str += '\\r';\n            break;\n          default:\n            str += this.current();\n        }\n        this.forward();\n      } else {\n        str += cur;\n        this.forward();\n      }\n    }\n    this.forward();\n    return str;\n  };\n  _proto._matches = function _matches(str) {\n    if (this.index + str.length > this.len) {\n      return null;\n    }\n    var m = this.str.slice(this.index, this.index + str.length);\n    return m === str;\n  };\n  _proto._extractString = function _extractString(str) {\n    if (this._matches(str)) {\n      this.forwardN(str.length);\n      return str;\n    }\n    return null;\n  };\n  _proto._extractUntil = function _extractUntil(charString) {\n    // Extract all non-matching chars, with the default matching set\n    // to everything\n    return this._extractMatching(true, charString || '');\n  };\n  _proto._extract = function _extract(charString) {\n    // Extract all matching chars (no default, so charString must be\n    // explicit)\n    return this._extractMatching(false, charString);\n  };\n  _proto._extractMatching = function _extractMatching(breakOnMatch, charString) {\n    // Pull out characters until a breaking char is hit.\n    // If breakOnMatch is false, a non-matching char stops it.\n    // If breakOnMatch is true, a matching char stops it.\n\n    if (this.isFinished()) {\n      return null;\n    }\n    var first = charString.indexOf(this.current());\n\n    // Only proceed if the first character doesn't meet our condition\n    if (breakOnMatch && first === -1 || !breakOnMatch && first !== -1) {\n      var t = this.current();\n      this.forward();\n\n      // And pull out all the chars one at a time until we hit a\n      // breaking char\n      var idx = charString.indexOf(this.current());\n      while ((breakOnMatch && idx === -1 || !breakOnMatch && idx !== -1) && !this.isFinished()) {\n        t += this.current();\n        this.forward();\n        idx = charString.indexOf(this.current());\n      }\n      return t;\n    }\n    return '';\n  };\n  _proto._extractRegex = function _extractRegex(regex) {\n    var matches = this.currentStr().match(regex);\n    if (!matches) {\n      return null;\n    }\n\n    // Move forward whatever was matched\n    this.forwardN(matches[0].length);\n    return matches;\n  };\n  _proto.isFinished = function isFinished() {\n    return this.index >= this.len;\n  };\n  _proto.forwardN = function forwardN(n) {\n    for (var i = 0; i < n; i++) {\n      this.forward();\n    }\n  };\n  _proto.forward = function forward() {\n    this.index++;\n    if (this.previous() === '\\n') {\n      this.lineno++;\n      this.colno = 0;\n    } else {\n      this.colno++;\n    }\n  };\n  _proto.backN = function backN(n) {\n    for (var i = 0; i < n; i++) {\n      this.back();\n    }\n  };\n  _proto.back = function back() {\n    this.index--;\n    if (this.current() === '\\n') {\n      this.lineno--;\n      var idx = this.src.lastIndexOf('\\n', this.index - 1);\n      if (idx === -1) {\n        this.colno = this.index;\n      } else {\n        this.colno = this.index - idx;\n      }\n    } else {\n      this.colno--;\n    }\n  }\n\n  // current returns current character\n  ;\n  _proto.current = function current() {\n    if (!this.isFinished()) {\n      return this.str.charAt(this.index);\n    }\n    return '';\n  }\n\n  // currentStr returns what's left of the unparsed string\n  ;\n  _proto.currentStr = function currentStr() {\n    if (!this.isFinished()) {\n      return this.str.substr(this.index);\n    }\n    return '';\n  };\n  _proto.previous = function previous() {\n    return this.str.charAt(this.index - 1);\n  };\n  return Tokenizer;\n}();\nmodule.exports = {\n  lex: function lex(src, opts) {\n    return new Tokenizer(src, opts);\n  },\n  TOKEN_STRING: TOKEN_STRING,\n  TOKEN_WHITESPACE: TOKEN_WHITESPACE,\n  TOKEN_DATA: TOKEN_DATA,\n  TOKEN_BLOCK_START: TOKEN_BLOCK_START,\n  TOKEN_BLOCK_END: TOKEN_BLOCK_END,\n  TOKEN_VARIABLE_START: TOKEN_VARIABLE_START,\n  TOKEN_VARIABLE_END: TOKEN_VARIABLE_END,\n  TOKEN_COMMENT: TOKEN_COMMENT,\n  TOKEN_LEFT_PAREN: TOKEN_LEFT_PAREN,\n  TOKEN_RIGHT_PAREN: TOKEN_RIGHT_PAREN,\n  TOKEN_LEFT_BRACKET: TOKEN_LEFT_BRACKET,\n  TOKEN_RIGHT_BRACKET: TOKEN_RIGHT_BRACKET,\n  TOKEN_LEFT_CURLY: TOKEN_LEFT_CURLY,\n  TOKEN_RIGHT_CURLY: TOKEN_RIGHT_CURLY,\n  TOKEN_OPERATOR: TOKEN_OPERATOR,\n  TOKEN_COMMA: TOKEN_COMMA,\n  TOKEN_COLON: TOKEN_COLON,\n  TOKEN_TILDE: TOKEN_TILDE,\n  TOKEN_PIPE: TOKEN_PIPE,\n  TOKEN_INT: TOKEN_INT,\n  TOKEN_FLOAT: TOKEN_FLOAT,\n  TOKEN_BOOLEAN: TOKEN_BOOLEAN,\n  TOKEN_NONE: TOKEN_NONE,\n  TOKEN_SYMBOL: TOKEN_SYMBOL,\n  TOKEN_SPECIAL: TOKEN_SPECIAL,\n  TOKEN_REGEX: TOKEN_REGEX\n};", "'use strict';\n\n// A simple class system, more documentation to come\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar EventEmitter = require('events');\nvar lib = require('./lib');\nfunction parentWrap(parent, prop) {\n  if (typeof parent !== 'function' || typeof prop !== 'function') {\n    return prop;\n  }\n  return function wrap() {\n    // Save the current parent method\n    var tmp = this.parent;\n\n    // Set parent to the previous method, call, and restore\n    this.parent = parent;\n    var res = prop.apply(this, arguments);\n    this.parent = tmp;\n    return res;\n  };\n}\nfunction extendClass(cls, name, props) {\n  props = props || {};\n  lib.keys(props).forEach(function (k) {\n    props[k] = parentWrap(cls.prototype[k], props[k]);\n  });\n  var subclass = /*#__PURE__*/function (_cls) {\n    _inheritsLoose(subclass, _cls);\n    function subclass() {\n      return _cls.apply(this, arguments) || this;\n    }\n    _createClass(subclass, [{\n      key: \"typename\",\n      get: function get() {\n        return name;\n      }\n    }]);\n    return subclass;\n  }(cls);\n  lib._assign(subclass.prototype, props);\n  return subclass;\n}\nvar Obj = /*#__PURE__*/function () {\n  function Obj() {\n    // Unfortunately necessary for backwards compatibility\n    this.init.apply(this, arguments);\n  }\n  var _proto = Obj.prototype;\n  _proto.init = function init() {};\n  Obj.extend = function extend(name, props) {\n    if (typeof name === 'object') {\n      props = name;\n      name = 'anonymous';\n    }\n    return extendClass(this, name, props);\n  };\n  _createClass(Obj, [{\n    key: \"typename\",\n    get: function get() {\n      return this.constructor.name;\n    }\n  }]);\n  return Obj;\n}();\nvar EmitterObj = /*#__PURE__*/function (_EventEmitter) {\n  _inheritsLoose(EmitterObj, _EventEmitter);\n  function EmitterObj() {\n    var _this2;\n    var _this;\n    _this = _EventEmitter.call(this) || this;\n    // Unfortunately necessary for backwards compatibility\n    (_this2 = _this).init.apply(_this2, arguments);\n    return _this;\n  }\n  var _proto2 = EmitterObj.prototype;\n  _proto2.init = function init() {};\n  EmitterObj.extend = function extend(name, props) {\n    if (typeof name === 'object') {\n      props = name;\n      name = 'anonymous';\n    }\n    return extendClass(this, name, props);\n  };\n  _createClass(EmitterObj, [{\n    key: \"typename\",\n    get: function get() {\n      return this.constructor.name;\n    }\n  }]);\n  return EmitterObj;\n}(EventEmitter);\nmodule.exports = {\n  Obj: Obj,\n  EmitterObj: EmitterObj\n};", "'use strict';\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar _require = require('./object'),\n  Obj = _require.Obj;\nfunction traverseAndCheck(obj, type, results) {\n  if (obj instanceof type) {\n    results.push(obj);\n  }\n  if (obj instanceof Node) {\n    obj.findAll(type, results);\n  }\n}\nvar Node = /*#__PURE__*/function (_Obj) {\n  _inheritsLoose(Node, _Obj);\n  function Node() {\n    return _Obj.apply(this, arguments) || this;\n  }\n  var _proto = Node.prototype;\n  _proto.init = function init(lineno, colno) {\n    var _arguments = arguments,\n      _this = this;\n    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n    this.lineno = lineno;\n    this.colno = colno;\n    this.fields.forEach(function (field, i) {\n      // The first two args are line/col numbers, so offset by 2\n      var val = _arguments[i + 2];\n\n      // Fields should never be undefined, but null. It makes\n      // testing easier to normalize values.\n      if (val === undefined) {\n        val = null;\n      }\n      _this[field] = val;\n    });\n  };\n  _proto.findAll = function findAll(type, results) {\n    var _this2 = this;\n    results = results || [];\n    if (this instanceof NodeList) {\n      this.children.forEach(function (child) {\n        return traverseAndCheck(child, type, results);\n      });\n    } else {\n      this.fields.forEach(function (field) {\n        return traverseAndCheck(_this2[field], type, results);\n      });\n    }\n    return results;\n  };\n  _proto.iterFields = function iterFields(func) {\n    var _this3 = this;\n    this.fields.forEach(function (field) {\n      func(_this3[field], field);\n    });\n  };\n  return Node;\n}(Obj); // Abstract nodes\nvar Value = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Value, _Node);\n  function Value() {\n    return _Node.apply(this, arguments) || this;\n  }\n  _createClass(Value, [{\n    key: \"typename\",\n    get: function get() {\n      return 'Value';\n    }\n  }, {\n    key: \"fields\",\n    get: function get() {\n      return ['value'];\n    }\n  }]);\n  return Value;\n}(Node); // Concrete nodes\nvar NodeList = /*#__PURE__*/function (_Node2) {\n  _inheritsLoose(NodeList, _Node2);\n  function NodeList() {\n    return _Node2.apply(this, arguments) || this;\n  }\n  var _proto2 = NodeList.prototype;\n  _proto2.init = function init(lineno, colno, nodes) {\n    _Node2.prototype.init.call(this, lineno, colno, nodes || []);\n  };\n  _proto2.addChild = function addChild(node) {\n    this.children.push(node);\n  };\n  _createClass(NodeList, [{\n    key: \"typename\",\n    get: function get() {\n      return 'NodeList';\n    }\n  }, {\n    key: \"fields\",\n    get: function get() {\n      return ['children'];\n    }\n  }]);\n  return NodeList;\n}(Node);\nvar Root = NodeList.extend('Root');\nvar Literal = Value.extend('Literal');\nvar _Symbol = Value.extend('Symbol');\nvar Group = NodeList.extend('Group');\nvar ArrayNode = NodeList.extend('Array');\nvar Pair = Node.extend('Pair', {\n  fields: ['key', 'value']\n});\nvar Dict = NodeList.extend('Dict');\nvar LookupVal = Node.extend('LookupVal', {\n  fields: ['target', 'val']\n});\nvar If = Node.extend('If', {\n  fields: ['cond', 'body', 'else_']\n});\nvar IfAsync = If.extend('IfAsync');\nvar InlineIf = Node.extend('InlineIf', {\n  fields: ['cond', 'body', 'else_']\n});\nvar For = Node.extend('For', {\n  fields: ['arr', 'name', 'body', 'else_']\n});\nvar AsyncEach = For.extend('AsyncEach');\nvar AsyncAll = For.extend('AsyncAll');\nvar Macro = Node.extend('Macro', {\n  fields: ['name', 'args', 'body']\n});\nvar Caller = Macro.extend('Caller');\nvar Import = Node.extend('Import', {\n  fields: ['template', 'target', 'withContext']\n});\nvar FromImport = /*#__PURE__*/function (_Node3) {\n  _inheritsLoose(FromImport, _Node3);\n  function FromImport() {\n    return _Node3.apply(this, arguments) || this;\n  }\n  var _proto3 = FromImport.prototype;\n  _proto3.init = function init(lineno, colno, template, names, withContext) {\n    _Node3.prototype.init.call(this, lineno, colno, template, names || new NodeList(), withContext);\n  };\n  _createClass(FromImport, [{\n    key: \"typename\",\n    get: function get() {\n      return 'FromImport';\n    }\n  }, {\n    key: \"fields\",\n    get: function get() {\n      return ['template', 'names', 'withContext'];\n    }\n  }]);\n  return FromImport;\n}(Node);\nvar FunCall = Node.extend('FunCall', {\n  fields: ['name', 'args']\n});\nvar Filter = FunCall.extend('Filter');\nvar FilterAsync = Filter.extend('FilterAsync', {\n  fields: ['name', 'args', 'symbol']\n});\nvar KeywordArgs = Dict.extend('KeywordArgs');\nvar Block = Node.extend('Block', {\n  fields: ['name', 'body']\n});\nvar Super = Node.extend('Super', {\n  fields: ['blockName', 'symbol']\n});\nvar TemplateRef = Node.extend('TemplateRef', {\n  fields: ['template']\n});\nvar Extends = TemplateRef.extend('Extends');\nvar Include = Node.extend('Include', {\n  fields: ['template', 'ignoreMissing']\n});\nvar Set = Node.extend('Set', {\n  fields: ['targets', 'value']\n});\nvar Switch = Node.extend('Switch', {\n  fields: ['expr', 'cases', 'default']\n});\nvar Case = Node.extend('Case', {\n  fields: ['cond', 'body']\n});\nvar Output = NodeList.extend('Output');\nvar Capture = Node.extend('Capture', {\n  fields: ['body']\n});\nvar TemplateData = Literal.extend('TemplateData');\nvar UnaryOp = Node.extend('UnaryOp', {\n  fields: ['target']\n});\nvar BinOp = Node.extend('BinOp', {\n  fields: ['left', 'right']\n});\nvar In = BinOp.extend('In');\nvar Is = BinOp.extend('Is');\nvar Or = BinOp.extend('Or');\nvar And = BinOp.extend('And');\nvar Not = UnaryOp.extend('Not');\nvar Add = BinOp.extend('Add');\nvar Concat = BinOp.extend('Concat');\nvar Sub = BinOp.extend('Sub');\nvar Mul = BinOp.extend('Mul');\nvar Div = BinOp.extend('Div');\nvar FloorDiv = BinOp.extend('FloorDiv');\nvar Mod = BinOp.extend('Mod');\nvar Pow = BinOp.extend('Pow');\nvar Neg = UnaryOp.extend('Neg');\nvar Pos = UnaryOp.extend('Pos');\nvar Compare = Node.extend('Compare', {\n  fields: ['expr', 'ops']\n});\nvar CompareOperand = Node.extend('CompareOperand', {\n  fields: ['expr', 'type']\n});\nvar CallExtension = Node.extend('CallExtension', {\n  init: function init(ext, prop, args, contentArgs) {\n    this.parent();\n    this.extName = ext.__name || ext;\n    this.prop = prop;\n    this.args = args || new NodeList();\n    this.contentArgs = contentArgs || [];\n    this.autoescape = ext.autoescape;\n  },\n  fields: ['extName', 'prop', 'args', 'contentArgs']\n});\nvar CallExtensionAsync = CallExtension.extend('CallExtensionAsync');\n\n// This is hacky, but this is just a debugging function anyway\nfunction print(str, indent, inline) {\n  var lines = str.split('\\n');\n  lines.forEach(function (line, i) {\n    if (line && (inline && i > 0 || !inline)) {\n      process.stdout.write(' '.repeat(indent));\n    }\n    var nl = i === lines.length - 1 ? '' : '\\n';\n    process.stdout.write(\"\" + line + nl);\n  });\n}\n\n// Print the AST in a nicely formatted tree format for debuggin\nfunction printNodes(node, indent) {\n  indent = indent || 0;\n  print(node.typename + ': ', indent);\n  if (node instanceof NodeList) {\n    print('\\n');\n    node.children.forEach(function (n) {\n      printNodes(n, indent + 2);\n    });\n  } else if (node instanceof CallExtension) {\n    print(node.extName + \".\" + node.prop + \"\\n\");\n    if (node.args) {\n      printNodes(node.args, indent + 2);\n    }\n    if (node.contentArgs) {\n      node.contentArgs.forEach(function (n) {\n        printNodes(n, indent + 2);\n      });\n    }\n  } else {\n    var nodes = [];\n    var props = null;\n    node.iterFields(function (val, fieldName) {\n      if (val instanceof Node) {\n        nodes.push([fieldName, val]);\n      } else {\n        props = props || {};\n        props[fieldName] = val;\n      }\n    });\n    if (props) {\n      print(JSON.stringify(props, null, 2) + '\\n', null, true);\n    } else {\n      print('\\n');\n    }\n    nodes.forEach(function (_ref) {\n      var fieldName = _ref[0],\n        n = _ref[1];\n      print(\"[\" + fieldName + \"] =>\", indent + 2);\n      printNodes(n, indent + 4);\n    });\n  }\n}\nmodule.exports = {\n  Node: Node,\n  Root: Root,\n  NodeList: NodeList,\n  Value: Value,\n  Literal: Literal,\n  Symbol: _Symbol,\n  Group: Group,\n  Array: ArrayNode,\n  Pair: Pair,\n  Dict: Dict,\n  Output: Output,\n  Capture: Capture,\n  TemplateData: TemplateData,\n  If: If,\n  IfAsync: IfAsync,\n  InlineIf: InlineIf,\n  For: For,\n  AsyncEach: AsyncEach,\n  AsyncAll: AsyncAll,\n  Macro: Macro,\n  Caller: Caller,\n  Import: Import,\n  FromImport: FromImport,\n  FunCall: FunCall,\n  Filter: Filter,\n  FilterAsync: FilterAsync,\n  KeywordArgs: KeywordArgs,\n  Block: Block,\n  Super: Super,\n  Extends: Extends,\n  Include: Include,\n  Set: Set,\n  Switch: Switch,\n  Case: Case,\n  LookupVal: LookupVal,\n  BinOp: BinOp,\n  In: In,\n  Is: Is,\n  Or: Or,\n  And: And,\n  Not: Not,\n  Add: Add,\n  Concat: Concat,\n  Sub: Sub,\n  Mul: Mul,\n  Div: Div,\n  FloorDiv: FloorDiv,\n  Mod: Mod,\n  Pow: Pow,\n  Neg: Neg,\n  Pos: Pos,\n  Compare: Compare,\n  CompareOperand: CompareOperand,\n  CallExtension: CallExtension,\n  CallExtensionAsync: CallExtensionAsync,\n  printNodes: printNodes\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar lexer = require('./lexer');\nvar nodes = require('./nodes');\nvar Obj = require('./object').Obj;\nvar lib = require('./lib');\nvar Parser = /*#__PURE__*/function (_Obj) {\n  _inheritsLoose(Parser, _Obj);\n  function Parser() {\n    return _Obj.apply(this, arguments) || this;\n  }\n  var _proto = Parser.prototype;\n  _proto.init = function init(tokens) {\n    this.tokens = tokens;\n    this.peeked = null;\n    this.breakOnBlocks = null;\n    this.dropLeadingWhitespace = false;\n    this.extensions = [];\n  };\n  _proto.nextToken = function nextToken(withWhitespace) {\n    var tok;\n    if (this.peeked) {\n      if (!withWhitespace && this.peeked.type === lexer.TOKEN_WHITESPACE) {\n        this.peeked = null;\n      } else {\n        tok = this.peeked;\n        this.peeked = null;\n        return tok;\n      }\n    }\n    tok = this.tokens.nextToken();\n    if (!withWhitespace) {\n      while (tok && tok.type === lexer.TOKEN_WHITESPACE) {\n        tok = this.tokens.nextToken();\n      }\n    }\n    return tok;\n  };\n  _proto.peekToken = function peekToken() {\n    this.peeked = this.peeked || this.nextToken();\n    return this.peeked;\n  };\n  _proto.pushToken = function pushToken(tok) {\n    if (this.peeked) {\n      throw new Error('pushToken: can only push one token on between reads');\n    }\n    this.peeked = tok;\n  };\n  _proto.error = function error(msg, lineno, colno) {\n    if (lineno === undefined || colno === undefined) {\n      var tok = this.peekToken() || {};\n      lineno = tok.lineno;\n      colno = tok.colno;\n    }\n    if (lineno !== undefined) {\n      lineno += 1;\n    }\n    if (colno !== undefined) {\n      colno += 1;\n    }\n    return new lib.TemplateError(msg, lineno, colno);\n  };\n  _proto.fail = function fail(msg, lineno, colno) {\n    throw this.error(msg, lineno, colno);\n  };\n  _proto.skip = function skip(type) {\n    var tok = this.nextToken();\n    if (!tok || tok.type !== type) {\n      this.pushToken(tok);\n      return false;\n    }\n    return true;\n  };\n  _proto.expect = function expect(type) {\n    var tok = this.nextToken();\n    if (tok.type !== type) {\n      this.fail('expected ' + type + ', got ' + tok.type, tok.lineno, tok.colno);\n    }\n    return tok;\n  };\n  _proto.skipValue = function skipValue(type, val) {\n    var tok = this.nextToken();\n    if (!tok || tok.type !== type || tok.value !== val) {\n      this.pushToken(tok);\n      return false;\n    }\n    return true;\n  };\n  _proto.skipSymbol = function skipSymbol(val) {\n    return this.skipValue(lexer.TOKEN_SYMBOL, val);\n  };\n  _proto.advanceAfterBlockEnd = function advanceAfterBlockEnd(name) {\n    var tok;\n    if (!name) {\n      tok = this.peekToken();\n      if (!tok) {\n        this.fail('unexpected end of file');\n      }\n      if (tok.type !== lexer.TOKEN_SYMBOL) {\n        this.fail('advanceAfterBlockEnd: expected symbol token or ' + 'explicit name to be passed');\n      }\n      name = this.nextToken().value;\n    }\n    tok = this.nextToken();\n    if (tok && tok.type === lexer.TOKEN_BLOCK_END) {\n      if (tok.value.charAt(0) === '-') {\n        this.dropLeadingWhitespace = true;\n      }\n    } else {\n      this.fail('expected block end in ' + name + ' statement');\n    }\n    return tok;\n  };\n  _proto.advanceAfterVariableEnd = function advanceAfterVariableEnd() {\n    var tok = this.nextToken();\n    if (tok && tok.type === lexer.TOKEN_VARIABLE_END) {\n      this.dropLeadingWhitespace = tok.value.charAt(tok.value.length - this.tokens.tags.VARIABLE_END.length - 1) === '-';\n    } else {\n      this.pushToken(tok);\n      this.fail('expected variable end');\n    }\n  };\n  _proto.parseFor = function parseFor() {\n    var forTok = this.peekToken();\n    var node;\n    var endBlock;\n    if (this.skipSymbol('for')) {\n      node = new nodes.For(forTok.lineno, forTok.colno);\n      endBlock = 'endfor';\n    } else if (this.skipSymbol('asyncEach')) {\n      node = new nodes.AsyncEach(forTok.lineno, forTok.colno);\n      endBlock = 'endeach';\n    } else if (this.skipSymbol('asyncAll')) {\n      node = new nodes.AsyncAll(forTok.lineno, forTok.colno);\n      endBlock = 'endall';\n    } else {\n      this.fail('parseFor: expected for{Async}', forTok.lineno, forTok.colno);\n    }\n    node.name = this.parsePrimary();\n    if (!(node.name instanceof nodes.Symbol)) {\n      this.fail('parseFor: variable name expected for loop');\n    }\n    var type = this.peekToken().type;\n    if (type === lexer.TOKEN_COMMA) {\n      // key/value iteration\n      var key = node.name;\n      node.name = new nodes.Array(key.lineno, key.colno);\n      node.name.addChild(key);\n      while (this.skip(lexer.TOKEN_COMMA)) {\n        var prim = this.parsePrimary();\n        node.name.addChild(prim);\n      }\n    }\n    if (!this.skipSymbol('in')) {\n      this.fail('parseFor: expected \"in\" keyword for loop', forTok.lineno, forTok.colno);\n    }\n    node.arr = this.parseExpression();\n    this.advanceAfterBlockEnd(forTok.value);\n    node.body = this.parseUntilBlocks(endBlock, 'else');\n    if (this.skipSymbol('else')) {\n      this.advanceAfterBlockEnd('else');\n      node.else_ = this.parseUntilBlocks(endBlock);\n    }\n    this.advanceAfterBlockEnd();\n    return node;\n  };\n  _proto.parseMacro = function parseMacro() {\n    var macroTok = this.peekToken();\n    if (!this.skipSymbol('macro')) {\n      this.fail('expected macro');\n    }\n    var name = this.parsePrimary(true);\n    var args = this.parseSignature();\n    var node = new nodes.Macro(macroTok.lineno, macroTok.colno, name, args);\n    this.advanceAfterBlockEnd(macroTok.value);\n    node.body = this.parseUntilBlocks('endmacro');\n    this.advanceAfterBlockEnd();\n    return node;\n  };\n  _proto.parseCall = function parseCall() {\n    // a call block is parsed as a normal FunCall, but with an added\n    // 'caller' kwarg which is a Caller node.\n    var callTok = this.peekToken();\n    if (!this.skipSymbol('call')) {\n      this.fail('expected call');\n    }\n    var callerArgs = this.parseSignature(true) || new nodes.NodeList();\n    var macroCall = this.parsePrimary();\n    this.advanceAfterBlockEnd(callTok.value);\n    var body = this.parseUntilBlocks('endcall');\n    this.advanceAfterBlockEnd();\n    var callerName = new nodes.Symbol(callTok.lineno, callTok.colno, 'caller');\n    var callerNode = new nodes.Caller(callTok.lineno, callTok.colno, callerName, callerArgs, body);\n\n    // add the additional caller kwarg, adding kwargs if necessary\n    var args = macroCall.args.children;\n    if (!(args[args.length - 1] instanceof nodes.KeywordArgs)) {\n      args.push(new nodes.KeywordArgs());\n    }\n    var kwargs = args[args.length - 1];\n    kwargs.addChild(new nodes.Pair(callTok.lineno, callTok.colno, callerName, callerNode));\n    return new nodes.Output(callTok.lineno, callTok.colno, [macroCall]);\n  };\n  _proto.parseWithContext = function parseWithContext() {\n    var tok = this.peekToken();\n    var withContext = null;\n    if (this.skipSymbol('with')) {\n      withContext = true;\n    } else if (this.skipSymbol('without')) {\n      withContext = false;\n    }\n    if (withContext !== null) {\n      if (!this.skipSymbol('context')) {\n        this.fail('parseFrom: expected context after with/without', tok.lineno, tok.colno);\n      }\n    }\n    return withContext;\n  };\n  _proto.parseImport = function parseImport() {\n    var importTok = this.peekToken();\n    if (!this.skipSymbol('import')) {\n      this.fail('parseImport: expected import', importTok.lineno, importTok.colno);\n    }\n    var template = this.parseExpression();\n    if (!this.skipSymbol('as')) {\n      this.fail('parseImport: expected \"as\" keyword', importTok.lineno, importTok.colno);\n    }\n    var target = this.parseExpression();\n    var withContext = this.parseWithContext();\n    var node = new nodes.Import(importTok.lineno, importTok.colno, template, target, withContext);\n    this.advanceAfterBlockEnd(importTok.value);\n    return node;\n  };\n  _proto.parseFrom = function parseFrom() {\n    var fromTok = this.peekToken();\n    if (!this.skipSymbol('from')) {\n      this.fail('parseFrom: expected from');\n    }\n    var template = this.parseExpression();\n    if (!this.skipSymbol('import')) {\n      this.fail('parseFrom: expected import', fromTok.lineno, fromTok.colno);\n    }\n    var names = new nodes.NodeList();\n    var withContext;\n    while (1) {\n      // eslint-disable-line no-constant-condition\n      var nextTok = this.peekToken();\n      if (nextTok.type === lexer.TOKEN_BLOCK_END) {\n        if (!names.children.length) {\n          this.fail('parseFrom: Expected at least one import name', fromTok.lineno, fromTok.colno);\n        }\n\n        // Since we are manually advancing past the block end,\n        // need to keep track of whitespace control (normally\n        // this is done in `advanceAfterBlockEnd`\n        if (nextTok.value.charAt(0) === '-') {\n          this.dropLeadingWhitespace = true;\n        }\n        this.nextToken();\n        break;\n      }\n      if (names.children.length > 0 && !this.skip(lexer.TOKEN_COMMA)) {\n        this.fail('parseFrom: expected comma', fromTok.lineno, fromTok.colno);\n      }\n      var name = this.parsePrimary();\n      if (name.value.charAt(0) === '_') {\n        this.fail('parseFrom: names starting with an underscore cannot be imported', name.lineno, name.colno);\n      }\n      if (this.skipSymbol('as')) {\n        var alias = this.parsePrimary();\n        names.addChild(new nodes.Pair(name.lineno, name.colno, name, alias));\n      } else {\n        names.addChild(name);\n      }\n      withContext = this.parseWithContext();\n    }\n    return new nodes.FromImport(fromTok.lineno, fromTok.colno, template, names, withContext);\n  };\n  _proto.parseBlock = function parseBlock() {\n    var tag = this.peekToken();\n    if (!this.skipSymbol('block')) {\n      this.fail('parseBlock: expected block', tag.lineno, tag.colno);\n    }\n    var node = new nodes.Block(tag.lineno, tag.colno);\n    node.name = this.parsePrimary();\n    if (!(node.name instanceof nodes.Symbol)) {\n      this.fail('parseBlock: variable name expected', tag.lineno, tag.colno);\n    }\n    this.advanceAfterBlockEnd(tag.value);\n    node.body = this.parseUntilBlocks('endblock');\n    this.skipSymbol('endblock');\n    this.skipSymbol(node.name.value);\n    var tok = this.peekToken();\n    if (!tok) {\n      this.fail('parseBlock: expected endblock, got end of file');\n    }\n    this.advanceAfterBlockEnd(tok.value);\n    return node;\n  };\n  _proto.parseExtends = function parseExtends() {\n    var tagName = 'extends';\n    var tag = this.peekToken();\n    if (!this.skipSymbol(tagName)) {\n      this.fail('parseTemplateRef: expected ' + tagName);\n    }\n    var node = new nodes.Extends(tag.lineno, tag.colno);\n    node.template = this.parseExpression();\n    this.advanceAfterBlockEnd(tag.value);\n    return node;\n  };\n  _proto.parseInclude = function parseInclude() {\n    var tagName = 'include';\n    var tag = this.peekToken();\n    if (!this.skipSymbol(tagName)) {\n      this.fail('parseInclude: expected ' + tagName);\n    }\n    var node = new nodes.Include(tag.lineno, tag.colno);\n    node.template = this.parseExpression();\n    if (this.skipSymbol('ignore') && this.skipSymbol('missing')) {\n      node.ignoreMissing = true;\n    }\n    this.advanceAfterBlockEnd(tag.value);\n    return node;\n  };\n  _proto.parseIf = function parseIf() {\n    var tag = this.peekToken();\n    var node;\n    if (this.skipSymbol('if') || this.skipSymbol('elif') || this.skipSymbol('elseif')) {\n      node = new nodes.If(tag.lineno, tag.colno);\n    } else if (this.skipSymbol('ifAsync')) {\n      node = new nodes.IfAsync(tag.lineno, tag.colno);\n    } else {\n      this.fail('parseIf: expected if, elif, or elseif', tag.lineno, tag.colno);\n    }\n    node.cond = this.parseExpression();\n    this.advanceAfterBlockEnd(tag.value);\n    node.body = this.parseUntilBlocks('elif', 'elseif', 'else', 'endif');\n    var tok = this.peekToken();\n    switch (tok && tok.value) {\n      case 'elseif':\n      case 'elif':\n        node.else_ = this.parseIf();\n        break;\n      case 'else':\n        this.advanceAfterBlockEnd();\n        node.else_ = this.parseUntilBlocks('endif');\n        this.advanceAfterBlockEnd();\n        break;\n      case 'endif':\n        node.else_ = null;\n        this.advanceAfterBlockEnd();\n        break;\n      default:\n        this.fail('parseIf: expected elif, else, or endif, got end of file');\n    }\n    return node;\n  };\n  _proto.parseSet = function parseSet() {\n    var tag = this.peekToken();\n    if (!this.skipSymbol('set')) {\n      this.fail('parseSet: expected set', tag.lineno, tag.colno);\n    }\n    var node = new nodes.Set(tag.lineno, tag.colno, []);\n    var target;\n    while (target = this.parsePrimary()) {\n      node.targets.push(target);\n      if (!this.skip(lexer.TOKEN_COMMA)) {\n        break;\n      }\n    }\n    if (!this.skipValue(lexer.TOKEN_OPERATOR, '=')) {\n      if (!this.skip(lexer.TOKEN_BLOCK_END)) {\n        this.fail('parseSet: expected = or block end in set tag', tag.lineno, tag.colno);\n      } else {\n        node.body = new nodes.Capture(tag.lineno, tag.colno, this.parseUntilBlocks('endset'));\n        node.value = null;\n        this.advanceAfterBlockEnd();\n      }\n    } else {\n      node.value = this.parseExpression();\n      this.advanceAfterBlockEnd(tag.value);\n    }\n    return node;\n  };\n  _proto.parseSwitch = function parseSwitch() {\n    /*\n     * Store the tag names in variables in case someone ever wants to\n     * customize this.\n     */\n    var switchStart = 'switch';\n    var switchEnd = 'endswitch';\n    var caseStart = 'case';\n    var caseDefault = 'default';\n\n    // Get the switch tag.\n    var tag = this.peekToken();\n\n    // fail early if we get some unexpected tag.\n    if (!this.skipSymbol(switchStart) && !this.skipSymbol(caseStart) && !this.skipSymbol(caseDefault)) {\n      this.fail('parseSwitch: expected \"switch,\" \"case\" or \"default\"', tag.lineno, tag.colno);\n    }\n\n    // parse the switch expression\n    var expr = this.parseExpression();\n\n    // advance until a start of a case, a default case or an endswitch.\n    this.advanceAfterBlockEnd(switchStart);\n    this.parseUntilBlocks(caseStart, caseDefault, switchEnd);\n\n    // this is the first case. it could also be an endswitch, we'll check.\n    var tok = this.peekToken();\n\n    // create new variables for our cases and default case.\n    var cases = [];\n    var defaultCase;\n\n    // while we're dealing with new cases nodes...\n    do {\n      // skip the start symbol and get the case expression\n      this.skipSymbol(caseStart);\n      var cond = this.parseExpression();\n      this.advanceAfterBlockEnd(switchStart);\n      // get the body of the case node and add it to the array of cases.\n      var body = this.parseUntilBlocks(caseStart, caseDefault, switchEnd);\n      cases.push(new nodes.Case(tok.line, tok.col, cond, body));\n      // get our next case\n      tok = this.peekToken();\n    } while (tok && tok.value === caseStart);\n\n    // we either have a default case or a switch end.\n    switch (tok.value) {\n      case caseDefault:\n        this.advanceAfterBlockEnd();\n        defaultCase = this.parseUntilBlocks(switchEnd);\n        this.advanceAfterBlockEnd();\n        break;\n      case switchEnd:\n        this.advanceAfterBlockEnd();\n        break;\n      default:\n        // otherwise bail because EOF\n        this.fail('parseSwitch: expected \"case,\" \"default\" or \"endswitch,\" got EOF.');\n    }\n\n    // and return the switch node.\n    return new nodes.Switch(tag.lineno, tag.colno, expr, cases, defaultCase);\n  };\n  _proto.parseStatement = function parseStatement() {\n    var tok = this.peekToken();\n    var node;\n    if (tok.type !== lexer.TOKEN_SYMBOL) {\n      this.fail('tag name expected', tok.lineno, tok.colno);\n    }\n    if (this.breakOnBlocks && lib.indexOf(this.breakOnBlocks, tok.value) !== -1) {\n      return null;\n    }\n    switch (tok.value) {\n      case 'raw':\n        return this.parseRaw();\n      case 'verbatim':\n        return this.parseRaw('verbatim');\n      case 'if':\n      case 'ifAsync':\n        return this.parseIf();\n      case 'for':\n      case 'asyncEach':\n      case 'asyncAll':\n        return this.parseFor();\n      case 'block':\n        return this.parseBlock();\n      case 'extends':\n        return this.parseExtends();\n      case 'include':\n        return this.parseInclude();\n      case 'set':\n        return this.parseSet();\n      case 'macro':\n        return this.parseMacro();\n      case 'call':\n        return this.parseCall();\n      case 'import':\n        return this.parseImport();\n      case 'from':\n        return this.parseFrom();\n      case 'filter':\n        return this.parseFilterStatement();\n      case 'switch':\n        return this.parseSwitch();\n      default:\n        if (this.extensions.length) {\n          for (var i = 0; i < this.extensions.length; i++) {\n            var ext = this.extensions[i];\n            if (lib.indexOf(ext.tags || [], tok.value) !== -1) {\n              return ext.parse(this, nodes, lexer);\n            }\n          }\n        }\n        this.fail('unknown block tag: ' + tok.value, tok.lineno, tok.colno);\n    }\n    return node;\n  };\n  _proto.parseRaw = function parseRaw(tagName) {\n    tagName = tagName || 'raw';\n    var endTagName = 'end' + tagName;\n    // Look for upcoming raw blocks (ignore all other kinds of blocks)\n    var rawBlockRegex = new RegExp('([\\\\s\\\\S]*?){%\\\\s*(' + tagName + '|' + endTagName + ')\\\\s*(?=%})%}');\n    var rawLevel = 1;\n    var str = '';\n    var matches = null;\n\n    // Skip opening raw token\n    // Keep this token to track line and column numbers\n    var begun = this.advanceAfterBlockEnd();\n\n    // Exit when there's nothing to match\n    // or when we've found the matching \"endraw\" block\n    while ((matches = this.tokens._extractRegex(rawBlockRegex)) && rawLevel > 0) {\n      var all = matches[0];\n      var pre = matches[1];\n      var blockName = matches[2];\n\n      // Adjust rawlevel\n      if (blockName === tagName) {\n        rawLevel += 1;\n      } else if (blockName === endTagName) {\n        rawLevel -= 1;\n      }\n\n      // Add to str\n      if (rawLevel === 0) {\n        // We want to exclude the last \"endraw\"\n        str += pre;\n        // Move tokenizer to beginning of endraw block\n        this.tokens.backN(all.length - pre.length);\n      } else {\n        str += all;\n      }\n    }\n    return new nodes.Output(begun.lineno, begun.colno, [new nodes.TemplateData(begun.lineno, begun.colno, str)]);\n  };\n  _proto.parsePostfix = function parsePostfix(node) {\n    var lookup;\n    var tok = this.peekToken();\n    while (tok) {\n      if (tok.type === lexer.TOKEN_LEFT_PAREN) {\n        // Function call\n        node = new nodes.FunCall(tok.lineno, tok.colno, node, this.parseSignature());\n      } else if (tok.type === lexer.TOKEN_LEFT_BRACKET) {\n        // Reference\n        lookup = this.parseAggregate();\n        if (lookup.children.length > 1) {\n          this.fail('invalid index');\n        }\n        node = new nodes.LookupVal(tok.lineno, tok.colno, node, lookup.children[0]);\n      } else if (tok.type === lexer.TOKEN_OPERATOR && tok.value === '.') {\n        // Reference\n        this.nextToken();\n        var val = this.nextToken();\n        if (val.type !== lexer.TOKEN_SYMBOL) {\n          this.fail('expected name as lookup value, got ' + val.value, val.lineno, val.colno);\n        }\n\n        // Make a literal string because it's not a variable\n        // reference\n        lookup = new nodes.Literal(val.lineno, val.colno, val.value);\n        node = new nodes.LookupVal(tok.lineno, tok.colno, node, lookup);\n      } else {\n        break;\n      }\n      tok = this.peekToken();\n    }\n    return node;\n  };\n  _proto.parseExpression = function parseExpression() {\n    var node = this.parseInlineIf();\n    return node;\n  };\n  _proto.parseInlineIf = function parseInlineIf() {\n    var node = this.parseOr();\n    if (this.skipSymbol('if')) {\n      var condNode = this.parseOr();\n      var bodyNode = node;\n      node = new nodes.InlineIf(node.lineno, node.colno);\n      node.body = bodyNode;\n      node.cond = condNode;\n      if (this.skipSymbol('else')) {\n        node.else_ = this.parseOr();\n      } else {\n        node.else_ = null;\n      }\n    }\n    return node;\n  };\n  _proto.parseOr = function parseOr() {\n    var node = this.parseAnd();\n    while (this.skipSymbol('or')) {\n      var node2 = this.parseAnd();\n      node = new nodes.Or(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parseAnd = function parseAnd() {\n    var node = this.parseNot();\n    while (this.skipSymbol('and')) {\n      var node2 = this.parseNot();\n      node = new nodes.And(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parseNot = function parseNot() {\n    var tok = this.peekToken();\n    if (this.skipSymbol('not')) {\n      return new nodes.Not(tok.lineno, tok.colno, this.parseNot());\n    }\n    return this.parseIn();\n  };\n  _proto.parseIn = function parseIn() {\n    var node = this.parseIs();\n    while (1) {\n      // eslint-disable-line no-constant-condition\n      // check if the next token is 'not'\n      var tok = this.nextToken();\n      if (!tok) {\n        break;\n      }\n      var invert = tok.type === lexer.TOKEN_SYMBOL && tok.value === 'not';\n      // if it wasn't 'not', put it back\n      if (!invert) {\n        this.pushToken(tok);\n      }\n      if (this.skipSymbol('in')) {\n        var node2 = this.parseIs();\n        node = new nodes.In(node.lineno, node.colno, node, node2);\n        if (invert) {\n          node = new nodes.Not(node.lineno, node.colno, node);\n        }\n      } else {\n        // if we'd found a 'not' but this wasn't an 'in', put back the 'not'\n        if (invert) {\n          this.pushToken(tok);\n        }\n        break;\n      }\n    }\n    return node;\n  }\n\n  // I put this right after \"in\" in the operator precedence stack. That can\n  // obviously be changed to be closer to Jinja.\n  ;\n  _proto.parseIs = function parseIs() {\n    var node = this.parseCompare();\n    // look for an is\n    if (this.skipSymbol('is')) {\n      // look for a not\n      var not = this.skipSymbol('not');\n      // get the next node\n      var node2 = this.parseCompare();\n      // create an Is node using the next node and the info from our Is node.\n      node = new nodes.Is(node.lineno, node.colno, node, node2);\n      // if we have a Not, create a Not node from our Is node.\n      if (not) {\n        node = new nodes.Not(node.lineno, node.colno, node);\n      }\n    }\n    // return the node.\n    return node;\n  };\n  _proto.parseCompare = function parseCompare() {\n    var compareOps = ['==', '===', '!=', '!==', '<', '>', '<=', '>='];\n    var expr = this.parseConcat();\n    var ops = [];\n    while (1) {\n      // eslint-disable-line no-constant-condition\n      var tok = this.nextToken();\n      if (!tok) {\n        break;\n      } else if (compareOps.indexOf(tok.value) !== -1) {\n        ops.push(new nodes.CompareOperand(tok.lineno, tok.colno, this.parseConcat(), tok.value));\n      } else {\n        this.pushToken(tok);\n        break;\n      }\n    }\n    if (ops.length) {\n      return new nodes.Compare(ops[0].lineno, ops[0].colno, expr, ops);\n    } else {\n      return expr;\n    }\n  }\n\n  // finds the '~' for string concatenation\n  ;\n  _proto.parseConcat = function parseConcat() {\n    var node = this.parseAdd();\n    while (this.skipValue(lexer.TOKEN_TILDE, '~')) {\n      var node2 = this.parseAdd();\n      node = new nodes.Concat(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parseAdd = function parseAdd() {\n    var node = this.parseSub();\n    while (this.skipValue(lexer.TOKEN_OPERATOR, '+')) {\n      var node2 = this.parseSub();\n      node = new nodes.Add(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parseSub = function parseSub() {\n    var node = this.parseMul();\n    while (this.skipValue(lexer.TOKEN_OPERATOR, '-')) {\n      var node2 = this.parseMul();\n      node = new nodes.Sub(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parseMul = function parseMul() {\n    var node = this.parseDiv();\n    while (this.skipValue(lexer.TOKEN_OPERATOR, '*')) {\n      var node2 = this.parseDiv();\n      node = new nodes.Mul(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parseDiv = function parseDiv() {\n    var node = this.parseFloorDiv();\n    while (this.skipValue(lexer.TOKEN_OPERATOR, '/')) {\n      var node2 = this.parseFloorDiv();\n      node = new nodes.Div(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parseFloorDiv = function parseFloorDiv() {\n    var node = this.parseMod();\n    while (this.skipValue(lexer.TOKEN_OPERATOR, '//')) {\n      var node2 = this.parseMod();\n      node = new nodes.FloorDiv(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parseMod = function parseMod() {\n    var node = this.parsePow();\n    while (this.skipValue(lexer.TOKEN_OPERATOR, '%')) {\n      var node2 = this.parsePow();\n      node = new nodes.Mod(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parsePow = function parsePow() {\n    var node = this.parseUnary();\n    while (this.skipValue(lexer.TOKEN_OPERATOR, '**')) {\n      var node2 = this.parseUnary();\n      node = new nodes.Pow(node.lineno, node.colno, node, node2);\n    }\n    return node;\n  };\n  _proto.parseUnary = function parseUnary(noFilters) {\n    var tok = this.peekToken();\n    var node;\n    if (this.skipValue(lexer.TOKEN_OPERATOR, '-')) {\n      node = new nodes.Neg(tok.lineno, tok.colno, this.parseUnary(true));\n    } else if (this.skipValue(lexer.TOKEN_OPERATOR, '+')) {\n      node = new nodes.Pos(tok.lineno, tok.colno, this.parseUnary(true));\n    } else {\n      node = this.parsePrimary();\n    }\n    if (!noFilters) {\n      node = this.parseFilter(node);\n    }\n    return node;\n  };\n  _proto.parsePrimary = function parsePrimary(noPostfix) {\n    var tok = this.nextToken();\n    var val;\n    var node = null;\n    if (!tok) {\n      this.fail('expected expression, got end of file');\n    } else if (tok.type === lexer.TOKEN_STRING) {\n      val = tok.value;\n    } else if (tok.type === lexer.TOKEN_INT) {\n      val = parseInt(tok.value, 10);\n    } else if (tok.type === lexer.TOKEN_FLOAT) {\n      val = parseFloat(tok.value);\n    } else if (tok.type === lexer.TOKEN_BOOLEAN) {\n      if (tok.value === 'true') {\n        val = true;\n      } else if (tok.value === 'false') {\n        val = false;\n      } else {\n        this.fail('invalid boolean: ' + tok.value, tok.lineno, tok.colno);\n      }\n    } else if (tok.type === lexer.TOKEN_NONE) {\n      val = null;\n    } else if (tok.type === lexer.TOKEN_REGEX) {\n      val = new RegExp(tok.value.body, tok.value.flags);\n    }\n    if (val !== undefined) {\n      node = new nodes.Literal(tok.lineno, tok.colno, val);\n    } else if (tok.type === lexer.TOKEN_SYMBOL) {\n      node = new nodes.Symbol(tok.lineno, tok.colno, tok.value);\n    } else {\n      // See if it's an aggregate type, we need to push the\n      // current delimiter token back on\n      this.pushToken(tok);\n      node = this.parseAggregate();\n    }\n    if (!noPostfix) {\n      node = this.parsePostfix(node);\n    }\n    if (node) {\n      return node;\n    } else {\n      throw this.error(\"unexpected token: \" + tok.value, tok.lineno, tok.colno);\n    }\n  };\n  _proto.parseFilterName = function parseFilterName() {\n    var tok = this.expect(lexer.TOKEN_SYMBOL);\n    var name = tok.value;\n    while (this.skipValue(lexer.TOKEN_OPERATOR, '.')) {\n      name += '.' + this.expect(lexer.TOKEN_SYMBOL).value;\n    }\n    return new nodes.Symbol(tok.lineno, tok.colno, name);\n  };\n  _proto.parseFilterArgs = function parseFilterArgs(node) {\n    if (this.peekToken().type === lexer.TOKEN_LEFT_PAREN) {\n      // Get a FunCall node and add the parameters to the\n      // filter\n      var call = this.parsePostfix(node);\n      return call.args.children;\n    }\n    return [];\n  };\n  _proto.parseFilter = function parseFilter(node) {\n    while (this.skip(lexer.TOKEN_PIPE)) {\n      var name = this.parseFilterName();\n      node = new nodes.Filter(name.lineno, name.colno, name, new nodes.NodeList(name.lineno, name.colno, [node].concat(this.parseFilterArgs(node))));\n    }\n    return node;\n  };\n  _proto.parseFilterStatement = function parseFilterStatement() {\n    var filterTok = this.peekToken();\n    if (!this.skipSymbol('filter')) {\n      this.fail('parseFilterStatement: expected filter');\n    }\n    var name = this.parseFilterName();\n    var args = this.parseFilterArgs(name);\n    this.advanceAfterBlockEnd(filterTok.value);\n    var body = new nodes.Capture(name.lineno, name.colno, this.parseUntilBlocks('endfilter'));\n    this.advanceAfterBlockEnd();\n    var node = new nodes.Filter(name.lineno, name.colno, name, new nodes.NodeList(name.lineno, name.colno, [body].concat(args)));\n    return new nodes.Output(name.lineno, name.colno, [node]);\n  };\n  _proto.parseAggregate = function parseAggregate() {\n    var tok = this.nextToken();\n    var node;\n    switch (tok.type) {\n      case lexer.TOKEN_LEFT_PAREN:\n        node = new nodes.Group(tok.lineno, tok.colno);\n        break;\n      case lexer.TOKEN_LEFT_BRACKET:\n        node = new nodes.Array(tok.lineno, tok.colno);\n        break;\n      case lexer.TOKEN_LEFT_CURLY:\n        node = new nodes.Dict(tok.lineno, tok.colno);\n        break;\n      default:\n        return null;\n    }\n    while (1) {\n      // eslint-disable-line no-constant-condition\n      var type = this.peekToken().type;\n      if (type === lexer.TOKEN_RIGHT_PAREN || type === lexer.TOKEN_RIGHT_BRACKET || type === lexer.TOKEN_RIGHT_CURLY) {\n        this.nextToken();\n        break;\n      }\n      if (node.children.length > 0) {\n        if (!this.skip(lexer.TOKEN_COMMA)) {\n          this.fail('parseAggregate: expected comma after expression', tok.lineno, tok.colno);\n        }\n      }\n      if (node instanceof nodes.Dict) {\n        // TODO: check for errors\n        var key = this.parsePrimary();\n\n        // We expect a key/value pair for dicts, separated by a\n        // colon\n        if (!this.skip(lexer.TOKEN_COLON)) {\n          this.fail('parseAggregate: expected colon after dict key', tok.lineno, tok.colno);\n        }\n\n        // TODO: check for errors\n        var value = this.parseExpression();\n        node.addChild(new nodes.Pair(key.lineno, key.colno, key, value));\n      } else {\n        // TODO: check for errors\n        var expr = this.parseExpression();\n        node.addChild(expr);\n      }\n    }\n    return node;\n  };\n  _proto.parseSignature = function parseSignature(tolerant, noParens) {\n    var tok = this.peekToken();\n    if (!noParens && tok.type !== lexer.TOKEN_LEFT_PAREN) {\n      if (tolerant) {\n        return null;\n      } else {\n        this.fail('expected arguments', tok.lineno, tok.colno);\n      }\n    }\n    if (tok.type === lexer.TOKEN_LEFT_PAREN) {\n      tok = this.nextToken();\n    }\n    var args = new nodes.NodeList(tok.lineno, tok.colno);\n    var kwargs = new nodes.KeywordArgs(tok.lineno, tok.colno);\n    var checkComma = false;\n    while (1) {\n      // eslint-disable-line no-constant-condition\n      tok = this.peekToken();\n      if (!noParens && tok.type === lexer.TOKEN_RIGHT_PAREN) {\n        this.nextToken();\n        break;\n      } else if (noParens && tok.type === lexer.TOKEN_BLOCK_END) {\n        break;\n      }\n      if (checkComma && !this.skip(lexer.TOKEN_COMMA)) {\n        this.fail('parseSignature: expected comma after expression', tok.lineno, tok.colno);\n      } else {\n        var arg = this.parseExpression();\n        if (this.skipValue(lexer.TOKEN_OPERATOR, '=')) {\n          kwargs.addChild(new nodes.Pair(arg.lineno, arg.colno, arg, this.parseExpression()));\n        } else {\n          args.addChild(arg);\n        }\n      }\n      checkComma = true;\n    }\n    if (kwargs.children.length) {\n      args.addChild(kwargs);\n    }\n    return args;\n  };\n  _proto.parseUntilBlocks = function parseUntilBlocks() {\n    var prev = this.breakOnBlocks;\n    for (var _len = arguments.length, blockNames = new Array(_len), _key = 0; _key < _len; _key++) {\n      blockNames[_key] = arguments[_key];\n    }\n    this.breakOnBlocks = blockNames;\n    var ret = this.parse();\n    this.breakOnBlocks = prev;\n    return ret;\n  };\n  _proto.parseNodes = function parseNodes() {\n    var tok;\n    var buf = [];\n    while (tok = this.nextToken()) {\n      if (tok.type === lexer.TOKEN_DATA) {\n        var data = tok.value;\n        var nextToken = this.peekToken();\n        var nextVal = nextToken && nextToken.value;\n\n        // If the last token has \"-\" we need to trim the\n        // leading whitespace of the data. This is marked with\n        // the `dropLeadingWhitespace` variable.\n        if (this.dropLeadingWhitespace) {\n          // TODO: this could be optimized (don't use regex)\n          data = data.replace(/^\\s*/, '');\n          this.dropLeadingWhitespace = false;\n        }\n\n        // Same for the succeeding block start token\n        if (nextToken && (nextToken.type === lexer.TOKEN_BLOCK_START && nextVal.charAt(nextVal.length - 1) === '-' || nextToken.type === lexer.TOKEN_VARIABLE_START && nextVal.charAt(this.tokens.tags.VARIABLE_START.length) === '-' || nextToken.type === lexer.TOKEN_COMMENT && nextVal.charAt(this.tokens.tags.COMMENT_START.length) === '-')) {\n          // TODO: this could be optimized (don't use regex)\n          data = data.replace(/\\s*$/, '');\n        }\n        buf.push(new nodes.Output(tok.lineno, tok.colno, [new nodes.TemplateData(tok.lineno, tok.colno, data)]));\n      } else if (tok.type === lexer.TOKEN_BLOCK_START) {\n        this.dropLeadingWhitespace = false;\n        var n = this.parseStatement();\n        if (!n) {\n          break;\n        }\n        buf.push(n);\n      } else if (tok.type === lexer.TOKEN_VARIABLE_START) {\n        var e = this.parseExpression();\n        this.dropLeadingWhitespace = false;\n        this.advanceAfterVariableEnd();\n        buf.push(new nodes.Output(tok.lineno, tok.colno, [e]));\n      } else if (tok.type === lexer.TOKEN_COMMENT) {\n        this.dropLeadingWhitespace = tok.value.charAt(tok.value.length - this.tokens.tags.COMMENT_END.length - 1) === '-';\n      } else {\n        // Ignore comments, otherwise this should be an error\n        this.fail('Unexpected token at top-level: ' + tok.type, tok.lineno, tok.colno);\n      }\n    }\n    return buf;\n  };\n  _proto.parse = function parse() {\n    return new nodes.NodeList(0, 0, this.parseNodes());\n  };\n  _proto.parseAsRoot = function parseAsRoot() {\n    return new nodes.Root(0, 0, this.parseNodes());\n  };\n  return Parser;\n}(Obj); // var util = require('util');\n// var l = lexer.lex('{%- if x -%}\\n hello {% endif %}');\n// var t;\n// while((t = l.nextToken())) {\n//     console.log(util.inspect(t));\n// }\n// var p = new Parser(lexer.lex('hello {% filter title %}' +\n//                              'Hello madam how are you' +\n//                              '{% endfilter %}'));\n// var n = p.parseAsRoot();\n// nodes.printNodes(n);\nmodule.exports = {\n  parse: function parse(src, extensions, opts) {\n    var p = new Parser(lexer.lex(src, opts));\n    if (extensions !== undefined) {\n      p.extensions = extensions;\n    }\n    return p.parseAsRoot();\n  },\n  Parser: Parser\n};", "'use strict';\n\nvar nodes = require('./nodes');\nvar lib = require('./lib');\nvar sym = 0;\nfunction gensym() {\n  return 'hole_' + sym++;\n}\n\n// copy-on-write version of map\nfunction mapCOW(arr, func) {\n  var res = null;\n  for (var i = 0; i < arr.length; i++) {\n    var item = func(arr[i]);\n    if (item !== arr[i]) {\n      if (!res) {\n        res = arr.slice();\n      }\n      res[i] = item;\n    }\n  }\n  return res || arr;\n}\nfunction walk(ast, func, depthFirst) {\n  if (!(ast instanceof nodes.Node)) {\n    return ast;\n  }\n  if (!depthFirst) {\n    var astT = func(ast);\n    if (astT && astT !== ast) {\n      return astT;\n    }\n  }\n  if (ast instanceof nodes.NodeList) {\n    var children = mapCOW(ast.children, function (node) {\n      return walk(node, func, depthFirst);\n    });\n    if (children !== ast.children) {\n      ast = new nodes[ast.typename](ast.lineno, ast.colno, children);\n    }\n  } else if (ast instanceof nodes.CallExtension) {\n    var args = walk(ast.args, func, depthFirst);\n    var contentArgs = mapCOW(ast.contentArgs, function (node) {\n      return walk(node, func, depthFirst);\n    });\n    if (args !== ast.args || contentArgs !== ast.contentArgs) {\n      ast = new nodes[ast.typename](ast.extName, ast.prop, args, contentArgs);\n    }\n  } else {\n    var props = ast.fields.map(function (field) {\n      return ast[field];\n    });\n    var propsT = mapCOW(props, function (prop) {\n      return walk(prop, func, depthFirst);\n    });\n    if (propsT !== props) {\n      ast = new nodes[ast.typename](ast.lineno, ast.colno);\n      propsT.forEach(function (prop, i) {\n        ast[ast.fields[i]] = prop;\n      });\n    }\n  }\n  return depthFirst ? func(ast) || ast : ast;\n}\nfunction depthWalk(ast, func) {\n  return walk(ast, func, true);\n}\nfunction _liftFilters(node, asyncFilters, prop) {\n  var children = [];\n  var walked = depthWalk(prop ? node[prop] : node, function (descNode) {\n    var symbol;\n    if (descNode instanceof nodes.Block) {\n      return descNode;\n    } else if (descNode instanceof nodes.Filter && lib.indexOf(asyncFilters, descNode.name.value) !== -1 || descNode instanceof nodes.CallExtensionAsync) {\n      symbol = new nodes.Symbol(descNode.lineno, descNode.colno, gensym());\n      children.push(new nodes.FilterAsync(descNode.lineno, descNode.colno, descNode.name, descNode.args, symbol));\n    }\n    return symbol;\n  });\n  if (prop) {\n    node[prop] = walked;\n  } else {\n    node = walked;\n  }\n  if (children.length) {\n    children.push(node);\n    return new nodes.NodeList(node.lineno, node.colno, children);\n  } else {\n    return node;\n  }\n}\nfunction liftFilters(ast, asyncFilters) {\n  return depthWalk(ast, function (node) {\n    if (node instanceof nodes.Output) {\n      return _liftFilters(node, asyncFilters);\n    } else if (node instanceof nodes.Set) {\n      return _liftFilters(node, asyncFilters, 'value');\n    } else if (node instanceof nodes.For) {\n      return _liftFilters(node, asyncFilters, 'arr');\n    } else if (node instanceof nodes.If) {\n      return _liftFilters(node, asyncFilters, 'cond');\n    } else if (node instanceof nodes.CallExtension) {\n      return _liftFilters(node, asyncFilters, 'args');\n    } else {\n      return undefined;\n    }\n  });\n}\nfunction liftSuper(ast) {\n  return walk(ast, function (blockNode) {\n    if (!(blockNode instanceof nodes.Block)) {\n      return;\n    }\n    var hasSuper = false;\n    var symbol = gensym();\n    blockNode.body = walk(blockNode.body, function (node) {\n      // eslint-disable-line consistent-return\n      if (node instanceof nodes.FunCall && node.name.value === 'super') {\n        hasSuper = true;\n        return new nodes.Symbol(node.lineno, node.colno, symbol);\n      }\n    });\n    if (hasSuper) {\n      blockNode.body.children.unshift(new nodes.Super(0, 0, blockNode.name, new nodes.Symbol(0, 0, symbol)));\n    }\n  });\n}\nfunction convertStatements(ast) {\n  return depthWalk(ast, function (node) {\n    if (!(node instanceof nodes.If) && !(node instanceof nodes.For)) {\n      return undefined;\n    }\n    var async = false;\n    walk(node, function (child) {\n      if (child instanceof nodes.FilterAsync || child instanceof nodes.IfAsync || child instanceof nodes.AsyncEach || child instanceof nodes.AsyncAll || child instanceof nodes.CallExtensionAsync) {\n        async = true;\n        // Stop iterating by returning the node\n        return child;\n      }\n      return undefined;\n    });\n    if (async) {\n      if (node instanceof nodes.If) {\n        return new nodes.IfAsync(node.lineno, node.colno, node.cond, node.body, node.else_);\n      } else if (node instanceof nodes.For && !(node instanceof nodes.AsyncAll)) {\n        return new nodes.AsyncEach(node.lineno, node.colno, node.arr, node.name, node.body, node.else_);\n      }\n    }\n    return undefined;\n  });\n}\nfunction cps(ast, asyncFilters) {\n  return convertStatements(liftSuper(liftFilters(ast, asyncFilters)));\n}\nfunction transform(ast, asyncFilters) {\n  return cps(ast, asyncFilters || []);\n}\n\n// var parser = require('./parser');\n// var src = 'hello {% foo %}{% endfoo %} end';\n// var ast = transform(parser.parse(src, [new FooExtension()]), ['bar']);\n// nodes.printNodes(ast);\n\nmodule.exports = {\n  transform: transform\n};", "'use strict';\n\nvar lib = require('./lib');\nvar arrayFrom = Array.from;\nvar supportsIterators = typeof Symbol === 'function' && Symbol.iterator && typeof arrayFrom === 'function';\n\n// Frames keep track of scoping both at compile-time and run-time so\n// we know how to access variables. Block tags can introduce special\n// variables, for example.\nvar Frame = /*#__PURE__*/function () {\n  function Frame(parent, isolateWrites) {\n    this.variables = Object.create(null);\n    this.parent = parent;\n    this.topLevel = false;\n    // if this is true, writes (set) should never propagate upwards past\n    // this frame to its parent (though reads may).\n    this.isolateWrites = isolateWrites;\n  }\n  var _proto = Frame.prototype;\n  _proto.set = function set(name, val, resolveUp) {\n    // Allow variables with dots by automatically creating the\n    // nested structure\n    var parts = name.split('.');\n    var obj = this.variables;\n    var frame = this;\n    if (resolveUp) {\n      if (frame = this.resolve(parts[0], true)) {\n        frame.set(name, val);\n        return;\n      }\n    }\n    for (var i = 0; i < parts.length - 1; i++) {\n      var id = parts[i];\n      if (!obj[id]) {\n        obj[id] = {};\n      }\n      obj = obj[id];\n    }\n    obj[parts[parts.length - 1]] = val;\n  };\n  _proto.get = function get(name) {\n    var val = this.variables[name];\n    if (val !== undefined) {\n      return val;\n    }\n    return null;\n  };\n  _proto.lookup = function lookup(name) {\n    var p = this.parent;\n    var val = this.variables[name];\n    if (val !== undefined) {\n      return val;\n    }\n    return p && p.lookup(name);\n  };\n  _proto.resolve = function resolve(name, forWrite) {\n    var p = forWrite && this.isolateWrites ? undefined : this.parent;\n    var val = this.variables[name];\n    if (val !== undefined) {\n      return this;\n    }\n    return p && p.resolve(name);\n  };\n  _proto.push = function push(isolateWrites) {\n    return new Frame(this, isolateWrites);\n  };\n  _proto.pop = function pop() {\n    return this.parent;\n  };\n  return Frame;\n}();\nfunction makeMacro(argNames, kwargNames, func) {\n  return function macro() {\n    for (var _len = arguments.length, macroArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n      macroArgs[_key] = arguments[_key];\n    }\n    var argCount = numArgs(macroArgs);\n    var args;\n    var kwargs = getKeywordArgs(macroArgs);\n    if (argCount > argNames.length) {\n      args = macroArgs.slice(0, argNames.length);\n\n      // Positional arguments that should be passed in as\n      // keyword arguments (essentially default values)\n      macroArgs.slice(args.length, argCount).forEach(function (val, i) {\n        if (i < kwargNames.length) {\n          kwargs[kwargNames[i]] = val;\n        }\n      });\n      args.push(kwargs);\n    } else if (argCount < argNames.length) {\n      args = macroArgs.slice(0, argCount);\n      for (var i = argCount; i < argNames.length; i++) {\n        var arg = argNames[i];\n\n        // Keyword arguments that should be passed as\n        // positional arguments, i.e. the caller explicitly\n        // used the name of a positional arg\n        args.push(kwargs[arg]);\n        delete kwargs[arg];\n      }\n      args.push(kwargs);\n    } else {\n      args = macroArgs;\n    }\n    return func.apply(this, args);\n  };\n}\nfunction makeKeywordArgs(obj) {\n  obj.__keywords = true;\n  return obj;\n}\nfunction isKeywordArgs(obj) {\n  return obj && Object.prototype.hasOwnProperty.call(obj, '__keywords');\n}\nfunction getKeywordArgs(args) {\n  var len = args.length;\n  if (len) {\n    var lastArg = args[len - 1];\n    if (isKeywordArgs(lastArg)) {\n      return lastArg;\n    }\n  }\n  return {};\n}\nfunction numArgs(args) {\n  var len = args.length;\n  if (len === 0) {\n    return 0;\n  }\n  var lastArg = args[len - 1];\n  if (isKeywordArgs(lastArg)) {\n    return len - 1;\n  } else {\n    return len;\n  }\n}\n\n// A SafeString object indicates that the string should not be\n// autoescaped. This happens magically because autoescaping only\n// occurs on primitive string objects.\nfunction SafeString(val) {\n  if (typeof val !== 'string') {\n    return val;\n  }\n  this.val = val;\n  this.length = val.length;\n}\nSafeString.prototype = Object.create(String.prototype, {\n  length: {\n    writable: true,\n    configurable: true,\n    value: 0\n  }\n});\nSafeString.prototype.valueOf = function valueOf() {\n  return this.val;\n};\nSafeString.prototype.toString = function toString() {\n  return this.val;\n};\nfunction copySafeness(dest, target) {\n  if (dest instanceof SafeString) {\n    return new SafeString(target);\n  }\n  return target.toString();\n}\nfunction markSafe(val) {\n  var type = typeof val;\n  if (type === 'string') {\n    return new SafeString(val);\n  } else if (type !== 'function') {\n    return val;\n  } else {\n    return function wrapSafe(args) {\n      var ret = val.apply(this, arguments);\n      if (typeof ret === 'string') {\n        return new SafeString(ret);\n      }\n      return ret;\n    };\n  }\n}\nfunction suppressValue(val, autoescape) {\n  val = val !== undefined && val !== null ? val : '';\n  if (autoescape && !(val instanceof SafeString)) {\n    val = lib.escape(val.toString());\n  }\n  return val;\n}\nfunction ensureDefined(val, lineno, colno) {\n  if (val === null || val === undefined) {\n    throw new lib.TemplateError('attempted to output null or undefined value', lineno + 1, colno + 1);\n  }\n  return val;\n}\nfunction memberLookup(obj, val) {\n  if (obj === undefined || obj === null) {\n    return undefined;\n  }\n  if (typeof obj[val] === 'function') {\n    return function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      return obj[val].apply(obj, args);\n    };\n  }\n  return obj[val];\n}\nfunction callWrap(obj, name, context, args) {\n  if (!obj) {\n    throw new Error('Unable to call `' + name + '`, which is undefined or falsey');\n  } else if (typeof obj !== 'function') {\n    throw new Error('Unable to call `' + name + '`, which is not a function');\n  }\n  return obj.apply(context, args);\n}\nfunction contextOrFrameLookup(context, frame, name) {\n  var val = frame.lookup(name);\n  return val !== undefined ? val : context.lookup(name);\n}\nfunction handleError(error, lineno, colno) {\n  if (error.lineno) {\n    return error;\n  } else {\n    return new lib.TemplateError(error, lineno, colno);\n  }\n}\nfunction asyncEach(arr, dimen, iter, cb) {\n  if (lib.isArray(arr)) {\n    var len = arr.length;\n    lib.asyncIter(arr, function iterCallback(item, i, next) {\n      switch (dimen) {\n        case 1:\n          iter(item, i, len, next);\n          break;\n        case 2:\n          iter(item[0], item[1], i, len, next);\n          break;\n        case 3:\n          iter(item[0], item[1], item[2], i, len, next);\n          break;\n        default:\n          item.push(i, len, next);\n          iter.apply(this, item);\n      }\n    }, cb);\n  } else {\n    lib.asyncFor(arr, function iterCallback(key, val, i, len, next) {\n      iter(key, val, i, len, next);\n    }, cb);\n  }\n}\nfunction asyncAll(arr, dimen, func, cb) {\n  var finished = 0;\n  var len;\n  var outputArr;\n  function done(i, output) {\n    finished++;\n    outputArr[i] = output;\n    if (finished === len) {\n      cb(null, outputArr.join(''));\n    }\n  }\n  if (lib.isArray(arr)) {\n    len = arr.length;\n    outputArr = new Array(len);\n    if (len === 0) {\n      cb(null, '');\n    } else {\n      for (var i = 0; i < arr.length; i++) {\n        var item = arr[i];\n        switch (dimen) {\n          case 1:\n            func(item, i, len, done);\n            break;\n          case 2:\n            func(item[0], item[1], i, len, done);\n            break;\n          case 3:\n            func(item[0], item[1], item[2], i, len, done);\n            break;\n          default:\n            item.push(i, len, done);\n            func.apply(this, item);\n        }\n      }\n    }\n  } else {\n    var keys = lib.keys(arr || {});\n    len = keys.length;\n    outputArr = new Array(len);\n    if (len === 0) {\n      cb(null, '');\n    } else {\n      for (var _i = 0; _i < keys.length; _i++) {\n        var k = keys[_i];\n        func(k, arr[k], _i, len, done);\n      }\n    }\n  }\n}\nfunction fromIterator(arr) {\n  if (typeof arr !== 'object' || arr === null || lib.isArray(arr)) {\n    return arr;\n  } else if (supportsIterators && Symbol.iterator in arr) {\n    return arrayFrom(arr);\n  } else {\n    return arr;\n  }\n}\nmodule.exports = {\n  Frame: Frame,\n  makeMacro: makeMacro,\n  makeKeywordArgs: makeKeywordArgs,\n  numArgs: numArgs,\n  suppressValue: suppressValue,\n  ensureDefined: ensureDefined,\n  memberLookup: memberLookup,\n  contextOrFrameLookup: contextOrFrameLookup,\n  callWrap: callWrap,\n  handleError: handleError,\n  isArray: lib.isArray,\n  keys: lib.keys,\n  SafeString: SafeString,\n  copySafeness: copySafeness,\n  markSafe: markSafe,\n  asyncEach: asyncEach,\n  asyncAll: asyncAll,\n  inOperator: lib.inOperator,\n  fromIterator: fromIterator\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar parser = require('./parser');\nvar transformer = require('./transformer');\nvar nodes = require('./nodes');\nvar _require = require('./lib'),\n  TemplateError = _require.TemplateError;\nvar _require2 = require('./runtime'),\n  Frame = _require2.Frame;\nvar _require3 = require('./object'),\n  Obj = _require3.Obj;\n\n// These are all the same for now, but shouldn't be passed straight\n// through\nvar compareOps = {\n  '==': '==',\n  '===': '===',\n  '!=': '!=',\n  '!==': '!==',\n  '<': '<',\n  '>': '>',\n  '<=': '<=',\n  '>=': '>='\n};\nvar Compiler = /*#__PURE__*/function (_Obj) {\n  _inheritsLoose(Compiler, _Obj);\n  function Compiler() {\n    return _Obj.apply(this, arguments) || this;\n  }\n  var _proto = Compiler.prototype;\n  _proto.init = function init(templateName, throwOnUndefined) {\n    this.templateName = templateName;\n    this.codebuf = [];\n    this.lastId = 0;\n    this.buffer = null;\n    this.bufferStack = [];\n    this._scopeClosers = '';\n    this.inBlock = false;\n    this.throwOnUndefined = throwOnUndefined;\n  };\n  _proto.fail = function fail(msg, lineno, colno) {\n    if (lineno !== undefined) {\n      lineno += 1;\n    }\n    if (colno !== undefined) {\n      colno += 1;\n    }\n    throw new TemplateError(msg, lineno, colno);\n  };\n  _proto._pushBuffer = function _pushBuffer() {\n    var id = this._tmpid();\n    this.bufferStack.push(this.buffer);\n    this.buffer = id;\n    this._emit(\"var \" + this.buffer + \" = \\\"\\\";\");\n    return id;\n  };\n  _proto._popBuffer = function _popBuffer() {\n    this.buffer = this.bufferStack.pop();\n  };\n  _proto._emit = function _emit(code) {\n    this.codebuf.push(code);\n  };\n  _proto._emitLine = function _emitLine(code) {\n    this._emit(code + '\\n');\n  };\n  _proto._emitLines = function _emitLines() {\n    var _this = this;\n    for (var _len = arguments.length, lines = new Array(_len), _key = 0; _key < _len; _key++) {\n      lines[_key] = arguments[_key];\n    }\n    lines.forEach(function (line) {\n      return _this._emitLine(line);\n    });\n  };\n  _proto._emitFuncBegin = function _emitFuncBegin(node, name) {\n    this.buffer = 'output';\n    this._scopeClosers = '';\n    this._emitLine(\"function \" + name + \"(env, context, frame, runtime, cb) {\");\n    this._emitLine(\"var lineno = \" + node.lineno + \";\");\n    this._emitLine(\"var colno = \" + node.colno + \";\");\n    this._emitLine(\"var \" + this.buffer + \" = \\\"\\\";\");\n    this._emitLine('try {');\n  };\n  _proto._emitFuncEnd = function _emitFuncEnd(noReturn) {\n    if (!noReturn) {\n      this._emitLine('cb(null, ' + this.buffer + ');');\n    }\n    this._closeScopeLevels();\n    this._emitLine('} catch (e) {');\n    this._emitLine('  cb(runtime.handleError(e, lineno, colno));');\n    this._emitLine('}');\n    this._emitLine('}');\n    this.buffer = null;\n  };\n  _proto._addScopeLevel = function _addScopeLevel() {\n    this._scopeClosers += '})';\n  };\n  _proto._closeScopeLevels = function _closeScopeLevels() {\n    this._emitLine(this._scopeClosers + ';');\n    this._scopeClosers = '';\n  };\n  _proto._withScopedSyntax = function _withScopedSyntax(func) {\n    var _scopeClosers = this._scopeClosers;\n    this._scopeClosers = '';\n    func.call(this);\n    this._closeScopeLevels();\n    this._scopeClosers = _scopeClosers;\n  };\n  _proto._makeCallback = function _makeCallback(res) {\n    var err = this._tmpid();\n    return 'function(' + err + (res ? ',' + res : '') + ') {\\n' + 'if(' + err + ') { cb(' + err + '); return; }';\n  };\n  _proto._tmpid = function _tmpid() {\n    this.lastId++;\n    return 't_' + this.lastId;\n  };\n  _proto._templateName = function _templateName() {\n    return this.templateName == null ? 'undefined' : JSON.stringify(this.templateName);\n  };\n  _proto._compileChildren = function _compileChildren(node, frame) {\n    var _this2 = this;\n    node.children.forEach(function (child) {\n      _this2.compile(child, frame);\n    });\n  };\n  _proto._compileAggregate = function _compileAggregate(node, frame, startChar, endChar) {\n    var _this3 = this;\n    if (startChar) {\n      this._emit(startChar);\n    }\n    node.children.forEach(function (child, i) {\n      if (i > 0) {\n        _this3._emit(',');\n      }\n      _this3.compile(child, frame);\n    });\n    if (endChar) {\n      this._emit(endChar);\n    }\n  };\n  _proto._compileExpression = function _compileExpression(node, frame) {\n    // TODO: I'm not really sure if this type check is worth it or\n    // not.\n    this.assertType(node, nodes.Literal, nodes.Symbol, nodes.Group, nodes.Array, nodes.Dict, nodes.FunCall, nodes.Caller, nodes.Filter, nodes.LookupVal, nodes.Compare, nodes.InlineIf, nodes.In, nodes.Is, nodes.And, nodes.Or, nodes.Not, nodes.Add, nodes.Concat, nodes.Sub, nodes.Mul, nodes.Div, nodes.FloorDiv, nodes.Mod, nodes.Pow, nodes.Neg, nodes.Pos, nodes.Compare, nodes.NodeList);\n    this.compile(node, frame);\n  };\n  _proto.assertType = function assertType(node) {\n    for (var _len2 = arguments.length, types = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      types[_key2 - 1] = arguments[_key2];\n    }\n    if (!types.some(function (t) {\n      return node instanceof t;\n    })) {\n      this.fail(\"assertType: invalid type: \" + node.typename, node.lineno, node.colno);\n    }\n  };\n  _proto.compileCallExtension = function compileCallExtension(node, frame, async) {\n    var _this4 = this;\n    var args = node.args;\n    var contentArgs = node.contentArgs;\n    var autoescape = typeof node.autoescape === 'boolean' ? node.autoescape : true;\n    if (!async) {\n      this._emit(this.buffer + \" += runtime.suppressValue(\");\n    }\n    this._emit(\"env.getExtension(\\\"\" + node.extName + \"\\\")[\\\"\" + node.prop + \"\\\"](\");\n    this._emit('context');\n    if (args || contentArgs) {\n      this._emit(',');\n    }\n    if (args) {\n      if (!(args instanceof nodes.NodeList)) {\n        this.fail('compileCallExtension: arguments must be a NodeList, ' + 'use `parser.parseSignature`');\n      }\n      args.children.forEach(function (arg, i) {\n        // Tag arguments are passed normally to the call. Note\n        // that keyword arguments are turned into a single js\n        // object as the last argument, if they exist.\n        _this4._compileExpression(arg, frame);\n        if (i !== args.children.length - 1 || contentArgs.length) {\n          _this4._emit(',');\n        }\n      });\n    }\n    if (contentArgs.length) {\n      contentArgs.forEach(function (arg, i) {\n        if (i > 0) {\n          _this4._emit(',');\n        }\n        if (arg) {\n          _this4._emitLine('function(cb) {');\n          _this4._emitLine('if(!cb) { cb = function(err) { if(err) { throw err; }}}');\n          var id = _this4._pushBuffer();\n          _this4._withScopedSyntax(function () {\n            _this4.compile(arg, frame);\n            _this4._emitLine(\"cb(null, \" + id + \");\");\n          });\n          _this4._popBuffer();\n          _this4._emitLine(\"return \" + id + \";\");\n          _this4._emitLine('}');\n        } else {\n          _this4._emit('null');\n        }\n      });\n    }\n    if (async) {\n      var res = this._tmpid();\n      this._emitLine(', ' + this._makeCallback(res));\n      this._emitLine(this.buffer + \" += runtime.suppressValue(\" + res + \", \" + autoescape + \" && env.opts.autoescape);\");\n      this._addScopeLevel();\n    } else {\n      this._emit(')');\n      this._emit(\", \" + autoescape + \" && env.opts.autoescape);\\n\");\n    }\n  };\n  _proto.compileCallExtensionAsync = function compileCallExtensionAsync(node, frame) {\n    this.compileCallExtension(node, frame, true);\n  };\n  _proto.compileNodeList = function compileNodeList(node, frame) {\n    this._compileChildren(node, frame);\n  };\n  _proto.compileLiteral = function compileLiteral(node) {\n    if (typeof node.value === 'string') {\n      var val = node.value.replace(/\\\\/g, '\\\\\\\\');\n      val = val.replace(/\"/g, '\\\\\"');\n      val = val.replace(/\\n/g, '\\\\n');\n      val = val.replace(/\\r/g, '\\\\r');\n      val = val.replace(/\\t/g, '\\\\t');\n      val = val.replace(/\\u2028/g, \"\\\\u2028\");\n      this._emit(\"\\\"\" + val + \"\\\"\");\n    } else if (node.value === null) {\n      this._emit('null');\n    } else {\n      this._emit(node.value.toString());\n    }\n  };\n  _proto.compileSymbol = function compileSymbol(node, frame) {\n    var name = node.value;\n    var v = frame.lookup(name);\n    if (v) {\n      this._emit(v);\n    } else {\n      this._emit('runtime.contextOrFrameLookup(' + 'context, frame, \"' + name + '\")');\n    }\n  };\n  _proto.compileGroup = function compileGroup(node, frame) {\n    this._compileAggregate(node, frame, '(', ')');\n  };\n  _proto.compileArray = function compileArray(node, frame) {\n    this._compileAggregate(node, frame, '[', ']');\n  };\n  _proto.compileDict = function compileDict(node, frame) {\n    this._compileAggregate(node, frame, '{', '}');\n  };\n  _proto.compilePair = function compilePair(node, frame) {\n    var key = node.key;\n    var val = node.value;\n    if (key instanceof nodes.Symbol) {\n      key = new nodes.Literal(key.lineno, key.colno, key.value);\n    } else if (!(key instanceof nodes.Literal && typeof key.value === 'string')) {\n      this.fail('compilePair: Dict keys must be strings or names', key.lineno, key.colno);\n    }\n    this.compile(key, frame);\n    this._emit(': ');\n    this._compileExpression(val, frame);\n  };\n  _proto.compileInlineIf = function compileInlineIf(node, frame) {\n    this._emit('(');\n    this.compile(node.cond, frame);\n    this._emit('?');\n    this.compile(node.body, frame);\n    this._emit(':');\n    if (node.else_ !== null) {\n      this.compile(node.else_, frame);\n    } else {\n      this._emit('\"\"');\n    }\n    this._emit(')');\n  };\n  _proto.compileIn = function compileIn(node, frame) {\n    this._emit('runtime.inOperator(');\n    this.compile(node.left, frame);\n    this._emit(',');\n    this.compile(node.right, frame);\n    this._emit(')');\n  };\n  _proto.compileIs = function compileIs(node, frame) {\n    // first, we need to try to get the name of the test function, if it's a\n    // callable (i.e., has args) and not a symbol.\n    var right = node.right.name ? node.right.name.value\n    // otherwise go with the symbol value\n    : node.right.value;\n    this._emit('env.getTest(\"' + right + '\").call(context, ');\n    this.compile(node.left, frame);\n    // compile the arguments for the callable if they exist\n    if (node.right.args) {\n      this._emit(',');\n      this.compile(node.right.args, frame);\n    }\n    this._emit(') === true');\n  };\n  _proto._binOpEmitter = function _binOpEmitter(node, frame, str) {\n    this.compile(node.left, frame);\n    this._emit(str);\n    this.compile(node.right, frame);\n  }\n\n  // ensure concatenation instead of addition\n  // by adding empty string in between\n  ;\n  _proto.compileOr = function compileOr(node, frame) {\n    return this._binOpEmitter(node, frame, ' || ');\n  };\n  _proto.compileAnd = function compileAnd(node, frame) {\n    return this._binOpEmitter(node, frame, ' && ');\n  };\n  _proto.compileAdd = function compileAdd(node, frame) {\n    return this._binOpEmitter(node, frame, ' + ');\n  };\n  _proto.compileConcat = function compileConcat(node, frame) {\n    return this._binOpEmitter(node, frame, ' + \"\" + ');\n  };\n  _proto.compileSub = function compileSub(node, frame) {\n    return this._binOpEmitter(node, frame, ' - ');\n  };\n  _proto.compileMul = function compileMul(node, frame) {\n    return this._binOpEmitter(node, frame, ' * ');\n  };\n  _proto.compileDiv = function compileDiv(node, frame) {\n    return this._binOpEmitter(node, frame, ' / ');\n  };\n  _proto.compileMod = function compileMod(node, frame) {\n    return this._binOpEmitter(node, frame, ' % ');\n  };\n  _proto.compileNot = function compileNot(node, frame) {\n    this._emit('!');\n    this.compile(node.target, frame);\n  };\n  _proto.compileFloorDiv = function compileFloorDiv(node, frame) {\n    this._emit('Math.floor(');\n    this.compile(node.left, frame);\n    this._emit(' / ');\n    this.compile(node.right, frame);\n    this._emit(')');\n  };\n  _proto.compilePow = function compilePow(node, frame) {\n    this._emit('Math.pow(');\n    this.compile(node.left, frame);\n    this._emit(', ');\n    this.compile(node.right, frame);\n    this._emit(')');\n  };\n  _proto.compileNeg = function compileNeg(node, frame) {\n    this._emit('-');\n    this.compile(node.target, frame);\n  };\n  _proto.compilePos = function compilePos(node, frame) {\n    this._emit('+');\n    this.compile(node.target, frame);\n  };\n  _proto.compileCompare = function compileCompare(node, frame) {\n    var _this5 = this;\n    this.compile(node.expr, frame);\n    node.ops.forEach(function (op) {\n      _this5._emit(\" \" + compareOps[op.type] + \" \");\n      _this5.compile(op.expr, frame);\n    });\n  };\n  _proto.compileLookupVal = function compileLookupVal(node, frame) {\n    this._emit('runtime.memberLookup((');\n    this._compileExpression(node.target, frame);\n    this._emit('),');\n    this._compileExpression(node.val, frame);\n    this._emit(')');\n  };\n  _proto._getNodeName = function _getNodeName(node) {\n    switch (node.typename) {\n      case 'Symbol':\n        return node.value;\n      case 'FunCall':\n        return 'the return value of (' + this._getNodeName(node.name) + ')';\n      case 'LookupVal':\n        return this._getNodeName(node.target) + '[\"' + this._getNodeName(node.val) + '\"]';\n      case 'Literal':\n        return node.value.toString();\n      default:\n        return '--expression--';\n    }\n  };\n  _proto.compileFunCall = function compileFunCall(node, frame) {\n    // Keep track of line/col info at runtime by settings\n    // variables within an expression. An expression in javascript\n    // like (x, y, z) returns the last value, and x and y can be\n    // anything\n    this._emit('(lineno = ' + node.lineno + ', colno = ' + node.colno + ', ');\n    this._emit('runtime.callWrap(');\n    // Compile it as normal.\n    this._compileExpression(node.name, frame);\n\n    // Output the name of what we're calling so we can get friendly errors\n    // if the lookup fails.\n    this._emit(', \"' + this._getNodeName(node.name).replace(/\"/g, '\\\\\"') + '\", context, ');\n    this._compileAggregate(node.args, frame, '[', '])');\n    this._emit(')');\n  };\n  _proto.compileFilter = function compileFilter(node, frame) {\n    var name = node.name;\n    this.assertType(name, nodes.Symbol);\n    this._emit('env.getFilter(\"' + name.value + '\").call(context, ');\n    this._compileAggregate(node.args, frame);\n    this._emit(')');\n  };\n  _proto.compileFilterAsync = function compileFilterAsync(node, frame) {\n    var name = node.name;\n    var symbol = node.symbol.value;\n    this.assertType(name, nodes.Symbol);\n    frame.set(symbol, symbol);\n    this._emit('env.getFilter(\"' + name.value + '\").call(context, ');\n    this._compileAggregate(node.args, frame);\n    this._emitLine(', ' + this._makeCallback(symbol));\n    this._addScopeLevel();\n  };\n  _proto.compileKeywordArgs = function compileKeywordArgs(node, frame) {\n    this._emit('runtime.makeKeywordArgs(');\n    this.compileDict(node, frame);\n    this._emit(')');\n  };\n  _proto.compileSet = function compileSet(node, frame) {\n    var _this6 = this;\n    var ids = [];\n\n    // Lookup the variable names for each identifier and create\n    // new ones if necessary\n    node.targets.forEach(function (target) {\n      var name = target.value;\n      var id = frame.lookup(name);\n      if (id === null || id === undefined) {\n        id = _this6._tmpid();\n\n        // Note: This relies on js allowing scope across\n        // blocks, in case this is created inside an `if`\n        _this6._emitLine('var ' + id + ';');\n      }\n      ids.push(id);\n    });\n    if (node.value) {\n      this._emit(ids.join(' = ') + ' = ');\n      this._compileExpression(node.value, frame);\n      this._emitLine(';');\n    } else {\n      this._emit(ids.join(' = ') + ' = ');\n      this.compile(node.body, frame);\n      this._emitLine(';');\n    }\n    node.targets.forEach(function (target, i) {\n      var id = ids[i];\n      var name = target.value;\n\n      // We are running this for every var, but it's very\n      // uncommon to assign to multiple vars anyway\n      _this6._emitLine(\"frame.set(\\\"\" + name + \"\\\", \" + id + \", true);\");\n      _this6._emitLine('if(frame.topLevel) {');\n      _this6._emitLine(\"context.setVariable(\\\"\" + name + \"\\\", \" + id + \");\");\n      _this6._emitLine('}');\n      if (name.charAt(0) !== '_') {\n        _this6._emitLine('if(frame.topLevel) {');\n        _this6._emitLine(\"context.addExport(\\\"\" + name + \"\\\", \" + id + \");\");\n        _this6._emitLine('}');\n      }\n    });\n  };\n  _proto.compileSwitch = function compileSwitch(node, frame) {\n    var _this7 = this;\n    this._emit('switch (');\n    this.compile(node.expr, frame);\n    this._emit(') {');\n    node.cases.forEach(function (c, i) {\n      _this7._emit('case ');\n      _this7.compile(c.cond, frame);\n      _this7._emit(': ');\n      _this7.compile(c.body, frame);\n      // preserve fall-throughs\n      if (c.body.children.length) {\n        _this7._emitLine('break;');\n      }\n    });\n    if (node.default) {\n      this._emit('default:');\n      this.compile(node.default, frame);\n    }\n    this._emit('}');\n  };\n  _proto.compileIf = function compileIf(node, frame, async) {\n    var _this8 = this;\n    this._emit('if(');\n    this._compileExpression(node.cond, frame);\n    this._emitLine(') {');\n    this._withScopedSyntax(function () {\n      _this8.compile(node.body, frame);\n      if (async) {\n        _this8._emit('cb()');\n      }\n    });\n    if (node.else_) {\n      this._emitLine('}\\nelse {');\n      this._withScopedSyntax(function () {\n        _this8.compile(node.else_, frame);\n        if (async) {\n          _this8._emit('cb()');\n        }\n      });\n    } else if (async) {\n      this._emitLine('}\\nelse {');\n      this._emit('cb()');\n    }\n    this._emitLine('}');\n  };\n  _proto.compileIfAsync = function compileIfAsync(node, frame) {\n    this._emit('(function(cb) {');\n    this.compileIf(node, frame, true);\n    this._emit('})(' + this._makeCallback());\n    this._addScopeLevel();\n  };\n  _proto._emitLoopBindings = function _emitLoopBindings(node, arr, i, len) {\n    var _this9 = this;\n    var bindings = [{\n      name: 'index',\n      val: i + \" + 1\"\n    }, {\n      name: 'index0',\n      val: i\n    }, {\n      name: 'revindex',\n      val: len + \" - \" + i\n    }, {\n      name: 'revindex0',\n      val: len + \" - \" + i + \" - 1\"\n    }, {\n      name: 'first',\n      val: i + \" === 0\"\n    }, {\n      name: 'last',\n      val: i + \" === \" + len + \" - 1\"\n    }, {\n      name: 'length',\n      val: len\n    }];\n    bindings.forEach(function (b) {\n      _this9._emitLine(\"frame.set(\\\"loop.\" + b.name + \"\\\", \" + b.val + \");\");\n    });\n  };\n  _proto.compileFor = function compileFor(node, frame) {\n    var _this10 = this;\n    // Some of this code is ugly, but it keeps the generated code\n    // as fast as possible. ForAsync also shares some of this, but\n    // not much.\n\n    var i = this._tmpid();\n    var len = this._tmpid();\n    var arr = this._tmpid();\n    frame = frame.push();\n    this._emitLine('frame = frame.push();');\n    this._emit(\"var \" + arr + \" = \");\n    this._compileExpression(node.arr, frame);\n    this._emitLine(';');\n    this._emit(\"if(\" + arr + \") {\");\n    this._emitLine(arr + ' = runtime.fromIterator(' + arr + ');');\n\n    // If multiple names are passed, we need to bind them\n    // appropriately\n    if (node.name instanceof nodes.Array) {\n      this._emitLine(\"var \" + i + \";\");\n\n      // The object could be an arroy or object. Note that the\n      // body of the loop is duplicated for each condition, but\n      // we are optimizing for speed over size.\n      this._emitLine(\"if(runtime.isArray(\" + arr + \")) {\");\n      this._emitLine(\"var \" + len + \" = \" + arr + \".length;\");\n      this._emitLine(\"for(\" + i + \"=0; \" + i + \" < \" + arr + \".length; \" + i + \"++) {\");\n\n      // Bind each declared var\n      node.name.children.forEach(function (child, u) {\n        var tid = _this10._tmpid();\n        _this10._emitLine(\"var \" + tid + \" = \" + arr + \"[\" + i + \"][\" + u + \"];\");\n        _this10._emitLine(\"frame.set(\\\"\" + child + \"\\\", \" + arr + \"[\" + i + \"][\" + u + \"]);\");\n        frame.set(node.name.children[u].value, tid);\n      });\n      this._emitLoopBindings(node, arr, i, len);\n      this._withScopedSyntax(function () {\n        _this10.compile(node.body, frame);\n      });\n      this._emitLine('}');\n      this._emitLine('} else {');\n      // Iterate over the key/values of an object\n      var _node$name$children = node.name.children,\n        key = _node$name$children[0],\n        val = _node$name$children[1];\n      var k = this._tmpid();\n      var v = this._tmpid();\n      frame.set(key.value, k);\n      frame.set(val.value, v);\n      this._emitLine(i + \" = -1;\");\n      this._emitLine(\"var \" + len + \" = runtime.keys(\" + arr + \").length;\");\n      this._emitLine(\"for(var \" + k + \" in \" + arr + \") {\");\n      this._emitLine(i + \"++;\");\n      this._emitLine(\"var \" + v + \" = \" + arr + \"[\" + k + \"];\");\n      this._emitLine(\"frame.set(\\\"\" + key.value + \"\\\", \" + k + \");\");\n      this._emitLine(\"frame.set(\\\"\" + val.value + \"\\\", \" + v + \");\");\n      this._emitLoopBindings(node, arr, i, len);\n      this._withScopedSyntax(function () {\n        _this10.compile(node.body, frame);\n      });\n      this._emitLine('}');\n      this._emitLine('}');\n    } else {\n      // Generate a typical array iteration\n      var _v = this._tmpid();\n      frame.set(node.name.value, _v);\n      this._emitLine(\"var \" + len + \" = \" + arr + \".length;\");\n      this._emitLine(\"for(var \" + i + \"=0; \" + i + \" < \" + arr + \".length; \" + i + \"++) {\");\n      this._emitLine(\"var \" + _v + \" = \" + arr + \"[\" + i + \"];\");\n      this._emitLine(\"frame.set(\\\"\" + node.name.value + \"\\\", \" + _v + \");\");\n      this._emitLoopBindings(node, arr, i, len);\n      this._withScopedSyntax(function () {\n        _this10.compile(node.body, frame);\n      });\n      this._emitLine('}');\n    }\n    this._emitLine('}');\n    if (node.else_) {\n      this._emitLine('if (!' + len + ') {');\n      this.compile(node.else_, frame);\n      this._emitLine('}');\n    }\n    this._emitLine('frame = frame.pop();');\n  };\n  _proto._compileAsyncLoop = function _compileAsyncLoop(node, frame, parallel) {\n    var _this11 = this;\n    // This shares some code with the For tag, but not enough to\n    // worry about. This iterates across an object asynchronously,\n    // but not in parallel.\n\n    var i = this._tmpid();\n    var len = this._tmpid();\n    var arr = this._tmpid();\n    var asyncMethod = parallel ? 'asyncAll' : 'asyncEach';\n    frame = frame.push();\n    this._emitLine('frame = frame.push();');\n    this._emit('var ' + arr + ' = runtime.fromIterator(');\n    this._compileExpression(node.arr, frame);\n    this._emitLine(');');\n    if (node.name instanceof nodes.Array) {\n      var arrayLen = node.name.children.length;\n      this._emit(\"runtime.\" + asyncMethod + \"(\" + arr + \", \" + arrayLen + \", function(\");\n      node.name.children.forEach(function (name) {\n        _this11._emit(name.value + \",\");\n      });\n      this._emit(i + ',' + len + ',next) {');\n      node.name.children.forEach(function (name) {\n        var id = name.value;\n        frame.set(id, id);\n        _this11._emitLine(\"frame.set(\\\"\" + id + \"\\\", \" + id + \");\");\n      });\n    } else {\n      var id = node.name.value;\n      this._emitLine(\"runtime.\" + asyncMethod + \"(\" + arr + \", 1, function(\" + id + \", \" + i + \", \" + len + \",next) {\");\n      this._emitLine('frame.set(\"' + id + '\", ' + id + ');');\n      frame.set(id, id);\n    }\n    this._emitLoopBindings(node, arr, i, len);\n    this._withScopedSyntax(function () {\n      var buf;\n      if (parallel) {\n        buf = _this11._pushBuffer();\n      }\n      _this11.compile(node.body, frame);\n      _this11._emitLine('next(' + i + (buf ? ',' + buf : '') + ');');\n      if (parallel) {\n        _this11._popBuffer();\n      }\n    });\n    var output = this._tmpid();\n    this._emitLine('}, ' + this._makeCallback(output));\n    this._addScopeLevel();\n    if (parallel) {\n      this._emitLine(this.buffer + ' += ' + output + ';');\n    }\n    if (node.else_) {\n      this._emitLine('if (!' + arr + '.length) {');\n      this.compile(node.else_, frame);\n      this._emitLine('}');\n    }\n    this._emitLine('frame = frame.pop();');\n  };\n  _proto.compileAsyncEach = function compileAsyncEach(node, frame) {\n    this._compileAsyncLoop(node, frame);\n  };\n  _proto.compileAsyncAll = function compileAsyncAll(node, frame) {\n    this._compileAsyncLoop(node, frame, true);\n  };\n  _proto._compileMacro = function _compileMacro(node, frame) {\n    var _this12 = this;\n    var args = [];\n    var kwargs = null;\n    var funcId = 'macro_' + this._tmpid();\n    var keepFrame = frame !== undefined;\n\n    // Type check the definition of the args\n    node.args.children.forEach(function (arg, i) {\n      if (i === node.args.children.length - 1 && arg instanceof nodes.Dict) {\n        kwargs = arg;\n      } else {\n        _this12.assertType(arg, nodes.Symbol);\n        args.push(arg);\n      }\n    });\n    var realNames = [].concat(args.map(function (n) {\n      return \"l_\" + n.value;\n    }), ['kwargs']);\n\n    // Quoted argument names\n    var argNames = args.map(function (n) {\n      return \"\\\"\" + n.value + \"\\\"\";\n    });\n    var kwargNames = (kwargs && kwargs.children || []).map(function (n) {\n      return \"\\\"\" + n.key.value + \"\\\"\";\n    });\n\n    // We pass a function to makeMacro which destructures the\n    // arguments so support setting positional args with keywords\n    // args and passing keyword args as positional args\n    // (essentially default values). See runtime.js.\n    var currFrame;\n    if (keepFrame) {\n      currFrame = frame.push(true);\n    } else {\n      currFrame = new Frame();\n    }\n    this._emitLines(\"var \" + funcId + \" = runtime.makeMacro(\", \"[\" + argNames.join(', ') + \"], \", \"[\" + kwargNames.join(', ') + \"], \", \"function (\" + realNames.join(', ') + \") {\", 'var callerFrame = frame;', 'frame = ' + (keepFrame ? 'frame.push(true);' : 'new runtime.Frame();'), 'kwargs = kwargs || {};', 'if (Object.prototype.hasOwnProperty.call(kwargs, \"caller\")) {', 'frame.set(\"caller\", kwargs.caller); }');\n\n    // Expose the arguments to the template. Don't need to use\n    // random names because the function\n    // will create a new run-time scope for us\n    args.forEach(function (arg) {\n      _this12._emitLine(\"frame.set(\\\"\" + arg.value + \"\\\", l_\" + arg.value + \");\");\n      currFrame.set(arg.value, \"l_\" + arg.value);\n    });\n\n    // Expose the keyword arguments\n    if (kwargs) {\n      kwargs.children.forEach(function (pair) {\n        var name = pair.key.value;\n        _this12._emit(\"frame.set(\\\"\" + name + \"\\\", \");\n        _this12._emit(\"Object.prototype.hasOwnProperty.call(kwargs, \\\"\" + name + \"\\\")\");\n        _this12._emit(\" ? kwargs[\\\"\" + name + \"\\\"] : \");\n        _this12._compileExpression(pair.value, currFrame);\n        _this12._emit(');');\n      });\n    }\n    var bufferId = this._pushBuffer();\n    this._withScopedSyntax(function () {\n      _this12.compile(node.body, currFrame);\n    });\n    this._emitLine('frame = ' + (keepFrame ? 'frame.pop();' : 'callerFrame;'));\n    this._emitLine(\"return new runtime.SafeString(\" + bufferId + \");\");\n    this._emitLine('});');\n    this._popBuffer();\n    return funcId;\n  };\n  _proto.compileMacro = function compileMacro(node, frame) {\n    var funcId = this._compileMacro(node);\n\n    // Expose the macro to the templates\n    var name = node.name.value;\n    frame.set(name, funcId);\n    if (frame.parent) {\n      this._emitLine(\"frame.set(\\\"\" + name + \"\\\", \" + funcId + \");\");\n    } else {\n      if (node.name.value.charAt(0) !== '_') {\n        this._emitLine(\"context.addExport(\\\"\" + name + \"\\\");\");\n      }\n      this._emitLine(\"context.setVariable(\\\"\" + name + \"\\\", \" + funcId + \");\");\n    }\n  };\n  _proto.compileCaller = function compileCaller(node, frame) {\n    // basically an anonymous \"macro expression\"\n    this._emit('(function (){');\n    var funcId = this._compileMacro(node, frame);\n    this._emit(\"return \" + funcId + \";})()\");\n  };\n  _proto._compileGetTemplate = function _compileGetTemplate(node, frame, eagerCompile, ignoreMissing) {\n    var parentTemplateId = this._tmpid();\n    var parentName = this._templateName();\n    var cb = this._makeCallback(parentTemplateId);\n    var eagerCompileArg = eagerCompile ? 'true' : 'false';\n    var ignoreMissingArg = ignoreMissing ? 'true' : 'false';\n    this._emit('env.getTemplate(');\n    this._compileExpression(node.template, frame);\n    this._emitLine(\", \" + eagerCompileArg + \", \" + parentName + \", \" + ignoreMissingArg + \", \" + cb);\n    return parentTemplateId;\n  };\n  _proto.compileImport = function compileImport(node, frame) {\n    var target = node.target.value;\n    var id = this._compileGetTemplate(node, frame, false, false);\n    this._addScopeLevel();\n    this._emitLine(id + '.getExported(' + (node.withContext ? 'context.getVariables(), frame, ' : '') + this._makeCallback(id));\n    this._addScopeLevel();\n    frame.set(target, id);\n    if (frame.parent) {\n      this._emitLine(\"frame.set(\\\"\" + target + \"\\\", \" + id + \");\");\n    } else {\n      this._emitLine(\"context.setVariable(\\\"\" + target + \"\\\", \" + id + \");\");\n    }\n  };\n  _proto.compileFromImport = function compileFromImport(node, frame) {\n    var _this13 = this;\n    var importedId = this._compileGetTemplate(node, frame, false, false);\n    this._addScopeLevel();\n    this._emitLine(importedId + '.getExported(' + (node.withContext ? 'context.getVariables(), frame, ' : '') + this._makeCallback(importedId));\n    this._addScopeLevel();\n    node.names.children.forEach(function (nameNode) {\n      var name;\n      var alias;\n      var id = _this13._tmpid();\n      if (nameNode instanceof nodes.Pair) {\n        name = nameNode.key.value;\n        alias = nameNode.value.value;\n      } else {\n        name = nameNode.value;\n        alias = name;\n      }\n      _this13._emitLine(\"if(Object.prototype.hasOwnProperty.call(\" + importedId + \", \\\"\" + name + \"\\\")) {\");\n      _this13._emitLine(\"var \" + id + \" = \" + importedId + \".\" + name + \";\");\n      _this13._emitLine('} else {');\n      _this13._emitLine(\"cb(new Error(\\\"cannot import '\" + name + \"'\\\")); return;\");\n      _this13._emitLine('}');\n      frame.set(alias, id);\n      if (frame.parent) {\n        _this13._emitLine(\"frame.set(\\\"\" + alias + \"\\\", \" + id + \");\");\n      } else {\n        _this13._emitLine(\"context.setVariable(\\\"\" + alias + \"\\\", \" + id + \");\");\n      }\n    });\n  };\n  _proto.compileBlock = function compileBlock(node) {\n    var id = this._tmpid();\n\n    // If we are executing outside a block (creating a top-level\n    // block), we really don't want to execute its code because it\n    // will execute twice: once when the child template runs and\n    // again when the parent template runs. Note that blocks\n    // within blocks will *always* execute immediately *and*\n    // wherever else they are invoked (like used in a parent\n    // template). This may have behavioral differences from jinja\n    // because blocks can have side effects, but it seems like a\n    // waste of performance to always execute huge top-level\n    // blocks twice\n    if (!this.inBlock) {\n      this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(\"\"); } : ');\n    }\n    this._emit(\"context.getBlock(\\\"\" + node.name.value + \"\\\")\");\n    if (!this.inBlock) {\n      this._emit(')');\n    }\n    this._emitLine('(env, context, frame, runtime, ' + this._makeCallback(id));\n    this._emitLine(this.buffer + \" += \" + id + \";\");\n    this._addScopeLevel();\n  };\n  _proto.compileSuper = function compileSuper(node, frame) {\n    var name = node.blockName.value;\n    var id = node.symbol.value;\n    var cb = this._makeCallback(id);\n    this._emitLine(\"context.getSuper(env, \\\"\" + name + \"\\\", b_\" + name + \", frame, runtime, \" + cb);\n    this._emitLine(id + \" = runtime.markSafe(\" + id + \");\");\n    this._addScopeLevel();\n    frame.set(id, id);\n  };\n  _proto.compileExtends = function compileExtends(node, frame) {\n    var k = this._tmpid();\n    var parentTemplateId = this._compileGetTemplate(node, frame, true, false);\n\n    // extends is a dynamic tag and can occur within a block like\n    // `if`, so if this happens we need to capture the parent\n    // template in the top-level scope\n    this._emitLine(\"parentTemplate = \" + parentTemplateId);\n    this._emitLine(\"for(var \" + k + \" in parentTemplate.blocks) {\");\n    this._emitLine(\"context.addBlock(\" + k + \", parentTemplate.blocks[\" + k + \"]);\");\n    this._emitLine('}');\n    this._addScopeLevel();\n  };\n  _proto.compileInclude = function compileInclude(node, frame) {\n    this._emitLine('var tasks = [];');\n    this._emitLine('tasks.push(');\n    this._emitLine('function(callback) {');\n    var id = this._compileGetTemplate(node, frame, false, node.ignoreMissing);\n    this._emitLine(\"callback(null,\" + id + \");});\");\n    this._emitLine('});');\n    var id2 = this._tmpid();\n    this._emitLine('tasks.push(');\n    this._emitLine('function(template, callback){');\n    this._emitLine('template.render(context.getVariables(), frame, ' + this._makeCallback(id2));\n    this._emitLine('callback(null,' + id2 + ');});');\n    this._emitLine('});');\n    this._emitLine('tasks.push(');\n    this._emitLine('function(result, callback){');\n    this._emitLine(this.buffer + \" += result;\");\n    this._emitLine('callback(null);');\n    this._emitLine('});');\n    this._emitLine('env.waterfall(tasks, function(){');\n    this._addScopeLevel();\n  };\n  _proto.compileTemplateData = function compileTemplateData(node, frame) {\n    this.compileLiteral(node, frame);\n  };\n  _proto.compileCapture = function compileCapture(node, frame) {\n    var _this14 = this;\n    // we need to temporarily override the current buffer id as 'output'\n    // so the set block writes to the capture output instead of the buffer\n    var buffer = this.buffer;\n    this.buffer = 'output';\n    this._emitLine('(function() {');\n    this._emitLine('var output = \"\";');\n    this._withScopedSyntax(function () {\n      _this14.compile(node.body, frame);\n    });\n    this._emitLine('return output;');\n    this._emitLine('})()');\n    // and of course, revert back to the old buffer id\n    this.buffer = buffer;\n  };\n  _proto.compileOutput = function compileOutput(node, frame) {\n    var _this15 = this;\n    var children = node.children;\n    children.forEach(function (child) {\n      // TemplateData is a special case because it is never\n      // autoescaped, so simply output it for optimization\n      if (child instanceof nodes.TemplateData) {\n        if (child.value) {\n          _this15._emit(_this15.buffer + \" += \");\n          _this15.compileLiteral(child, frame);\n          _this15._emitLine(';');\n        }\n      } else {\n        _this15._emit(_this15.buffer + \" += runtime.suppressValue(\");\n        if (_this15.throwOnUndefined) {\n          _this15._emit('runtime.ensureDefined(');\n        }\n        _this15.compile(child, frame);\n        if (_this15.throwOnUndefined) {\n          _this15._emit(\",\" + node.lineno + \",\" + node.colno + \")\");\n        }\n        _this15._emit(', env.opts.autoescape);\\n');\n      }\n    });\n  };\n  _proto.compileRoot = function compileRoot(node, frame) {\n    var _this16 = this;\n    if (frame) {\n      this.fail('compileRoot: root node can\\'t have frame');\n    }\n    frame = new Frame();\n    this._emitFuncBegin(node, 'root');\n    this._emitLine('var parentTemplate = null;');\n    this._compileChildren(node, frame);\n    this._emitLine('if(parentTemplate) {');\n    this._emitLine('parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);');\n    this._emitLine('} else {');\n    this._emitLine(\"cb(null, \" + this.buffer + \");\");\n    this._emitLine('}');\n    this._emitFuncEnd(true);\n    this.inBlock = true;\n    var blockNames = [];\n    var blocks = node.findAll(nodes.Block);\n    blocks.forEach(function (block, i) {\n      var name = block.name.value;\n      if (blockNames.indexOf(name) !== -1) {\n        throw new Error(\"Block \\\"\" + name + \"\\\" defined more than once.\");\n      }\n      blockNames.push(name);\n      _this16._emitFuncBegin(block, \"b_\" + name);\n      var tmpFrame = new Frame();\n      _this16._emitLine('var frame = frame.push(true);');\n      _this16.compile(block.body, tmpFrame);\n      _this16._emitFuncEnd();\n    });\n    this._emitLine('return {');\n    blocks.forEach(function (block, i) {\n      var blockName = \"b_\" + block.name.value;\n      _this16._emitLine(blockName + \": \" + blockName + \",\");\n    });\n    this._emitLine('root: root\\n};');\n  };\n  _proto.compile = function compile(node, frame) {\n    var _compile = this['compile' + node.typename];\n    if (_compile) {\n      _compile.call(this, node, frame);\n    } else {\n      this.fail(\"compile: Cannot compile node: \" + node.typename, node.lineno, node.colno);\n    }\n  };\n  _proto.getCode = function getCode() {\n    return this.codebuf.join('');\n  };\n  return Compiler;\n}(Obj);\nmodule.exports = {\n  compile: function compile(src, asyncFilters, extensions, name, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    var c = new Compiler(name, opts.throwOnUndefined);\n\n    // Run the extension preprocessors against the source.\n    var preprocessors = (extensions || []).map(function (ext) {\n      return ext.preprocess;\n    }).filter(function (f) {\n      return !!f;\n    });\n    var processedSrc = preprocessors.reduce(function (s, processor) {\n      return processor(s);\n    }, src);\n    c.compile(transformer.transform(parser.parse(processedSrc, extensions, opts), asyncFilters, name));\n    return c.getCode();\n  },\n  Compiler: Compiler\n};", "'use strict';\n\nvar lib = require('./lib');\nvar r = require('./runtime');\nvar _exports = module.exports = {};\nfunction normalize(value, defaultValue) {\n  if (value === null || value === undefined || value === false) {\n    return defaultValue;\n  }\n  return value;\n}\n_exports.abs = Math.abs;\nfunction isNaN(num) {\n  return num !== num; // eslint-disable-line no-self-compare\n}\n\nfunction batch(arr, linecount, fillWith) {\n  var i;\n  var res = [];\n  var tmp = [];\n  for (i = 0; i < arr.length; i++) {\n    if (i % linecount === 0 && tmp.length) {\n      res.push(tmp);\n      tmp = [];\n    }\n    tmp.push(arr[i]);\n  }\n  if (tmp.length) {\n    if (fillWith) {\n      for (i = tmp.length; i < linecount; i++) {\n        tmp.push(fillWith);\n      }\n    }\n    res.push(tmp);\n  }\n  return res;\n}\n_exports.batch = batch;\nfunction capitalize(str) {\n  str = normalize(str, '');\n  var ret = str.toLowerCase();\n  return r.copySafeness(str, ret.charAt(0).toUpperCase() + ret.slice(1));\n}\n_exports.capitalize = capitalize;\nfunction center(str, width) {\n  str = normalize(str, '');\n  width = width || 80;\n  if (str.length >= width) {\n    return str;\n  }\n  var spaces = width - str.length;\n  var pre = lib.repeat(' ', spaces / 2 - spaces % 2);\n  var post = lib.repeat(' ', spaces / 2);\n  return r.copySafeness(str, pre + str + post);\n}\n_exports.center = center;\nfunction default_(val, def, bool) {\n  if (bool) {\n    return val || def;\n  } else {\n    return val !== undefined ? val : def;\n  }\n}\n\n// TODO: it is confusing to export something called 'default'\n_exports['default'] = default_; // eslint-disable-line dot-notation\n\nfunction dictsort(val, caseSensitive, by) {\n  if (!lib.isObject(val)) {\n    throw new lib.TemplateError('dictsort filter: val must be an object');\n  }\n  var array = [];\n  // deliberately include properties from the object's prototype\n  for (var k in val) {\n    // eslint-disable-line guard-for-in, no-restricted-syntax\n    array.push([k, val[k]]);\n  }\n  var si;\n  if (by === undefined || by === 'key') {\n    si = 0;\n  } else if (by === 'value') {\n    si = 1;\n  } else {\n    throw new lib.TemplateError('dictsort filter: You can only sort by either key or value');\n  }\n  array.sort(function (t1, t2) {\n    var a = t1[si];\n    var b = t2[si];\n    if (!caseSensitive) {\n      if (lib.isString(a)) {\n        a = a.toUpperCase();\n      }\n      if (lib.isString(b)) {\n        b = b.toUpperCase();\n      }\n    }\n    return a > b ? 1 : a === b ? 0 : -1; // eslint-disable-line no-nested-ternary\n  });\n\n  return array;\n}\n_exports.dictsort = dictsort;\nfunction dump(obj, spaces) {\n  return JSON.stringify(obj, null, spaces);\n}\n_exports.dump = dump;\nfunction escape(str) {\n  if (str instanceof r.SafeString) {\n    return str;\n  }\n  str = str === null || str === undefined ? '' : str;\n  return r.markSafe(lib.escape(str.toString()));\n}\n_exports.escape = escape;\nfunction safe(str) {\n  if (str instanceof r.SafeString) {\n    return str;\n  }\n  str = str === null || str === undefined ? '' : str;\n  return r.markSafe(str.toString());\n}\n_exports.safe = safe;\nfunction first(arr) {\n  return arr[0];\n}\n_exports.first = first;\nfunction forceescape(str) {\n  str = str === null || str === undefined ? '' : str;\n  return r.markSafe(lib.escape(str.toString()));\n}\n_exports.forceescape = forceescape;\nfunction groupby(arr, attr) {\n  return lib.groupBy(arr, attr, this.env.opts.throwOnUndefined);\n}\n_exports.groupby = groupby;\nfunction indent(str, width, indentfirst) {\n  str = normalize(str, '');\n  if (str === '') {\n    return '';\n  }\n  width = width || 4;\n  // let res = '';\n  var lines = str.split('\\n');\n  var sp = lib.repeat(' ', width);\n  var res = lines.map(function (l, i) {\n    return i === 0 && !indentfirst ? l : \"\" + sp + l;\n  }).join('\\n');\n  return r.copySafeness(str, res);\n}\n_exports.indent = indent;\nfunction join(arr, del, attr) {\n  del = del || '';\n  if (attr) {\n    arr = lib.map(arr, function (v) {\n      return v[attr];\n    });\n  }\n  return arr.join(del);\n}\n_exports.join = join;\nfunction last(arr) {\n  return arr[arr.length - 1];\n}\n_exports.last = last;\nfunction lengthFilter(val) {\n  var value = normalize(val, '');\n  if (value !== undefined) {\n    if (typeof Map === 'function' && value instanceof Map || typeof Set === 'function' && value instanceof Set) {\n      // ECMAScript 2015 Maps and Sets\n      return value.size;\n    }\n    if (lib.isObject(value) && !(value instanceof r.SafeString)) {\n      // Objects (besides SafeStrings), non-primative Arrays\n      return lib.keys(value).length;\n    }\n    return value.length;\n  }\n  return 0;\n}\n_exports.length = lengthFilter;\nfunction list(val) {\n  if (lib.isString(val)) {\n    return val.split('');\n  } else if (lib.isObject(val)) {\n    return lib._entries(val || {}).map(function (_ref) {\n      var key = _ref[0],\n        value = _ref[1];\n      return {\n        key: key,\n        value: value\n      };\n    });\n  } else if (lib.isArray(val)) {\n    return val;\n  } else {\n    throw new lib.TemplateError('list filter: type not iterable');\n  }\n}\n_exports.list = list;\nfunction lower(str) {\n  str = normalize(str, '');\n  return str.toLowerCase();\n}\n_exports.lower = lower;\nfunction nl2br(str) {\n  if (str === null || str === undefined) {\n    return '';\n  }\n  return r.copySafeness(str, str.replace(/\\r\\n|\\n/g, '<br />\\n'));\n}\n_exports.nl2br = nl2br;\nfunction random(arr) {\n  return arr[Math.floor(Math.random() * arr.length)];\n}\n_exports.random = random;\n\n/**\n * Construct select or reject filter\n *\n * @param {boolean} expectedTestResult\n * @returns {function(array, string, *): array}\n */\nfunction getSelectOrReject(expectedTestResult) {\n  function filter(arr, testName, secondArg) {\n    if (testName === void 0) {\n      testName = 'truthy';\n    }\n    var context = this;\n    var test = context.env.getTest(testName);\n    return lib.toArray(arr).filter(function examineTestResult(item) {\n      return test.call(context, item, secondArg) === expectedTestResult;\n    });\n  }\n  return filter;\n}\n_exports.reject = getSelectOrReject(false);\nfunction rejectattr(arr, attr) {\n  return arr.filter(function (item) {\n    return !item[attr];\n  });\n}\n_exports.rejectattr = rejectattr;\n_exports.select = getSelectOrReject(true);\nfunction selectattr(arr, attr) {\n  return arr.filter(function (item) {\n    return !!item[attr];\n  });\n}\n_exports.selectattr = selectattr;\nfunction replace(str, old, new_, maxCount) {\n  var originalStr = str;\n  if (old instanceof RegExp) {\n    return str.replace(old, new_);\n  }\n  if (typeof maxCount === 'undefined') {\n    maxCount = -1;\n  }\n  var res = ''; // Output\n\n  // Cast Numbers in the search term to string\n  if (typeof old === 'number') {\n    old = '' + old;\n  } else if (typeof old !== 'string') {\n    // If it is something other than number or string,\n    // return the original string\n    return str;\n  }\n\n  // Cast numbers in the replacement to string\n  if (typeof str === 'number') {\n    str = '' + str;\n  }\n\n  // If by now, we don't have a string, throw it back\n  if (typeof str !== 'string' && !(str instanceof r.SafeString)) {\n    return str;\n  }\n\n  // ShortCircuits\n  if (old === '') {\n    // Mimic the python behaviour: empty string is replaced\n    // by replacement e.g. \"abc\"|replace(\"\", \".\") -> .a.b.c.\n    res = new_ + str.split('').join(new_) + new_;\n    return r.copySafeness(str, res);\n  }\n  var nextIndex = str.indexOf(old);\n  // if # of replacements to perform is 0, or the string to does\n  // not contain the old value, return the string\n  if (maxCount === 0 || nextIndex === -1) {\n    return str;\n  }\n  var pos = 0;\n  var count = 0; // # of replacements made\n\n  while (nextIndex > -1 && (maxCount === -1 || count < maxCount)) {\n    // Grab the next chunk of src string and add it with the\n    // replacement, to the result\n    res += str.substring(pos, nextIndex) + new_;\n    // Increment our pointer in the src string\n    pos = nextIndex + old.length;\n    count++;\n    // See if there are any more replacements to be made\n    nextIndex = str.indexOf(old, pos);\n  }\n\n  // We've either reached the end, or done the max # of\n  // replacements, tack on any remaining string\n  if (pos < str.length) {\n    res += str.substring(pos);\n  }\n  return r.copySafeness(originalStr, res);\n}\n_exports.replace = replace;\nfunction reverse(val) {\n  var arr;\n  if (lib.isString(val)) {\n    arr = list(val);\n  } else {\n    // Copy it\n    arr = lib.map(val, function (v) {\n      return v;\n    });\n  }\n  arr.reverse();\n  if (lib.isString(val)) {\n    return r.copySafeness(val, arr.join(''));\n  }\n  return arr;\n}\n_exports.reverse = reverse;\nfunction round(val, precision, method) {\n  precision = precision || 0;\n  var factor = Math.pow(10, precision);\n  var rounder;\n  if (method === 'ceil') {\n    rounder = Math.ceil;\n  } else if (method === 'floor') {\n    rounder = Math.floor;\n  } else {\n    rounder = Math.round;\n  }\n  return rounder(val * factor) / factor;\n}\n_exports.round = round;\nfunction slice(arr, slices, fillWith) {\n  var sliceLength = Math.floor(arr.length / slices);\n  var extra = arr.length % slices;\n  var res = [];\n  var offset = 0;\n  for (var i = 0; i < slices; i++) {\n    var start = offset + i * sliceLength;\n    if (i < extra) {\n      offset++;\n    }\n    var end = offset + (i + 1) * sliceLength;\n    var currSlice = arr.slice(start, end);\n    if (fillWith && i >= extra) {\n      currSlice.push(fillWith);\n    }\n    res.push(currSlice);\n  }\n  return res;\n}\n_exports.slice = slice;\nfunction sum(arr, attr, start) {\n  if (start === void 0) {\n    start = 0;\n  }\n  if (attr) {\n    arr = lib.map(arr, function (v) {\n      return v[attr];\n    });\n  }\n  return start + arr.reduce(function (a, b) {\n    return a + b;\n  }, 0);\n}\n_exports.sum = sum;\n_exports.sort = r.makeMacro(['value', 'reverse', 'case_sensitive', 'attribute'], [], function sortFilter(arr, reversed, caseSens, attr) {\n  var _this = this;\n  // Copy it\n  var array = lib.map(arr, function (v) {\n    return v;\n  });\n  var getAttribute = lib.getAttrGetter(attr);\n  array.sort(function (a, b) {\n    var x = attr ? getAttribute(a) : a;\n    var y = attr ? getAttribute(b) : b;\n    if (_this.env.opts.throwOnUndefined && attr && (x === undefined || y === undefined)) {\n      throw new TypeError(\"sort: attribute \\\"\" + attr + \"\\\" resolved to undefined\");\n    }\n    if (!caseSens && lib.isString(x) && lib.isString(y)) {\n      x = x.toLowerCase();\n      y = y.toLowerCase();\n    }\n    if (x < y) {\n      return reversed ? 1 : -1;\n    } else if (x > y) {\n      return reversed ? -1 : 1;\n    } else {\n      return 0;\n    }\n  });\n  return array;\n});\nfunction string(obj) {\n  return r.copySafeness(obj, obj);\n}\n_exports.string = string;\nfunction striptags(input, preserveLinebreaks) {\n  input = normalize(input, '');\n  var tags = /<\\/?([a-z][a-z0-9]*)\\b[^>]*>|<!--[\\s\\S]*?-->/gi;\n  var trimmedInput = trim(input.replace(tags, ''));\n  var res = '';\n  if (preserveLinebreaks) {\n    res = trimmedInput.replace(/^ +| +$/gm, '') // remove leading and trailing spaces\n    .replace(/ +/g, ' ') // squash adjacent spaces\n    .replace(/(\\r\\n)/g, '\\n') // normalize linebreaks (CRLF -> LF)\n    .replace(/\\n\\n\\n+/g, '\\n\\n'); // squash abnormal adjacent linebreaks\n  } else {\n    res = trimmedInput.replace(/\\s+/gi, ' ');\n  }\n  return r.copySafeness(input, res);\n}\n_exports.striptags = striptags;\nfunction title(str) {\n  str = normalize(str, '');\n  var words = str.split(' ').map(function (word) {\n    return capitalize(word);\n  });\n  return r.copySafeness(str, words.join(' '));\n}\n_exports.title = title;\nfunction trim(str) {\n  return r.copySafeness(str, str.replace(/^\\s*|\\s*$/g, ''));\n}\n_exports.trim = trim;\nfunction truncate(input, length, killwords, end) {\n  var orig = input;\n  input = normalize(input, '');\n  length = length || 255;\n  if (input.length <= length) {\n    return input;\n  }\n  if (killwords) {\n    input = input.substring(0, length);\n  } else {\n    var idx = input.lastIndexOf(' ', length);\n    if (idx === -1) {\n      idx = length;\n    }\n    input = input.substring(0, idx);\n  }\n  input += end !== undefined && end !== null ? end : '...';\n  return r.copySafeness(orig, input);\n}\n_exports.truncate = truncate;\nfunction upper(str) {\n  str = normalize(str, '');\n  return str.toUpperCase();\n}\n_exports.upper = upper;\nfunction urlencode(obj) {\n  var enc = encodeURIComponent;\n  if (lib.isString(obj)) {\n    return enc(obj);\n  } else {\n    var keyvals = lib.isArray(obj) ? obj : lib._entries(obj);\n    return keyvals.map(function (_ref2) {\n      var k = _ref2[0],\n        v = _ref2[1];\n      return enc(k) + \"=\" + enc(v);\n    }).join('&');\n  }\n}\n_exports.urlencode = urlencode;\n\n// For the jinja regexp, see\n// https://github.com/mitsuhiko/jinja2/blob/f15b814dcba6aa12bc74d1f7d0c881d55f7126be/jinja2/utils.py#L20-L23\nvar puncRe = /^(?:\\(|<|&lt;)?(.*?)(?:\\.|,|\\)|\\n|&gt;)?$/;\n// from http://blog.gerv.net/2011/05/html5_email_address_regexp/\nvar emailRe = /^[\\w.!#$%&'*+\\-\\/=?\\^`{|}~]+@[a-z\\d\\-]+(\\.[a-z\\d\\-]+)+$/i;\nvar httpHttpsRe = /^https?:\\/\\/.*$/;\nvar wwwRe = /^www\\./;\nvar tldRe = /\\.(?:org|net|com)(?:\\:|\\/|$)/;\nfunction urlize(str, length, nofollow) {\n  if (isNaN(length)) {\n    length = Infinity;\n  }\n  var noFollowAttr = nofollow === true ? ' rel=\"nofollow\"' : '';\n  var words = str.split(/(\\s+)/).filter(function (word) {\n    // If the word has no length, bail. This can happen for str with\n    // trailing whitespace.\n    return word && word.length;\n  }).map(function (word) {\n    var matches = word.match(puncRe);\n    var possibleUrl = matches ? matches[1] : word;\n    var shortUrl = possibleUrl.substr(0, length);\n\n    // url that starts with http or https\n    if (httpHttpsRe.test(possibleUrl)) {\n      return \"<a href=\\\"\" + possibleUrl + \"\\\"\" + noFollowAttr + \">\" + shortUrl + \"</a>\";\n    }\n\n    // url that starts with www.\n    if (wwwRe.test(possibleUrl)) {\n      return \"<a href=\\\"http://\" + possibleUrl + \"\\\"\" + noFollowAttr + \">\" + shortUrl + \"</a>\";\n    }\n\n    // an email address of the form username@domain.tld\n    if (emailRe.test(possibleUrl)) {\n      return \"<a href=\\\"mailto:\" + possibleUrl + \"\\\">\" + possibleUrl + \"</a>\";\n    }\n\n    // url that ends in .com, .org or .net that is not an email address\n    if (tldRe.test(possibleUrl)) {\n      return \"<a href=\\\"http://\" + possibleUrl + \"\\\"\" + noFollowAttr + \">\" + shortUrl + \"</a>\";\n    }\n    return word;\n  });\n  return words.join('');\n}\n_exports.urlize = urlize;\nfunction wordcount(str) {\n  str = normalize(str, '');\n  var words = str ? str.match(/\\w+/g) : null;\n  return words ? words.length : null;\n}\n_exports.wordcount = wordcount;\nfunction float(val, def) {\n  var res = parseFloat(val);\n  return isNaN(res) ? def : res;\n}\n_exports.float = float;\nvar intFilter = r.makeMacro(['value', 'default', 'base'], [], function doInt(value, defaultValue, base) {\n  if (base === void 0) {\n    base = 10;\n  }\n  var res = parseInt(value, base);\n  return isNaN(res) ? defaultValue : res;\n});\n_exports.int = intFilter;\n\n// Aliases\n_exports.d = _exports.default;\n_exports.e = _exports.escape;", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar path = require('path');\nvar _require = require('./object'),\n  EmitterObj = _require.EmitterObj;\nmodule.exports = /*#__PURE__*/function (_EmitterObj) {\n  _inheritsLoose(Loader, _EmitterObj);\n  function Loader() {\n    return _EmitterObj.apply(this, arguments) || this;\n  }\n  var _proto = Loader.prototype;\n  _proto.resolve = function resolve(from, to) {\n    return path.resolve(path.dirname(from), to);\n  };\n  _proto.isRelative = function isRelative(filename) {\n    return filename.indexOf('./') === 0 || filename.indexOf('../') === 0;\n  };\n  return Loader;\n}(EmitterObj);", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar Loader = require('./loader');\nvar PrecompiledLoader = /*#__PURE__*/function (_Loader) {\n  _inheritsLoose(PrecompiledLoader, _Loader);\n  function PrecompiledLoader(compiledTemplates) {\n    var _this;\n    _this = _Loader.call(this) || this;\n    _this.precompiled = compiledTemplates || {};\n    return _this;\n  }\n  var _proto = PrecompiledLoader.prototype;\n  _proto.getSource = function getSource(name) {\n    if (this.precompiled[name]) {\n      return {\n        src: {\n          type: 'code',\n          obj: this.precompiled[name]\n        },\n        path: name\n      };\n    }\n    return null;\n  };\n  return PrecompiledLoader;\n}(Loader);\nmodule.exports = {\n  PrecompiledLoader: PrecompiledLoader\n};", "/* eslint-disable no-console */\n\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar fs = require('fs');\nvar path = require('path');\nvar Loader = require('./loader');\nvar _require = require('./precompiled-loader.js'),\n  PrecompiledLoader = _require.PrecompiledLoader;\nvar chokidar;\nvar FileSystemLoader = /*#__PURE__*/function (_Loader) {\n  _inheritsLoose(FileSystemLoader, _Loader);\n  function FileSystemLoader(searchPaths, opts) {\n    var _this;\n    _this = _Loader.call(this) || this;\n    if (typeof opts === 'boolean') {\n      console.log('[nunjucks] Warning: you passed a boolean as the second ' + 'argument to FileSystemLoader, but it now takes an options ' + 'object. See http://mozilla.github.io/nunjucks/api.html#filesystemloader');\n    }\n    opts = opts || {};\n    _this.pathsToNames = {};\n    _this.noCache = !!opts.noCache;\n    if (searchPaths) {\n      searchPaths = Array.isArray(searchPaths) ? searchPaths : [searchPaths];\n      // For windows, convert to forward slashes\n      _this.searchPaths = searchPaths.map(path.normalize);\n    } else {\n      _this.searchPaths = ['.'];\n    }\n    if (opts.watch) {\n      // Watch all the templates in the paths and fire an event when\n      // they change\n      try {\n        chokidar = require('chokidar'); // eslint-disable-line global-require\n      } catch (e) {\n        throw new Error('watch requires chokidar to be installed');\n      }\n      var paths = _this.searchPaths.filter(fs.existsSync);\n      var watcher = chokidar.watch(paths);\n      watcher.on('all', function (event, fullname) {\n        fullname = path.resolve(fullname);\n        if (event === 'change' && fullname in _this.pathsToNames) {\n          _this.emit('update', _this.pathsToNames[fullname], fullname);\n        }\n      });\n      watcher.on('error', function (error) {\n        console.log('Watcher error: ' + error);\n      });\n    }\n    return _this;\n  }\n  var _proto = FileSystemLoader.prototype;\n  _proto.getSource = function getSource(name) {\n    var fullpath = null;\n    var paths = this.searchPaths;\n    for (var i = 0; i < paths.length; i++) {\n      var basePath = path.resolve(paths[i]);\n      var p = path.resolve(paths[i], name);\n\n      // Only allow the current directory and anything\n      // underneath it to be searched\n      if (p.indexOf(basePath) === 0 && fs.existsSync(p)) {\n        fullpath = p;\n        break;\n      }\n    }\n    if (!fullpath) {\n      return null;\n    }\n    this.pathsToNames[fullpath] = name;\n    var source = {\n      src: fs.readFileSync(fullpath, 'utf-8'),\n      path: fullpath,\n      noCache: this.noCache\n    };\n    this.emit('load', name, source);\n    return source;\n  };\n  return FileSystemLoader;\n}(Loader);\nvar NodeResolveLoader = /*#__PURE__*/function (_Loader2) {\n  _inheritsLoose(NodeResolveLoader, _Loader2);\n  function NodeResolveLoader(opts) {\n    var _this2;\n    _this2 = _Loader2.call(this) || this;\n    opts = opts || {};\n    _this2.pathsToNames = {};\n    _this2.noCache = !!opts.noCache;\n    if (opts.watch) {\n      try {\n        chokidar = require('chokidar'); // eslint-disable-line global-require\n      } catch (e) {\n        throw new Error('watch requires chokidar to be installed');\n      }\n      _this2.watcher = chokidar.watch();\n      _this2.watcher.on('change', function (fullname) {\n        _this2.emit('update', _this2.pathsToNames[fullname], fullname);\n      });\n      _this2.watcher.on('error', function (error) {\n        console.log('Watcher error: ' + error);\n      });\n      _this2.on('load', function (name, source) {\n        _this2.watcher.add(source.path);\n      });\n    }\n    return _this2;\n  }\n  var _proto2 = NodeResolveLoader.prototype;\n  _proto2.getSource = function getSource(name) {\n    // Don't allow file-system traversal\n    if (/^\\.?\\.?(\\/|\\\\)/.test(name)) {\n      return null;\n    }\n    if (/^[A-Z]:/.test(name)) {\n      return null;\n    }\n    var fullpath;\n    try {\n      fullpath = require.resolve(name);\n    } catch (e) {\n      return null;\n    }\n    this.pathsToNames[fullpath] = name;\n    var source = {\n      src: fs.readFileSync(fullpath, 'utf-8'),\n      path: fullpath,\n      noCache: this.noCache\n    };\n    this.emit('load', name, source);\n    return source;\n  };\n  return NodeResolveLoader;\n}(Loader);\nmodule.exports = {\n  FileSystemLoader: FileSystemLoader,\n  PrecompiledLoader: PrecompiledLoader,\n  NodeResolveLoader: NodeResolveLoader\n};", "\"use strict\";\n\n// This file will automatically be rewired to web-loader.js when\n// building for the browser\nmodule.exports = require('./node-loaders');", "'use strict';\n\nvar SafeString = require('./runtime').SafeString;\n\n/**\n * Returns `true` if the object is a function, otherwise `false`.\n * @param { any } value\n * @returns { boolean }\n */\nfunction callable(value) {\n  return typeof value === 'function';\n}\nexports.callable = callable;\n\n/**\n * Returns `true` if the object is strictly not `undefined`.\n * @param { any } value\n * @returns { boolean }\n */\nfunction defined(value) {\n  return value !== undefined;\n}\nexports.defined = defined;\n\n/**\n * Returns `true` if the operand (one) is divisble by the test's argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction divisibleby(one, two) {\n  return one % two === 0;\n}\nexports.divisibleby = divisibleby;\n\n/**\n * Returns true if the string has been escaped (i.e., is a SafeString).\n * @param { any } value\n * @returns { boolean }\n */\nfunction escaped(value) {\n  return value instanceof SafeString;\n}\nexports.escaped = escaped;\n\n/**\n * Returns `true` if the arguments are strictly equal.\n * @param { any } one\n * @param { any } two\n */\nfunction equalto(one, two) {\n  return one === two;\n}\nexports.equalto = equalto;\n\n// Aliases\nexports.eq = exports.equalto;\nexports.sameas = exports.equalto;\n\n/**\n * Returns `true` if the value is evenly divisible by 2.\n * @param { number } value\n * @returns { boolean }\n */\nfunction even(value) {\n  return value % 2 === 0;\n}\nexports.even = even;\n\n/**\n * Returns `true` if the value is falsy - if I recall correctly, '', 0, false,\n * undefined, NaN or null. I don't know if we should stick to the default JS\n * behavior or attempt to replicate what Python believes should be falsy (i.e.,\n * empty arrays, empty dicts, not 0...).\n * @param { any } value\n * @returns { boolean }\n */\nfunction falsy(value) {\n  return !value;\n}\nexports.falsy = falsy;\n\n/**\n * Returns `true` if the operand (one) is greater or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction ge(one, two) {\n  return one >= two;\n}\nexports.ge = ge;\n\n/**\n * Returns `true` if the operand (one) is greater than the test's argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction greaterthan(one, two) {\n  return one > two;\n}\nexports.greaterthan = greaterthan;\n\n// alias\nexports.gt = exports.greaterthan;\n\n/**\n * Returns `true` if the operand (one) is less than or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction le(one, two) {\n  return one <= two;\n}\nexports.le = le;\n\n/**\n * Returns `true` if the operand (one) is less than the test's passed argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction lessthan(one, two) {\n  return one < two;\n}\nexports.lessthan = lessthan;\n\n// alias\nexports.lt = exports.lessthan;\n\n/**\n * Returns `true` if the string is lowercased.\n * @param { string } value\n * @returns { boolean }\n */\nfunction lower(value) {\n  return value.toLowerCase() === value;\n}\nexports.lower = lower;\n\n/**\n * Returns `true` if the operand (one) is less than or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction ne(one, two) {\n  return one !== two;\n}\nexports.ne = ne;\n\n/**\n * Returns true if the value is strictly equal to `null`.\n * @param { any }\n * @returns { boolean }\n */\nfunction nullTest(value) {\n  return value === null;\n}\nexports.null = nullTest;\n\n/**\n * Returns true if value is a number.\n * @param { any }\n * @returns { boolean }\n */\nfunction number(value) {\n  return typeof value === 'number';\n}\nexports.number = number;\n\n/**\n * Returns `true` if the value is *not* evenly divisible by 2.\n * @param { number } value\n * @returns { boolean }\n */\nfunction odd(value) {\n  return value % 2 === 1;\n}\nexports.odd = odd;\n\n/**\n * Returns `true` if the value is a string, `false` if not.\n * @param { any } value\n * @returns { boolean }\n */\nfunction string(value) {\n  return typeof value === 'string';\n}\nexports.string = string;\n\n/**\n * Returns `true` if the value is not in the list of things considered falsy:\n * '', null, undefined, 0, NaN and false.\n * @param { any } value\n * @returns { boolean }\n */\nfunction truthy(value) {\n  return !!value;\n}\nexports.truthy = truthy;\n\n/**\n * Returns `true` if the value is undefined.\n * @param { any } value\n * @returns { boolean }\n */\nfunction undefinedTest(value) {\n  return value === undefined;\n}\nexports.undefined = undefinedTest;\n\n/**\n * Returns `true` if the string is uppercased.\n * @param { string } value\n * @returns { boolean }\n */\nfunction upper(value) {\n  return value.toUpperCase() === value;\n}\nexports.upper = upper;\n\n/**\n * If ES6 features are available, returns `true` if the value implements the\n * `Symbol.iterator` method. If not, it's a string or Array.\n *\n * Could potentially cause issues if a browser exists that has Set and Map but\n * not Symbol.\n *\n * @param { any } value\n * @returns { boolean }\n */\nfunction iterable(value) {\n  if (typeof Symbol !== 'undefined') {\n    return !!value[Symbol.iterator];\n  } else {\n    return Array.isArray(value) || typeof value === 'string';\n  }\n}\nexports.iterable = iterable;\n\n/**\n * If ES6 features are available, returns `true` if the value is an object hash\n * or an ES6 Map. Otherwise just return if it's an object hash.\n * @param { any } value\n * @returns { boolean }\n */\nfunction mapping(value) {\n  // only maps and object hashes\n  var bool = value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value);\n  if (Set) {\n    return bool && !(value instanceof Set);\n  } else {\n    return bool;\n  }\n}\nexports.mapping = mapping;", "'use strict';\n\nfunction _cycler(items) {\n  var index = -1;\n  return {\n    current: null,\n    reset: function reset() {\n      index = -1;\n      this.current = null;\n    },\n    next: function next() {\n      index++;\n      if (index >= items.length) {\n        index = 0;\n      }\n      this.current = items[index];\n      return this.current;\n    }\n  };\n}\nfunction _joiner(sep) {\n  sep = sep || ',';\n  var first = true;\n  return function () {\n    var val = first ? '' : sep;\n    first = false;\n    return val;\n  };\n}\n\n// Making this a function instead so it returns a new object\n// each time it's called. That way, if something like an environment\n// uses it, they will each have their own copy.\nfunction globals() {\n  return {\n    range: function range(start, stop, step) {\n      if (typeof stop === 'undefined') {\n        stop = start;\n        start = 0;\n        step = 1;\n      } else if (!step) {\n        step = 1;\n      }\n      var arr = [];\n      if (step > 0) {\n        for (var i = start; i < stop; i += step) {\n          arr.push(i);\n        }\n      } else {\n        for (var _i = start; _i > stop; _i += step) {\n          // eslint-disable-line for-direction\n          arr.push(_i);\n        }\n      }\n      return arr;\n    },\n    cycler: function cycler() {\n      return _cycler(Array.prototype.slice.call(arguments));\n    },\n    joiner: function joiner(sep) {\n      return _joiner(sep);\n    }\n  };\n}\nmodule.exports = globals;", "\"use strict\";\n\nvar path = require('path');\nmodule.exports = function express(env, app) {\n  function NunjucksView(name, opts) {\n    this.name = name;\n    this.path = name;\n    this.defaultEngine = opts.defaultEngine;\n    this.ext = path.extname(name);\n    if (!this.ext && !this.defaultEngine) {\n      throw new Error('No default engine was specified and no extension was provided.');\n    }\n    if (!this.ext) {\n      this.name += this.ext = (this.defaultEngine[0] !== '.' ? '.' : '') + this.defaultEngine;\n    }\n  }\n  NunjucksView.prototype.render = function render(opts, cb) {\n    env.render(this.name, opts, cb);\n  };\n  app.set('view', NunjucksView);\n  app.set('nunjucksEnv', env);\n  return env;\n};", "'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar asap = require('asap');\nvar _waterfall = require('a-sync-waterfall');\nvar lib = require('./lib');\nvar compiler = require('./compiler');\nvar filters = require('./filters');\nvar _require = require('./loaders'),\n  FileSystemLoader = _require.FileSystemLoader,\n  WebLoader = _require.WebLoader,\n  PrecompiledLoader = _require.PrecompiledLoader;\nvar tests = require('./tests');\nvar globals = require('./globals');\nvar _require2 = require('./object'),\n  Obj = _require2.Obj,\n  EmitterObj = _require2.EmitterObj;\nvar globalRuntime = require('./runtime');\nvar handleError = globalRuntime.handleError,\n  Frame = globalRuntime.Frame;\nvar expressApp = require('./express-app');\n\n// If the user is using the async API, *always* call it\n// asynchronously even if the template was synchronous.\nfunction callbackAsap(cb, err, res) {\n  asap(function () {\n    cb(err, res);\n  });\n}\n\n/**\n * A no-op template, for use with {% include ignore missing %}\n */\nvar noopTmplSrc = {\n  type: 'code',\n  obj: {\n    root: function root(env, context, frame, runtime, cb) {\n      try {\n        cb(null, '');\n      } catch (e) {\n        cb(handleError(e, null, null));\n      }\n    }\n  }\n};\nvar Environment = /*#__PURE__*/function (_EmitterObj) {\n  _inheritsLoose(Environment, _EmitterObj);\n  function Environment() {\n    return _EmitterObj.apply(this, arguments) || this;\n  }\n  var _proto = Environment.prototype;\n  _proto.init = function init(loaders, opts) {\n    var _this = this;\n    // The dev flag determines the trace that'll be shown on errors.\n    // If set to true, returns the full trace from the error point,\n    // otherwise will return trace starting from Template.render\n    // (the full trace from within nunjucks may confuse developers using\n    //  the library)\n    // defaults to false\n    opts = this.opts = opts || {};\n    this.opts.dev = !!opts.dev;\n\n    // The autoescape flag sets global autoescaping. If true,\n    // every string variable will be escaped by default.\n    // If false, strings can be manually escaped using the `escape` filter.\n    // defaults to true\n    this.opts.autoescape = opts.autoescape != null ? opts.autoescape : true;\n\n    // If true, this will make the system throw errors if trying\n    // to output a null or undefined value\n    this.opts.throwOnUndefined = !!opts.throwOnUndefined;\n    this.opts.trimBlocks = !!opts.trimBlocks;\n    this.opts.lstripBlocks = !!opts.lstripBlocks;\n    this.loaders = [];\n    if (!loaders) {\n      // The filesystem loader is only available server-side\n      if (FileSystemLoader) {\n        this.loaders = [new FileSystemLoader('views')];\n      } else if (WebLoader) {\n        this.loaders = [new WebLoader('/views')];\n      }\n    } else {\n      this.loaders = lib.isArray(loaders) ? loaders : [loaders];\n    }\n\n    // It's easy to use precompiled templates: just include them\n    // before you configure nunjucks and this will automatically\n    // pick it up and use it\n    if (typeof window !== 'undefined' && window.nunjucksPrecompiled) {\n      this.loaders.unshift(new PrecompiledLoader(window.nunjucksPrecompiled));\n    }\n    this._initLoaders();\n    this.globals = globals();\n    this.filters = {};\n    this.tests = {};\n    this.asyncFilters = [];\n    this.extensions = {};\n    this.extensionsList = [];\n    lib._entries(filters).forEach(function (_ref) {\n      var name = _ref[0],\n        filter = _ref[1];\n      return _this.addFilter(name, filter);\n    });\n    lib._entries(tests).forEach(function (_ref2) {\n      var name = _ref2[0],\n        test = _ref2[1];\n      return _this.addTest(name, test);\n    });\n  };\n  _proto._initLoaders = function _initLoaders() {\n    var _this2 = this;\n    this.loaders.forEach(function (loader) {\n      // Caching and cache busting\n      loader.cache = {};\n      if (typeof loader.on === 'function') {\n        loader.on('update', function (name, fullname) {\n          loader.cache[name] = null;\n          _this2.emit('update', name, fullname, loader);\n        });\n        loader.on('load', function (name, source) {\n          _this2.emit('load', name, source, loader);\n        });\n      }\n    });\n  };\n  _proto.invalidateCache = function invalidateCache() {\n    this.loaders.forEach(function (loader) {\n      loader.cache = {};\n    });\n  };\n  _proto.addExtension = function addExtension(name, extension) {\n    extension.__name = name;\n    this.extensions[name] = extension;\n    this.extensionsList.push(extension);\n    return this;\n  };\n  _proto.removeExtension = function removeExtension(name) {\n    var extension = this.getExtension(name);\n    if (!extension) {\n      return;\n    }\n    this.extensionsList = lib.without(this.extensionsList, extension);\n    delete this.extensions[name];\n  };\n  _proto.getExtension = function getExtension(name) {\n    return this.extensions[name];\n  };\n  _proto.hasExtension = function hasExtension(name) {\n    return !!this.extensions[name];\n  };\n  _proto.addGlobal = function addGlobal(name, value) {\n    this.globals[name] = value;\n    return this;\n  };\n  _proto.getGlobal = function getGlobal(name) {\n    if (typeof this.globals[name] === 'undefined') {\n      throw new Error('global not found: ' + name);\n    }\n    return this.globals[name];\n  };\n  _proto.addFilter = function addFilter(name, func, async) {\n    var wrapped = func;\n    if (async) {\n      this.asyncFilters.push(name);\n    }\n    this.filters[name] = wrapped;\n    return this;\n  };\n  _proto.getFilter = function getFilter(name) {\n    if (!this.filters[name]) {\n      throw new Error('filter not found: ' + name);\n    }\n    return this.filters[name];\n  };\n  _proto.addTest = function addTest(name, func) {\n    this.tests[name] = func;\n    return this;\n  };\n  _proto.getTest = function getTest(name) {\n    if (!this.tests[name]) {\n      throw new Error('test not found: ' + name);\n    }\n    return this.tests[name];\n  };\n  _proto.resolveTemplate = function resolveTemplate(loader, parentName, filename) {\n    var isRelative = loader.isRelative && parentName ? loader.isRelative(filename) : false;\n    return isRelative && loader.resolve ? loader.resolve(parentName, filename) : filename;\n  };\n  _proto.getTemplate = function getTemplate(name, eagerCompile, parentName, ignoreMissing, cb) {\n    var _this3 = this;\n    var that = this;\n    var tmpl = null;\n    if (name && name.raw) {\n      // this fixes autoescape for templates referenced in symbols\n      name = name.raw;\n    }\n    if (lib.isFunction(parentName)) {\n      cb = parentName;\n      parentName = null;\n      eagerCompile = eagerCompile || false;\n    }\n    if (lib.isFunction(eagerCompile)) {\n      cb = eagerCompile;\n      eagerCompile = false;\n    }\n    if (name instanceof Template) {\n      tmpl = name;\n    } else if (typeof name !== 'string') {\n      throw new Error('template names must be a string: ' + name);\n    } else {\n      for (var i = 0; i < this.loaders.length; i++) {\n        var loader = this.loaders[i];\n        tmpl = loader.cache[this.resolveTemplate(loader, parentName, name)];\n        if (tmpl) {\n          break;\n        }\n      }\n    }\n    if (tmpl) {\n      if (eagerCompile) {\n        tmpl.compile();\n      }\n      if (cb) {\n        cb(null, tmpl);\n        return undefined;\n      } else {\n        return tmpl;\n      }\n    }\n    var syncResult;\n    var createTemplate = function createTemplate(err, info) {\n      if (!info && !err && !ignoreMissing) {\n        err = new Error('template not found: ' + name);\n      }\n      if (err) {\n        if (cb) {\n          cb(err);\n          return;\n        } else {\n          throw err;\n        }\n      }\n      var newTmpl;\n      if (!info) {\n        newTmpl = new Template(noopTmplSrc, _this3, '', eagerCompile);\n      } else {\n        newTmpl = new Template(info.src, _this3, info.path, eagerCompile);\n        if (!info.noCache) {\n          info.loader.cache[name] = newTmpl;\n        }\n      }\n      if (cb) {\n        cb(null, newTmpl);\n      } else {\n        syncResult = newTmpl;\n      }\n    };\n    lib.asyncIter(this.loaders, function (loader, i, next, done) {\n      function handle(err, src) {\n        if (err) {\n          done(err);\n        } else if (src) {\n          src.loader = loader;\n          done(null, src);\n        } else {\n          next();\n        }\n      }\n\n      // Resolve name relative to parentName\n      name = that.resolveTemplate(loader, parentName, name);\n      if (loader.async) {\n        loader.getSource(name, handle);\n      } else {\n        handle(null, loader.getSource(name));\n      }\n    }, createTemplate);\n    return syncResult;\n  };\n  _proto.express = function express(app) {\n    return expressApp(this, app);\n  };\n  _proto.render = function render(name, ctx, cb) {\n    if (lib.isFunction(ctx)) {\n      cb = ctx;\n      ctx = null;\n    }\n\n    // We support a synchronous API to make it easier to migrate\n    // existing code to async. This works because if you don't do\n    // anything async work, the whole thing is actually run\n    // synchronously.\n    var syncResult = null;\n    this.getTemplate(name, function (err, tmpl) {\n      if (err && cb) {\n        callbackAsap(cb, err);\n      } else if (err) {\n        throw err;\n      } else {\n        syncResult = tmpl.render(ctx, cb);\n      }\n    });\n    return syncResult;\n  };\n  _proto.renderString = function renderString(src, ctx, opts, cb) {\n    if (lib.isFunction(opts)) {\n      cb = opts;\n      opts = {};\n    }\n    opts = opts || {};\n    var tmpl = new Template(src, this, opts.path);\n    return tmpl.render(ctx, cb);\n  };\n  _proto.waterfall = function waterfall(tasks, callback, forceAsync) {\n    return _waterfall(tasks, callback, forceAsync);\n  };\n  return Environment;\n}(EmitterObj);\nvar Context = /*#__PURE__*/function (_Obj) {\n  _inheritsLoose(Context, _Obj);\n  function Context() {\n    return _Obj.apply(this, arguments) || this;\n  }\n  var _proto2 = Context.prototype;\n  _proto2.init = function init(ctx, blocks, env) {\n    var _this4 = this;\n    // Has to be tied to an environment so we can tap into its globals.\n    this.env = env || new Environment();\n\n    // Make a duplicate of ctx\n    this.ctx = lib.extend({}, ctx);\n    this.blocks = {};\n    this.exported = [];\n    lib.keys(blocks).forEach(function (name) {\n      _this4.addBlock(name, blocks[name]);\n    });\n  };\n  _proto2.lookup = function lookup(name) {\n    // This is one of the most called functions, so optimize for\n    // the typical case where the name isn't in the globals\n    if (name in this.env.globals && !(name in this.ctx)) {\n      return this.env.globals[name];\n    } else {\n      return this.ctx[name];\n    }\n  };\n  _proto2.setVariable = function setVariable(name, val) {\n    this.ctx[name] = val;\n  };\n  _proto2.getVariables = function getVariables() {\n    return this.ctx;\n  };\n  _proto2.addBlock = function addBlock(name, block) {\n    this.blocks[name] = this.blocks[name] || [];\n    this.blocks[name].push(block);\n    return this;\n  };\n  _proto2.getBlock = function getBlock(name) {\n    if (!this.blocks[name]) {\n      throw new Error('unknown block \"' + name + '\"');\n    }\n    return this.blocks[name][0];\n  };\n  _proto2.getSuper = function getSuper(env, name, block, frame, runtime, cb) {\n    var idx = lib.indexOf(this.blocks[name] || [], block);\n    var blk = this.blocks[name][idx + 1];\n    var context = this;\n    if (idx === -1 || !blk) {\n      throw new Error('no super block available for \"' + name + '\"');\n    }\n    blk(env, context, frame, runtime, cb);\n  };\n  _proto2.addExport = function addExport(name) {\n    this.exported.push(name);\n  };\n  _proto2.getExported = function getExported() {\n    var _this5 = this;\n    var exported = {};\n    this.exported.forEach(function (name) {\n      exported[name] = _this5.ctx[name];\n    });\n    return exported;\n  };\n  return Context;\n}(Obj);\nvar Template = /*#__PURE__*/function (_Obj2) {\n  _inheritsLoose(Template, _Obj2);\n  function Template() {\n    return _Obj2.apply(this, arguments) || this;\n  }\n  var _proto3 = Template.prototype;\n  _proto3.init = function init(src, env, path, eagerCompile) {\n    this.env = env || new Environment();\n    if (lib.isObject(src)) {\n      switch (src.type) {\n        case 'code':\n          this.tmplProps = src.obj;\n          break;\n        case 'string':\n          this.tmplStr = src.obj;\n          break;\n        default:\n          throw new Error(\"Unexpected template object type \" + src.type + \"; expected 'code', or 'string'\");\n      }\n    } else if (lib.isString(src)) {\n      this.tmplStr = src;\n    } else {\n      throw new Error('src must be a string or an object describing the source');\n    }\n    this.path = path;\n    if (eagerCompile) {\n      try {\n        this._compile();\n      } catch (err) {\n        throw lib._prettifyError(this.path, this.env.opts.dev, err);\n      }\n    } else {\n      this.compiled = false;\n    }\n  };\n  _proto3.render = function render(ctx, parentFrame, cb) {\n    var _this6 = this;\n    if (typeof ctx === 'function') {\n      cb = ctx;\n      ctx = {};\n    } else if (typeof parentFrame === 'function') {\n      cb = parentFrame;\n      parentFrame = null;\n    }\n\n    // If there is a parent frame, we are being called from internal\n    // code of another template, and the internal system\n    // depends on the sync/async nature of the parent template\n    // to be inherited, so force an async callback\n    var forceAsync = !parentFrame;\n\n    // Catch compile errors for async rendering\n    try {\n      this.compile();\n    } catch (e) {\n      var err = lib._prettifyError(this.path, this.env.opts.dev, e);\n      if (cb) {\n        return callbackAsap(cb, err);\n      } else {\n        throw err;\n      }\n    }\n    var context = new Context(ctx || {}, this.blocks, this.env);\n    var frame = parentFrame ? parentFrame.push(true) : new Frame();\n    frame.topLevel = true;\n    var syncResult = null;\n    var didError = false;\n    this.rootRenderFunc(this.env, context, frame, globalRuntime, function (err, res) {\n      // TODO: this is actually a bug in the compiled template (because waterfall\n      // tasks are both not passing errors up the chain of callbacks AND are not\n      // causing a return from the top-most render function). But fixing that\n      // will require a more substantial change to the compiler.\n      if (didError && cb && typeof res !== 'undefined') {\n        // prevent multiple calls to cb\n        return;\n      }\n      if (err) {\n        err = lib._prettifyError(_this6.path, _this6.env.opts.dev, err);\n        didError = true;\n      }\n      if (cb) {\n        if (forceAsync) {\n          callbackAsap(cb, err, res);\n        } else {\n          cb(err, res);\n        }\n      } else {\n        if (err) {\n          throw err;\n        }\n        syncResult = res;\n      }\n    });\n    return syncResult;\n  };\n  _proto3.getExported = function getExported(ctx, parentFrame, cb) {\n    // eslint-disable-line consistent-return\n    if (typeof ctx === 'function') {\n      cb = ctx;\n      ctx = {};\n    }\n    if (typeof parentFrame === 'function') {\n      cb = parentFrame;\n      parentFrame = null;\n    }\n\n    // Catch compile errors for async rendering\n    try {\n      this.compile();\n    } catch (e) {\n      if (cb) {\n        return cb(e);\n      } else {\n        throw e;\n      }\n    }\n    var frame = parentFrame ? parentFrame.push() : new Frame();\n    frame.topLevel = true;\n\n    // Run the rootRenderFunc to populate the context with exported vars\n    var context = new Context(ctx || {}, this.blocks, this.env);\n    this.rootRenderFunc(this.env, context, frame, globalRuntime, function (err) {\n      if (err) {\n        cb(err, null);\n      } else {\n        cb(null, context.getExported());\n      }\n    });\n  };\n  _proto3.compile = function compile() {\n    if (!this.compiled) {\n      this._compile();\n    }\n  };\n  _proto3._compile = function _compile() {\n    var props;\n    if (this.tmplProps) {\n      props = this.tmplProps;\n    } else {\n      var source = compiler.compile(this.tmplStr, this.env.asyncFilters, this.env.extensionsList, this.path, this.env.opts);\n      var func = new Function(source); // eslint-disable-line no-new-func\n      props = func();\n    }\n    this.blocks = this._getBlocks(props);\n    this.rootRenderFunc = props.root;\n    this.compiled = true;\n  };\n  _proto3._getBlocks = function _getBlocks(props) {\n    var blocks = {};\n    lib.keys(props).forEach(function (k) {\n      if (k.slice(0, 2) === 'b_') {\n        blocks[k.slice(2)] = props[k];\n      }\n    });\n    return blocks;\n  };\n  return Template;\n}(Obj);\nmodule.exports = {\n  Environment: Environment,\n  Template: Template\n};", "'use strict';\n\nfunction precompileGlobal(templates, opts) {\n  var out = '';\n  opts = opts || {};\n  for (var i = 0; i < templates.length; i++) {\n    var name = JSON.stringify(templates[i].name);\n    var template = templates[i].template;\n    out += '(function() {' + '(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})' + '[' + name + '] = (function() {\\n' + template + '\\n})();\\n';\n    if (opts.asFunction) {\n      out += 'return function(ctx, cb) { return nunjucks.render(' + name + ', ctx, cb); }\\n';\n    }\n    out += '})();\\n';\n  }\n  return out;\n}\nmodule.exports = precompileGlobal;", "'use strict';\n\nvar fs = require('fs');\nvar path = require('path');\nvar _require = require('./lib'),\n  _prettifyError = _require._prettifyError;\nvar compiler = require('./compiler');\nvar _require2 = require('./environment'),\n  Environment = _require2.Environment;\nvar precompileGlobal = require('./precompile-global');\nfunction match(filename, patterns) {\n  if (!Array.isArray(patterns)) {\n    return false;\n  }\n  return patterns.some(function (pattern) {\n    return filename.match(pattern);\n  });\n}\nfunction precompileString(str, opts) {\n  opts = opts || {};\n  opts.isString = true;\n  var env = opts.env || new Environment([]);\n  var wrapper = opts.wrapper || precompileGlobal;\n  if (!opts.name) {\n    throw new Error('the \"name\" option is required when compiling a string');\n  }\n  return wrapper([_precompile(str, opts.name, env)], opts);\n}\nfunction precompile(input, opts) {\n  // The following options are available:\n  //\n  // * name: name of the template (auto-generated when compiling a directory)\n  // * isString: input is a string, not a file path\n  // * asFunction: generate a callable function\n  // * force: keep compiling on error\n  // * env: the Environment to use (gets extensions and async filters from it)\n  // * include: which file/folders to include (folders are auto-included, files are auto-excluded)\n  // * exclude: which file/folders to exclude (folders are auto-included, files are auto-excluded)\n  // * wrapper: function(templates, opts) {...}\n  //       Customize the output format to store the compiled template.\n  //       By default, templates are stored in a global variable used by the runtime.\n  //       A custom loader will be necessary to load your custom wrapper.\n\n  opts = opts || {};\n  var env = opts.env || new Environment([]);\n  var wrapper = opts.wrapper || precompileGlobal;\n  if (opts.isString) {\n    return precompileString(input, opts);\n  }\n  var pathStats = fs.existsSync(input) && fs.statSync(input);\n  var precompiled = [];\n  var templates = [];\n  function addTemplates(dir) {\n    fs.readdirSync(dir).forEach(function (file) {\n      var filepath = path.join(dir, file);\n      var subpath = filepath.substr(path.join(input, '/').length);\n      var stat = fs.statSync(filepath);\n      if (stat && stat.isDirectory()) {\n        subpath += '/';\n        if (!match(subpath, opts.exclude)) {\n          addTemplates(filepath);\n        }\n      } else if (match(subpath, opts.include)) {\n        templates.push(filepath);\n      }\n    });\n  }\n  if (pathStats.isFile()) {\n    precompiled.push(_precompile(fs.readFileSync(input, 'utf-8'), opts.name || input, env));\n  } else if (pathStats.isDirectory()) {\n    addTemplates(input);\n    for (var i = 0; i < templates.length; i++) {\n      var name = templates[i].replace(path.join(input, '/'), '');\n      try {\n        precompiled.push(_precompile(fs.readFileSync(templates[i], 'utf-8'), name, env));\n      } catch (e) {\n        if (opts.force) {\n          // Don't stop generating the output if we're\n          // forcing compilation.\n          console.error(e); // eslint-disable-line no-console\n        } else {\n          throw e;\n        }\n      }\n    }\n  }\n  return wrapper(precompiled, opts);\n}\nfunction _precompile(str, name, env) {\n  env = env || new Environment([]);\n  var asyncFilters = env.asyncFilters;\n  var extensions = env.extensionsList;\n  var template;\n  name = name.replace(/\\\\/g, '/');\n  try {\n    template = compiler.compile(str, asyncFilters, extensions, name, env.opts);\n  } catch (err) {\n    throw _prettifyError(name, false, err);\n  }\n  return {\n    name: name,\n    template: template\n  };\n}\nmodule.exports = {\n  precompile: precompile,\n  precompileString: precompileString\n};", "\"use strict\";\n\nfunction installCompat() {\n  'use strict';\n\n  /* eslint-disable camelcase */\n\n  // This must be called like `nunjucks.installCompat` so that `this`\n  // references the nunjucks instance\n  var runtime = this.runtime;\n  var lib = this.lib;\n  // Handle slim case where these 'modules' are excluded from the built source\n  var Compiler = this.compiler.Compiler;\n  var Parser = this.parser.Parser;\n  var nodes = this.nodes;\n  var lexer = this.lexer;\n  var orig_contextOrFrameLookup = runtime.contextOrFrameLookup;\n  var orig_memberLookup = runtime.memberLookup;\n  var orig_Compiler_assertType;\n  var orig_Parser_parseAggregate;\n  if (Compiler) {\n    orig_Compiler_assertType = Compiler.prototype.assertType;\n  }\n  if (Parser) {\n    orig_Parser_parseAggregate = Parser.prototype.parseAggregate;\n  }\n  function uninstall() {\n    runtime.contextOrFrameLookup = orig_contextOrFrameLookup;\n    runtime.memberLookup = orig_memberLookup;\n    if (Compiler) {\n      Compiler.prototype.assertType = orig_Compiler_assertType;\n    }\n    if (Parser) {\n      Parser.prototype.parseAggregate = orig_Parser_parseAggregate;\n    }\n  }\n  runtime.contextOrFrameLookup = function contextOrFrameLookup(context, frame, key) {\n    var val = orig_contextOrFrameLookup.apply(this, arguments);\n    if (val !== undefined) {\n      return val;\n    }\n    switch (key) {\n      case 'True':\n        return true;\n      case 'False':\n        return false;\n      case 'None':\n        return null;\n      default:\n        return undefined;\n    }\n  };\n  function getTokensState(tokens) {\n    return {\n      index: tokens.index,\n      lineno: tokens.lineno,\n      colno: tokens.colno\n    };\n  }\n  if (process.env.BUILD_TYPE !== 'SLIM' && nodes && Compiler && Parser) {\n    // i.e., not slim mode\n    var Slice = nodes.Node.extend('Slice', {\n      fields: ['start', 'stop', 'step'],\n      init: function init(lineno, colno, start, stop, step) {\n        start = start || new nodes.Literal(lineno, colno, null);\n        stop = stop || new nodes.Literal(lineno, colno, null);\n        step = step || new nodes.Literal(lineno, colno, 1);\n        this.parent(lineno, colno, start, stop, step);\n      }\n    });\n    Compiler.prototype.assertType = function assertType(node) {\n      if (node instanceof Slice) {\n        return;\n      }\n      orig_Compiler_assertType.apply(this, arguments);\n    };\n    Compiler.prototype.compileSlice = function compileSlice(node, frame) {\n      this._emit('(');\n      this._compileExpression(node.start, frame);\n      this._emit('),(');\n      this._compileExpression(node.stop, frame);\n      this._emit('),(');\n      this._compileExpression(node.step, frame);\n      this._emit(')');\n    };\n    Parser.prototype.parseAggregate = function parseAggregate() {\n      var _this = this;\n      var origState = getTokensState(this.tokens);\n      // Set back one accounting for opening bracket/parens\n      origState.colno--;\n      origState.index--;\n      try {\n        return orig_Parser_parseAggregate.apply(this);\n      } catch (e) {\n        var errState = getTokensState(this.tokens);\n        var rethrow = function rethrow() {\n          lib._assign(_this.tokens, errState);\n          return e;\n        };\n\n        // Reset to state before original parseAggregate called\n        lib._assign(this.tokens, origState);\n        this.peeked = false;\n        var tok = this.peekToken();\n        if (tok.type !== lexer.TOKEN_LEFT_BRACKET) {\n          throw rethrow();\n        } else {\n          this.nextToken();\n        }\n        var node = new Slice(tok.lineno, tok.colno);\n\n        // If we don't encounter a colon while parsing, this is not a slice,\n        // so re-raise the original exception.\n        var isSlice = false;\n        for (var i = 0; i <= node.fields.length; i++) {\n          if (this.skip(lexer.TOKEN_RIGHT_BRACKET)) {\n            break;\n          }\n          if (i === node.fields.length) {\n            if (isSlice) {\n              this.fail('parseSlice: too many slice components', tok.lineno, tok.colno);\n            } else {\n              break;\n            }\n          }\n          if (this.skip(lexer.TOKEN_COLON)) {\n            isSlice = true;\n          } else {\n            var field = node.fields[i];\n            node[field] = this.parseExpression();\n            isSlice = this.skip(lexer.TOKEN_COLON) || isSlice;\n          }\n        }\n        if (!isSlice) {\n          throw rethrow();\n        }\n        return new nodes.Array(tok.lineno, tok.colno, [node]);\n      }\n    };\n  }\n  function sliceLookup(obj, start, stop, step) {\n    obj = obj || [];\n    if (start === null) {\n      start = step < 0 ? obj.length - 1 : 0;\n    }\n    if (stop === null) {\n      stop = step < 0 ? -1 : obj.length;\n    } else if (stop < 0) {\n      stop += obj.length;\n    }\n    if (start < 0) {\n      start += obj.length;\n    }\n    var results = [];\n    for (var i = start;; i += step) {\n      if (i < 0 || i > obj.length) {\n        break;\n      }\n      if (step > 0 && i >= stop) {\n        break;\n      }\n      if (step < 0 && i <= stop) {\n        break;\n      }\n      results.push(runtime.memberLookup(obj, i));\n    }\n    return results;\n  }\n  function hasOwnProp(obj, key) {\n    return Object.prototype.hasOwnProperty.call(obj, key);\n  }\n  var ARRAY_MEMBERS = {\n    pop: function pop(index) {\n      if (index === undefined) {\n        return this.pop();\n      }\n      if (index >= this.length || index < 0) {\n        throw new Error('KeyError');\n      }\n      return this.splice(index, 1);\n    },\n    append: function append(element) {\n      return this.push(element);\n    },\n    remove: function remove(element) {\n      for (var i = 0; i < this.length; i++) {\n        if (this[i] === element) {\n          return this.splice(i, 1);\n        }\n      }\n      throw new Error('ValueError');\n    },\n    count: function count(element) {\n      var count = 0;\n      for (var i = 0; i < this.length; i++) {\n        if (this[i] === element) {\n          count++;\n        }\n      }\n      return count;\n    },\n    index: function index(element) {\n      var i;\n      if ((i = this.indexOf(element)) === -1) {\n        throw new Error('ValueError');\n      }\n      return i;\n    },\n    find: function find(element) {\n      return this.indexOf(element);\n    },\n    insert: function insert(index, elem) {\n      return this.splice(index, 0, elem);\n    }\n  };\n  var OBJECT_MEMBERS = {\n    items: function items() {\n      return lib._entries(this);\n    },\n    values: function values() {\n      return lib._values(this);\n    },\n    keys: function keys() {\n      return lib.keys(this);\n    },\n    get: function get(key, def) {\n      var output = this[key];\n      if (output === undefined) {\n        output = def;\n      }\n      return output;\n    },\n    has_key: function has_key(key) {\n      return hasOwnProp(this, key);\n    },\n    pop: function pop(key, def) {\n      var output = this[key];\n      if (output === undefined && def !== undefined) {\n        output = def;\n      } else if (output === undefined) {\n        throw new Error('KeyError');\n      } else {\n        delete this[key];\n      }\n      return output;\n    },\n    popitem: function popitem() {\n      var keys = lib.keys(this);\n      if (!keys.length) {\n        throw new Error('KeyError');\n      }\n      var k = keys[0];\n      var val = this[k];\n      delete this[k];\n      return [k, val];\n    },\n    setdefault: function setdefault(key, def) {\n      if (def === void 0) {\n        def = null;\n      }\n      if (!(key in this)) {\n        this[key] = def;\n      }\n      return this[key];\n    },\n    update: function update(kwargs) {\n      lib._assign(this, kwargs);\n      return null; // Always returns None\n    }\n  };\n\n  OBJECT_MEMBERS.iteritems = OBJECT_MEMBERS.items;\n  OBJECT_MEMBERS.itervalues = OBJECT_MEMBERS.values;\n  OBJECT_MEMBERS.iterkeys = OBJECT_MEMBERS.keys;\n  runtime.memberLookup = function memberLookup(obj, val, autoescape) {\n    if (arguments.length === 4) {\n      return sliceLookup.apply(this, arguments);\n    }\n    obj = obj || {};\n\n    // If the object is an object, return any of the methods that Python would\n    // otherwise provide.\n    if (lib.isArray(obj) && hasOwnProp(ARRAY_MEMBERS, val)) {\n      return ARRAY_MEMBERS[val].bind(obj);\n    }\n    if (lib.isObject(obj) && hasOwnProp(OBJECT_MEMBERS, val)) {\n      return OBJECT_MEMBERS[val].bind(obj);\n    }\n    return orig_memberLookup.apply(this, arguments);\n  };\n  return uninstall;\n}\nmodule.exports = installCompat;", "'use strict';\n\nvar lib = require('./src/lib');\nvar _require = require('./src/environment'),\n  Environment = _require.Environment,\n  Template = _require.Template;\nvar Loader = require('./src/loader');\nvar loaders = require('./src/loaders');\nvar precompile = require('./src/precompile');\nvar compiler = require('./src/compiler');\nvar parser = require('./src/parser');\nvar lexer = require('./src/lexer');\nvar runtime = require('./src/runtime');\nvar nodes = require('./src/nodes');\nvar installJinjaCompat = require('./src/jinja-compat');\n\n// A single instance of an environment, since this is so commonly used\nvar e;\nfunction configure(templatesPath, opts) {\n  opts = opts || {};\n  if (lib.isObject(templatesPath)) {\n    opts = templatesPath;\n    templatesPath = null;\n  }\n  var TemplateLoader;\n  if (loaders.FileSystemLoader) {\n    TemplateLoader = new loaders.FileSystemLoader(templatesPath, {\n      watch: opts.watch,\n      noCache: opts.noCache\n    });\n  } else if (loaders.WebLoader) {\n    TemplateLoader = new loaders.WebLoader(templatesPath, {\n      useCache: opts.web && opts.web.useCache,\n      async: opts.web && opts.web.async\n    });\n  }\n  e = new Environment(TemplateLoader, opts);\n  if (opts && opts.express) {\n    e.express(opts.express);\n  }\n  return e;\n}\nmodule.exports = {\n  Environment: Environment,\n  Template: Template,\n  Loader: Loader,\n  FileSystemLoader: loaders.FileSystemLoader,\n  NodeResolveLoader: loaders.NodeResolveLoader,\n  PrecompiledLoader: loaders.PrecompiledLoader,\n  WebLoader: loaders.WebLoader,\n  compiler: compiler,\n  parser: parser,\n  lexer: lexer,\n  runtime: runtime,\n  lib: lib,\n  nodes: nodes,\n  installJinjaCompat: installJinjaCompat,\n  configure: configure,\n  reset: function reset() {\n    e = undefined;\n  },\n  compile: function compile(src, env, path, eagerCompile) {\n    if (!e) {\n      configure();\n    }\n    return new Template(src, env, path, eagerCompile);\n  },\n  render: function render(name, ctx, cb) {\n    if (!e) {\n      configure();\n    }\n    return e.render(name, ctx, cb);\n  },\n  renderString: function renderString(src, ctx, cb) {\n    if (!e) {\n      configure();\n    }\n    return e.renderString(src, ctx, cb);\n  },\n  precompile: precompile ? precompile.precompile : undefined,\n  precompileString: precompile ? precompile.precompileString : undefined\n};", "{\n  \"name\": \"@html-validate/eslint-config\",\n  \"version\": \"9.12.0\",\n  \"description\": \"Eslint sharable config used by the various HTML-validate packages\",\n  \"keywords\": [\n    \"eslint\"\n  ],\n  \"homepage\": \"https://gitlab.com/html-validate/eslint-config#readme\",\n  \"bugs\": {\n    \"url\": \"https://gitlab.com/html-validate/eslint-config/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://gitlab.com/html-validate/eslint-config.git\",\n    \"directory\": \"packages/eslint-config\"\n  },\n  \"license\": \"MIT\",\n  \"author\": \"David Sveningsson <ext@sidvind.com>\",\n  \"type\": \"module\",\n  \"main\": \"index.mjs\",\n  \"bin\": {\n    \"eslint\": \"eslint.mjs\",\n    \"eslint-config\": \"./cli.mjs\"\n  },\n  \"files\": [\n    \"dist\",\n    \"template\",\n    \"eslint.mjs\",\n    \"cli.mjs\"\n  ],\n  \"scripts\": {\n    \"prebuild\": \"tsc\",\n    \"build\": \"node build.mjs\",\n    \"prepack\": \"release-prepack --retain-scripts\",\n    \"postpack\": \"release-postpack\",\n    \"prepublishOnly\": \"release-prepublish --retain-scripts\"\n  },\n  \"dependencies\": {\n    \"@eslint-community/eslint-plugin-eslint-comments\": \"4.7.2\",\n    \"@eslint/js\": \"10.0.1\",\n    \"eslint\": \"10.7.0\",\n    \"eslint-config-prettier\": \"10.1.8\",\n    \"eslint-formatter-gitlab\": \"7.2.0\",\n    \"eslint-import-resolver-typescript\": \"4.4.5\",\n    \"eslint-plugin-array-func\": \"5.1.1\",\n    \"eslint-plugin-import-x\": \"4.17.1\",\n    \"eslint-plugin-n\": \"18.2.2\",\n    \"eslint-plugin-prettier\": \"5.5.6\",\n    \"eslint-plugin-regexp\": \"3.1.1\",\n    \"eslint-plugin-security\": \"4.0.1\",\n    \"eslint-plugin-sonarjs\": \"4.2.0\",\n    \"eslint-plugin-unicorn\": \"71.1.0\",\n    \"find-up\": \"8.0.0\",\n    \"globals\": \"17.3.0\",\n    \"nunjucks\": \"3.2.4\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"22.20.1\",\n    \"@types/nunjucks\": \"3.2.6\",\n    \"esbuild\": \"0.28.1\"\n  },\n  \"peerDependencies\": {\n    \"prettier\": \"^3.0.0\"\n  },\n  \"engines\": {\n    \"node\": \"^22.16.0 || >= 24.0.0\",\n    \"npm\": \">= 7\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n", "/* eslint-disable n/no-process-exit -- cli script need to exit with exit code 1 on failure */\n/* eslint-disable camelcase -- child_process uses snake_case */\nimport child_process from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { parseArgs, promisify } from \"node:util\";\nimport { findUp } from \"find-up\";\nimport { Features, Renderer, renderNunjucks } from \"./render\";\n\ninterface Options {\n\trootDir: string;\n\tdryRun: boolean;\n\tchanges: number;\n}\n\ninterface Args {\n\tmode: \"check\" | \"write\";\n\tcypress: null | boolean;\n\tjest: null | boolean;\n\ttypeinfo: null | boolean;\n\ttypescript: null | boolean;\n\tvitest: null | boolean;\n\tvue: null | boolean;\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-require-imports -- should require in npm package not bundled */\nconst pkg = require(\"../package.json\");\n\nconst exec = promisify(child_process.exec);\nconst templateDir = path.join(import.meta.dirname, \"../template\");\nconst PACKAGE_JSON = \"package.json\";\n\nasync function getRootDir(): Promise<string> {\n\tconst pkgFile = await findUp(PACKAGE_JSON);\n\tif (!pkgFile) {\n\t\tconsole.error(\"Failed to locate project root\");\n\t\tprocess.exit(1);\n\t}\n\treturn path.dirname(pkgFile);\n}\n\nfunction resolveTemplate(filename: string): [string, Renderer] {\n\tconst njk = path.join(templateDir, `${filename}.njk`);\n\tif (fs.existsSync(njk)) {\n\t\treturn [njk, renderNunjucks];\n\t}\n\n\tthrow new Error(`Failed to locate template \"${filename}\" in \"${templateDir}\"`);\n}\n\n/**\n * Ensure a file is missing\n */\nasync function ensureFileRemoved(filename: string, options: Options): Promise<void> {\n\tif (!fs.existsSync(filename)) {\n\t\treturn;\n\t}\n\toptions.changes++;\n\tif (options.dryRun) {\n\t\tconsole.log(`${filename} needs removal`);\n\t} else {\n\t\tfs.unlinkSync(filename);\n\t\tconsole.log(`${filename} removed`);\n\t}\n}\n\n/**\n * Ensures a file matches template.\n */\nasync function ensureFileExists(\n\tfilename: string,\n\toptions: Options,\n\tfeatures: Features,\n): Promise<void> {\n\tconst [src, renderer] = resolveTemplate(filename);\n\tconst dst = path.join(options.rootDir, filename);\n\tconst expected = await renderer(src, dst, features);\n\n\t/* if the file exists compare the file with the template */\n\tif (fs.existsSync(dst)) {\n\t\tconst actual = fs.readFileSync(dst, \"utf-8\");\n\t\tif (actual === expected) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\toptions.changes++;\n\n\tif (options.dryRun) {\n\t\tconsole.log(`${filename} - needs update`);\n\t} else {\n\t\tfs.writeFileSync(dst, expected);\n\t\tconsole.log(`${filename} written`);\n\t}\n}\n\n/**\n * Ensures package.json have dependency.\n *\n * @param name - Name of package which should be installed.\n */\nasync function ensureDependencyRemoved(name: string, options: Options): Promise<void> {\n\tconst dst = path.join(options.rootDir, PACKAGE_JSON);\n\tconst data = fs.readFileSync(dst, \"utf-8\");\n\tconst pkg = JSON.parse(data);\n\tconst dependencies = new Set([\n\t\t...Object.keys(pkg.dependencies || {}),\n\t\t...Object.keys(pkg.devDependencies || {}),\n\t\t...Object.keys(pkg.peerDependencies || {}),\n\t]);\n\tif (!dependencies.has(name)) {\n\t\treturn;\n\t}\n\n\toptions.changes++;\n\n\tif (options.dryRun) {\n\t\tconsole.log(`package.json - ${name} dependency is present when it shouldn't`);\n\t} else {\n\t\tconsole.log(`package.json - removing dependency \"${name}\"`);\n\t\ttry {\n\t\t\tawait exec(`npm rm --save-dev ${name}`);\n\t\t} /* eslint-disable-line @typescript-eslint/no-explicit-any -- unknown type */ catch (err: any) {\n\t\t\tconsole.error(err.stdout);\n\t\t\tconsole.error(err.stderr);\n\t\t}\n\t}\n}\n\n/**\n * Ensures package.json have dependency.\n *\n * @param name - Name of package which should be installed.\n */\nasync function ensureDependencyExists(name: string, options: Options): Promise<void> {\n\tconst dst = path.join(options.rootDir, PACKAGE_JSON);\n\tconst data = fs.readFileSync(dst, \"utf-8\");\n\tconst pkg = JSON.parse(data);\n\tconst dependencies = new Set([\n\t\t...Object.keys(pkg.dependencies || {}),\n\t\t...Object.keys(pkg.devDependencies || {}),\n\t\t...Object.keys(pkg.peerDependencies || {}),\n\t]);\n\tif (dependencies.has(name)) {\n\t\treturn;\n\t}\n\n\toptions.changes++;\n\n\tif (options.dryRun) {\n\t\tconsole.log(`package.json - ${name} dependency is missing`);\n\t} else {\n\t\tconsole.log(`package.json - installing dependency \"${name}\"`);\n\t\ttry {\n\t\t\tawait exec(`npm install --save-dev ${name}`);\n\t\t} /* eslint-disable-line @typescript-eslint/no-explicit-any -- unknown type */ catch (err: any) {\n\t\t\tconsole.error(err.stdout);\n\t\t\tconsole.error(err.stderr);\n\t\t}\n\t}\n}\n\n/**\n * Ensures package.json have given script.\n *\n * @param script - Name of script.\n * @param command - Command the script should be set to.\n */\nasync function ensurePkgScript(script: string, command: string, options: Options): Promise<void> {\n\tconst dst = path.join(options.rootDir, PACKAGE_JSON);\n\tconst data = fs.readFileSync(dst, \"utf-8\");\n\tconst pkg = JSON.parse(data);\n\n\tif (pkg.scripts && Object.hasOwn(pkg.scripts, script) && pkg.scripts[script] === command) {\n\t\treturn;\n\t}\n\n\toptions.changes++;\n\n\tif (options.dryRun) {\n\t\tconsole.log(`package.json - ${script} script needs update`);\n\t} else {\n\t\tif (!pkg.scripts) {\n\t\t\tpkg.scripts = {};\n\t\t}\n\t\tpkg.scripts[script] = command;\n\t\tconst output = JSON.stringify(pkg, null, 2);\n\t\tfs.writeFileSync(dst, `${output}\\n`);\n\t\tconsole.log(`package.json \"${script}\" script updated`);\n\t}\n}\n\nasync function writeConfig(options: Options, features: Features): Promise<boolean> {\n\t/* ensure old configuration files is not present */\n\tawait ensureFileRemoved(\".eslintrc.json\", options);\n\tawait ensureFileRemoved(\".eslintrc.js\", options);\n\tawait ensureFileRemoved(\".eslintrc.cjs\", options);\n\tawait ensureFileRemoved(\".eslintignore\", options);\n\n\t/* ensure all files are up-to-date */\n\tawait ensureFileExists(\"eslint.config.mjs\", options, features);\n\n\t/* ensure package.json is up-to-date */\n\tawait ensurePkgScript(\"eslint\", \"eslint --cache .\", options);\n\tawait ensurePkgScript(\"eslint:fix\", \"eslint --cache --fix .\", options);\n\n\t/* ensure dependencies are up-to-date */\n\tawait ensureDependencyRemoved(\"eslint\", options);\n\tawait ensureDependencyExists(\"@html-validate/eslint-config\", options);\n\tif (features.typeinfo) {\n\t\tawait ensureDependencyExists(\"@html-validate/eslint-config-typescript-typeinfo\", options);\n\t}\n\tif (features.typescript) {\n\t\tawait ensureDependencyExists(\"@html-validate/eslint-config-typescript\", options);\n\t}\n\tif (features.jest) {\n\t\tawait ensureDependencyExists(\"@html-validate/eslint-config-jest\", options);\n\t}\n\tif (features.cypress) {\n\t\tawait ensureDependencyExists(\"@html-validate/eslint-config-cypress\", options);\n\t}\n\tif (features.vitest) {\n\t\tawait ensureDependencyExists(\"@html-validate/eslint-config-vitest\", options);\n\t}\n\tif (features.vue) {\n\t\tawait ensureDependencyExists(\"@html-validate/eslint-config-vue\", options);\n\t}\n\n\t/* non-dryrun is always ok */\n\tif (!options.dryRun) {\n\t\treturn true;\n\t}\n\n\tif (options.changes > 0) {\n\t\tconsole.error(\"The files listed needs updating. Use `--write` to write changes automatically.\");\n\t}\n\n\treturn options.changes === 0;\n}\n\nfunction resolveTypeinfo(typeinfo: null | boolean, hasTypescript: boolean): false | string {\n\tif (typeinfo === null) {\n\t\treturn hasTypescript ? \"./tsconfig.json\" : false;\n\t}\n\treturn typeinfo ? \"./tsconfig.json\" : false;\n}\n\nasync function getFeatures(options: Options, args: Args): Promise<Features> {\n\tconst dst = path.join(options.rootDir, PACKAGE_JSON);\n\tconst data = fs.readFileSync(dst, \"utf-8\");\n\tconst pkg = JSON.parse(data);\n\tconst deps = { ...pkg.dependencies, ...pkg.devDependencies };\n\tconst typeinfo = resolveTypeinfo(args.typeinfo, Boolean(deps.typescript));\n\treturn {\n\t\ttype: pkg.type ?? \"commonjs\",\n\t\tcypress: args.cypress ?? Boolean(deps.cypress),\n\t\tjest: args.jest ?? Boolean(deps.jest),\n\t\ttypeinfo,\n\t\ttypescript: args.typescript ?? Boolean(deps.typescript),\n\t\tvitest: args.vitest ?? Boolean(deps.vitest),\n\t\tvue: args.vue ?? Boolean(deps.vue),\n\t};\n}\n\nasync function run(args: Args): Promise<never> {\n\tconst rootDir = await getRootDir();\n\tconst options: Options = {\n\t\trootDir,\n\t\tdryRun: args.mode === \"check\",\n\t\tchanges: 0,\n\t};\n\tconst features = await getFeatures(options, args);\n\tconst ok = await writeConfig(options, features);\n\tprocess.exit(ok ? 0 : 1);\n}\n\nfunction printHelp(): void {\n\tconsole.log(`usage: eslint-config [OPTIONS]\n\n${pkg.description}\n\nOptions:\n  -h, --help              Show this help message and exit\n  -v, --version           Show version number and exit\n  -w, --write             Write configuration\n  -c, --check             Check if configuration is up-to-date\n  --enable-cypress        Enable Cypress support\n  --disable-cypress       Disable Cypress support\n  --enable-jest           Enable Jest support\n  --disable-jest          Disable Jest support\n  --enable-typescript     Enable typescript support\n  --disable-typescript    Disable typescript support\n  --enable-typeinfo       Enable typescript typeinfo support\n  --disable-typeinfo      Disable typescript typeinfo support\n  --enable-vitest         Enable Vitest support\n  --disable-vitest        Disable Vitest support\n  --enable-vue            Enable Vue support\n  --disable-vue           Disable Vue support`);\n}\n\nfunction tristate(enabled: boolean | undefined, disabled: boolean | undefined): null | boolean {\n\tif (enabled) {\n\t\treturn true;\n\t}\n\tif (disabled) {\n\t\treturn false;\n\t}\n\treturn null;\n}\n\ninterface ParsedValues {\n\thelp?: boolean;\n\tversion?: boolean;\n\twrite?: boolean;\n\tcheck?: boolean;\n\t\"enable-cypress\"?: boolean;\n\t\"disable-cypress\"?: boolean;\n\t\"enable-jest\"?: boolean;\n\t\"disable-jest\"?: boolean;\n\t\"enable-typescript\"?: boolean;\n\t\"disable-typescript\"?: boolean;\n\t\"enable-typeinfo\"?: boolean;\n\t\"disable-typeinfo\"?: boolean;\n\t\"enable-vitest\"?: boolean;\n\t\"disable-vitest\"?: boolean;\n\t\"enable-vue\"?: boolean;\n\t\"disable-vue\"?: boolean;\n}\n\nlet values: ParsedValues;\ntry {\n\t({ values } = parseArgs({\n\t\toptions: {\n\t\t\thelp: { type: \"boolean\", short: \"h\" },\n\t\t\tversion: { type: \"boolean\", short: \"v\" },\n\t\t\twrite: { type: \"boolean\", short: \"w\" },\n\t\t\tcheck: { type: \"boolean\", short: \"c\" },\n\t\t\t\"enable-cypress\": { type: \"boolean\" },\n\t\t\t\"disable-cypress\": { type: \"boolean\" },\n\t\t\t\"enable-jest\": { type: \"boolean\" },\n\t\t\t\"disable-jest\": { type: \"boolean\" },\n\t\t\t\"enable-typescript\": { type: \"boolean\" },\n\t\t\t\"disable-typescript\": { type: \"boolean\" },\n\t\t\t\"enable-typeinfo\": { type: \"boolean\" },\n\t\t\t\"disable-typeinfo\": { type: \"boolean\" },\n\t\t\t\"enable-vitest\": { type: \"boolean\" },\n\t\t\t\"disable-vitest\": { type: \"boolean\" },\n\t\t\t\"enable-vue\": { type: \"boolean\" },\n\t\t\t\"disable-vue\": { type: \"boolean\" },\n\t\t},\n\t\tstrict: true,\n\t}));\n} catch (err) {\n\tconsole.error(err instanceof Error ? err.message : String(err));\n\tprocess.exit(1);\n}\n\nif (values.help) {\n\tprintHelp();\n\tprocess.exit(0);\n}\n\nif (values.version) {\n\tconsole.log(pkg.version);\n\tprocess.exit(0);\n}\n\nlet mode: \"check\" | \"write\" | null = null;\nif (values.write) {\n\tmode = \"write\";\n} else if (values.check) {\n\tmode = \"check\";\n}\n\nif (!mode) {\n\tprintHelp();\n\tprocess.exit(1);\n}\n\nconst args: Args = {\n\tmode,\n\tcypress: tristate(values[\"enable-cypress\"], values[\"disable-cypress\"]),\n\tjest: tristate(values[\"enable-jest\"], values[\"disable-jest\"]),\n\ttypeinfo: tristate(values[\"enable-typeinfo\"], values[\"disable-typeinfo\"]),\n\ttypescript: tristate(values[\"enable-typescript\"], values[\"disable-typescript\"]),\n\tvitest: tristate(values[\"enable-vitest\"], values[\"disable-vitest\"]),\n\tvue: tristate(values[\"enable-vue\"], values[\"disable-vue\"]),\n};\n\nawait run(args);\n", "import path from 'node:path';\nimport fs from 'node:fs';\nimport {locatePath, locatePathSync} from 'locate-path';\nimport {toPath} from 'unicorn-magic';\n\nexport const findUpStop = Symbol('findUpStop');\n\nexport async function findUpMultiple(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = path.resolve(directory, toPath(options.stopAt) ?? root);\n\tconst limit = options.limit ?? Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport function findUpMultipleSync(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = path.resolve(directory, toPath(options.stopAt) ?? root);\n\tconst limit = options.limit ?? Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePathSync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePathSync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport async function findUp(name, options = {}) {\n\tconst matches = await findUpMultiple(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nexport function findUpSync(name, options = {}) {\n\tconst matches = findUpMultipleSync(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nasync function findDownDepthFirst(directory, paths, maxDepth, locateOptions, currentDepth = 0) {\n\tconst found = await locatePath(paths, {cwd: directory, ...locateOptions});\n\tif (found) {\n\t\treturn path.resolve(directory, found);\n\t}\n\n\tif (currentDepth >= maxDepth) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst entries = await fs.promises.readdir(directory, {withFileTypes: true});\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tconst result = await findDownDepthFirst(\n\t\t\t\t\tpath.join(directory, entry.name),\n\t\t\t\t\tpaths,\n\t\t\t\t\tmaxDepth,\n\t\t\t\t\tlocateOptions,\n\t\t\t\t\tcurrentDepth + 1,\n\t\t\t\t);\n\t\t\t\tif (result) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {}\n\n\treturn undefined;\n}\n\nfunction findDownDepthFirstSync(directory, paths, maxDepth, locateOptions, currentDepth = 0) {\n\tconst found = locatePathSync(paths, {cwd: directory, ...locateOptions});\n\tif (found) {\n\t\treturn path.resolve(directory, found);\n\t}\n\n\tif (currentDepth >= maxDepth) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst entries = fs.readdirSync(directory, {withFileTypes: true});\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tconst result = findDownDepthFirstSync(\n\t\t\t\t\tpath.join(directory, entry.name),\n\t\t\t\t\tpaths,\n\t\t\t\t\tmaxDepth,\n\t\t\t\t\tlocateOptions,\n\t\t\t\t\tcurrentDepth + 1,\n\t\t\t\t);\n\t\t\t\tif (result) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {}\n\n\treturn undefined;\n}\n\nfunction prepareFindDownOptions(name, options) {\n\tconst startDirectory = path.resolve(toPath(options.cwd) ?? '');\n\tconst maxDepth = Math.max(0, options.depth ?? 1);\n\tconst paths = [name].flat();\n\tconst {type = 'file', allowSymlinks = true, strategy = 'breadth'} = options;\n\tconst locateOptions = {type, allowSymlinks};\n\treturn {\n\t\tstartDirectory,\n\t\tmaxDepth,\n\t\tpaths,\n\t\tlocateOptions,\n\t\tstrategy,\n\t};\n}\n\nasync function findDownBreadthFirst(startDirectory, paths, maxDepth, locateOptions) {\n\tconst queue = [{directory: startDirectory, depth: 0}];\n\n\twhile (queue.length > 0) {\n\t\tconst {directory, depth} = queue.shift();\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst found = await locatePath(paths, {cwd: directory, ...locateOptions});\n\t\tif (found) {\n\t\t\treturn path.resolve(directory, found);\n\t\t}\n\n\t\tif (depth >= maxDepth) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\tconst entries = await fs.promises.readdir(directory, {withFileTypes: true});\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (entry.isDirectory()) {\n\t\t\t\t\tqueue.push({directory: path.join(directory, entry.name), depth: depth + 1});\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\t}\n\n\treturn undefined;\n}\n\nfunction findDownBreadthFirstSync(startDirectory, paths, maxDepth, locateOptions) {\n\tconst queue = [{directory: startDirectory, depth: 0}];\n\n\twhile (queue.length > 0) {\n\t\tconst {directory, depth} = queue.shift();\n\n\t\tconst found = locatePathSync(paths, {cwd: directory, ...locateOptions});\n\t\tif (found) {\n\t\t\treturn path.resolve(directory, found);\n\t\t}\n\n\t\tif (depth >= maxDepth) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\tconst entries = fs.readdirSync(directory, {withFileTypes: true});\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (entry.isDirectory()) {\n\t\t\t\t\tqueue.push({directory: path.join(directory, entry.name), depth: depth + 1});\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\t}\n\n\treturn undefined;\n}\n\nexport async function findDown(name, options = {}) {\n\tconst {startDirectory, maxDepth, paths, locateOptions, strategy} = prepareFindDownOptions(name, options);\n\n\treturn strategy === 'depth'\n\t\t? findDownDepthFirst(startDirectory, paths, maxDepth, locateOptions)\n\t\t: findDownBreadthFirst(startDirectory, paths, maxDepth, locateOptions);\n}\n\nexport function findDownSync(name, options = {}) {\n\tconst {startDirectory, maxDepth, paths, locateOptions, strategy} = prepareFindDownOptions(name, options);\n\n\treturn strategy === 'depth'\n\t\t? findDownDepthFirstSync(startDirectory, paths, maxDepth, locateOptions)\n\t\t: findDownBreadthFirstSync(startDirectory, paths, maxDepth, locateOptions);\n}\n\n", "import process from 'node:process';\nimport path from 'node:path';\nimport fs, {promises as fsPromises} from 'node:fs';\nimport {fileURLToPath} from 'node:url';\nimport pLocate from 'p-locate';\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile',\n};\n\nfunction checkType(type) {\n\tif (type === 'both' || Object.hasOwn(typeMappings, type)) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === 'both' ? (stat.isFile() || stat.isDirectory()) : stat[typeMappings[type]]();\n\nconst toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n\nexport async function locatePath(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t\tconcurrency,\n\t\tpreserveOrder,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fsPromises.stat : fsPromises.lstat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFunction(path.resolve(cwd, path_));\n\t\t\treturn matchType(type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, {concurrency, preserveOrder});\n}\n\nexport function locatePathSync(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFunction(path.resolve(cwd, path_), {\n\t\t\t\tthrowIfNoEntry: false,\n\t\t\t});\n\n\t\t\tif (!stat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (matchType(type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n}\n", "/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\n\t\t// Clean up tail reference when queue becomes empty\n\t\tif (!this.#head) {\n\t\t\tthis.#tail = undefined;\n\t\t}\n\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n", "import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, args) => {\n\t\tqueue.enqueue(run.bind(undefined, fn, resolve, args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n", "import pLimit from 'p-limit';\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it.\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both.\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nexport default async function pLocate(\n\titerable,\n\ttester,\n\t{\n\t\tconcurrency = Number.POSITIVE_INFINITY,\n\t\tpreserveOrder = true,\n\t} = {},\n) {\n\tconst limit = pLimit(concurrency);\n\n\t// Start all the promises concurrently with optional limit.\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently.\n\tconst checkLimit = pLimit(preserveOrder ? 1 : Number.POSITIVE_INFINITY);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n", "import {promisify} from 'node:util';\nimport {execFile as execFileCallback, execFileSync as execFileSyncOriginal} from 'node:child_process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\n\nconst execFileOriginal = promisify(execFileCallback);\n\nexport function toPath(urlOrPath) {\n\treturn urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n}\n\nexport function rootDirectory(pathInput) {\n\treturn path.parse(toPath(pathInput)).root;\n}\n\nexport function traversePathUp(startPath) {\n\treturn {\n\t\t* [Symbol.iterator]() {\n\t\t\tlet currentPath = path.resolve(toPath(startPath));\n\t\t\tlet previousPath;\n\n\t\t\twhile (previousPath !== currentPath) {\n\t\t\t\tyield currentPath;\n\t\t\t\tpreviousPath = currentPath;\n\t\t\t\tcurrentPath = path.resolve(currentPath, '..');\n\t\t\t}\n\t\t},\n\t};\n}\n\nconst TEN_MEGABYTES_IN_BYTES = 10 * 1024 * 1024;\n\nexport async function execFile(file, arguments_, options = {}) {\n\treturn execFileOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\t...options,\n\t});\n}\n\nexport function execFileSync(file, arguments_ = [], options = {}) {\n\treturn execFileSyncOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\tencoding: 'utf8',\n\t\tstdio: 'pipe',\n\t\t...options,\n\t});\n}\n\nexport * from './default.js';\n", "import path from \"node:path\";\nimport nunjucks from \"nunjucks\";\nimport prettier from \"prettier\";\n\nexport interface Features {\n\ttype: string;\n\tcypress: boolean;\n\tjest: boolean;\n\ttypeinfo: false | string;\n\ttypescript: boolean;\n\tvitest: boolean;\n\tvue: boolean;\n}\n\nexport type Renderer = (src: string, dst: string, features: Features) => Promise<string>;\n\n/**\n * Render source template.\n *\n * @param src - Template filename\n * @param dst - Destination filename. Used to resolve prettier configuration.\n * @returns rendered template\n */\nexport async function renderNunjucks(\n\tsrc: string,\n\tdst: string,\n\tfeatures: Features,\n): Promise<string> {\n\tnunjucks.configure(path.dirname(src), { trimBlocks: true });\n\tconst typeinfo = features.typeinfo\n\t\t? {\n\t\t\t\trootDir: path.dirname(features.typeinfo),\n\t\t\t\ttsconfig: `./${path.basename(features.typeinfo)}`,\n\t\t\t}\n\t\t: false;\n\tconst context = { ...features, typeinfo };\n\tconst result = nunjucks.render(path.basename(src), context);\n\tconst prettierConfig = await prettier.resolveConfig(dst, {\n\t\teditorconfig: true,\n\t});\n\treturn prettier.format(result, {\n\t\t...prettierConfig,\n\t\tfilepath: dst,\n\t});\n}\n"],
  "mappings": "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",
  "names": ["path", "getStack", "args", "err", "Tokenizer", "_setPrototypeOf", "o", "p", "subclass", "Obj", "EmitterObj", "_setPrototypeOf", "o", "p", "Node", "args", "Value", "NodeList", "FromImport", "Set", "_setPrototypeOf", "o", "p", "Parser", "args", "args", "Frame", "args", "i", "len", "_setPrototypeOf", "o", "p", "Compiler", "args", "id", "_setPrototypeOf", "o", "p", "path", "_setPrototypeOf", "o", "p", "PrecompiledLoader", "_setPrototypeOf", "o", "p", "fs", "path", "FileSystemLoader", "NodeResolveLoader", "path", "_setPrototypeOf", "o", "p", "Environment", "resolveTemplate", "createTemplate", "loader", "i", "Context", "Template", "path", "err", "fs", "path", "rethrow", "count", "values", "path", "fs", "path", "promisify", "path", "process", "run", "args", "values", "process", "fileURLToPath", "toPath", "path", "toPath", "path", "nunjucks", "promisify", "path", "fs", "pkg", "args"]
}
