{ "version": 3, "sources": ["../../node_modules/handlebars/lib/handlebars/utils.js", "../../node_modules/handlebars/lib/handlebars/exception.js", "../../node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js", "../../node_modules/handlebars/lib/handlebars/helpers/each.js", "../../node_modules/handlebars/lib/handlebars/helpers/helper-missing.js", "../../node_modules/handlebars/lib/handlebars/helpers/if.js", "../../node_modules/handlebars/lib/handlebars/helpers/log.js", "../../node_modules/handlebars/lib/handlebars/helpers/lookup.js", "../../node_modules/handlebars/lib/handlebars/helpers/with.js", "../../node_modules/handlebars/lib/handlebars/helpers.js", "../../node_modules/handlebars/lib/handlebars/decorators/inline.js", "../../node_modules/handlebars/lib/handlebars/decorators.js", "../../node_modules/handlebars/lib/handlebars/logger.js", "../../node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js", "../../node_modules/handlebars/lib/handlebars/internal/proto-access.js", "../../node_modules/handlebars/lib/handlebars/base.js", "../../node_modules/handlebars/lib/handlebars/safe-string.js", "../../node_modules/handlebars/lib/handlebars/internal/wrapHelper.js", "../../node_modules/handlebars/lib/handlebars/runtime.js", "../../node_modules/handlebars/lib/handlebars/no-conflict.js", "../../node_modules/handlebars/lib/handlebars.runtime.js", "../../node_modules/handlebars/lib/handlebars/compiler/ast.js", "../../node_modules/handlebars/lib/handlebars/compiler/parser.js", "../../node_modules/handlebars/lib/handlebars/compiler/visitor.js", "../../node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js", "../../node_modules/handlebars/lib/handlebars/compiler/helpers.js", "../../node_modules/handlebars/lib/handlebars/compiler/base.js", "../../node_modules/handlebars/lib/handlebars/compiler/compiler.js", "../../node_modules/source-map/lib/base64.js", "../../node_modules/source-map/lib/base64-vlq.js", "../../node_modules/source-map/lib/util.js", "../../node_modules/source-map/lib/array-set.js", "../../node_modules/source-map/lib/mapping-list.js", "../../node_modules/source-map/lib/source-map-generator.js", "../../node_modules/source-map/lib/binary-search.js", "../../node_modules/source-map/lib/quick-sort.js", "../../node_modules/source-map/lib/source-map-consumer.js", "../../node_modules/source-map/lib/source-node.js", "../../node_modules/source-map/source-map.js", "../../node_modules/handlebars/lib/handlebars/compiler/code-gen.js", "../../node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js", "../../node_modules/handlebars/lib/handlebars.js", "../../node_modules/yomitan-handlebars/src/handlebars.ts", "../../node_modules/yomitan-handlebars/src/visitor.ts", "../../node_modules/yomitan-handlebars/src/symbols.ts", "../../node_modules/yomitan-handlebars/src/utils.ts"], "sourcesContent": ["const escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nconst badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nexport function extend(obj /* , ...source */) {\n for (let i = 1; i < arguments.length; i++) {\n for (let key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nexport let toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nlet isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return (\n typeof value === 'function' &&\n toString.call(value) === '[object Function]'\n );\n };\n}\nexport { isFunction };\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nexport const isArray =\n Array.isArray ||\n function(value) {\n return value && typeof value === 'object'\n ? toString.call(value) === '[object Array]'\n : false;\n };\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexport function indexOf(array, value) {\n for (let i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nexport function escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nexport function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function createFrame(object) {\n let frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nexport function blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nexport function appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n", "const errorProps = [\n 'description',\n 'fileName',\n 'lineNumber',\n 'endLineNumber',\n 'message',\n 'name',\n 'number',\n 'stack'\n];\n\nfunction Exception(message, node) {\n let loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n let tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (let idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexport default Exception;\n", "import { appendContextPath, createFrame, isArray } from '../utils';\n\nexport default function(instance) {\n instance.registerHelper('blockHelperMissing', function(context, options) {\n let inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n let data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.name\n );\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isArray,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('each', function(context, options) {\n if (!options) {\n throw new Exception('Must pass iterator to #each');\n }\n\n let fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data,\n contextPath;\n\n if (options.data && options.ids) {\n contextPath =\n appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret =\n ret +\n fn(context[field], {\n data: data,\n blockParams: blockParams(\n [context[field], field],\n [contextPath + field, null]\n )\n });\n }\n\n if (context && typeof context === 'object') {\n if (isArray(context)) {\n for (let j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n const newContext = [];\n const iterator = context[Symbol.iterator]();\n for (let it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (let j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n let priorKey;\n\n Object.keys(context).forEach(key => {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n}\n", "import Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new Exception(\n 'Missing helper: \"' + arguments[arguments.length - 1].name + '\"'\n );\n }\n });\n}\n", "import { isEmpty, isFunction } from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('if', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#if requires exactly one argument');\n }\n if (isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n}\n", "export default function(instance) {\n instance.registerHelper('log', function(/* message, options */) {\n let args = [undefined],\n options = arguments[arguments.length - 1];\n for (let i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n let level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log(...args);\n });\n}\n", "export default function(instance) {\n instance.registerHelper('lookup', function(obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isEmpty,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('with', function(context, options) {\n if (arguments.length != 2) {\n throw new Exception('#with requires exactly one argument');\n }\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n let fn = options.fn;\n\n if (!isEmpty(context)) {\n let data = options.data;\n if (options.data && options.ids) {\n data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.ids[0]\n );\n }\n\n return fn(context, {\n data: data,\n blockParams: blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n}\n", "import registerBlockHelperMissing from './helpers/block-helper-missing';\nimport registerEach from './helpers/each';\nimport registerHelperMissing from './helpers/helper-missing';\nimport registerIf from './helpers/if';\nimport registerLog from './helpers/log';\nimport registerLookup from './helpers/lookup';\nimport registerWith from './helpers/with';\n\nexport function registerDefaultHelpers(instance) {\n registerBlockHelperMissing(instance);\n registerEach(instance);\n registerHelperMissing(instance);\n registerIf(instance);\n registerLog(instance);\n registerLookup(instance);\n registerWith(instance);\n}\n\nexport function moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n", "import { extend } from '../utils';\n\nexport default function(instance) {\n instance.registerDecorator('inline', function(fn, props, container, options) {\n let ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function(context, options) {\n // Create a new partials stack frame prior to exec.\n let original = container.partials;\n container.partials = extend({}, original, props.partials);\n let ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n}\n", "import registerInline from './decorators/inline';\n\nexport function registerDefaultDecorators(instance) {\n registerInline(instance);\n}\n", "import { indexOf } from './utils';\n\nlet logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function(level) {\n if (typeof level === 'string') {\n let levelMap = indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function(level, ...message) {\n level = logger.lookupLevel(level);\n\n if (\n typeof console !== 'undefined' &&\n logger.lookupLevel(logger.level) <= level\n ) {\n let method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n console[method](...message); // eslint-disable-line no-console\n }\n }\n};\n\nexport default logger;\n", "import { extend } from '../utils';\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\nexport function createNewLookupObject(...sources) {\n return extend(Object.create(null), ...sources);\n}\n", "import { createNewLookupObject } from './create-new-lookup-object';\nimport logger from '../logger';\n\nconst loggedProperties = Object.create(null);\n\nexport function createProtoAccessControl(runtimeOptions) {\n let defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n let defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: createNewLookupObject(\n defaultPropertyWhiteList,\n runtimeOptions.allowedProtoProperties\n ),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: createNewLookupObject(\n defaultMethodWhiteList,\n runtimeOptions.allowedProtoMethods\n ),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nexport function resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log(\n 'error',\n `Handlebars: Access has been denied to resolve the property \"${propertyName}\" because it is not an \"own property\" of its parent.\\n` +\n `You can add a runtime option to disable the check or this warning:\\n` +\n `See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`\n );\n }\n}\n\nexport function resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(propertyName => {\n delete loggedProperties[propertyName];\n });\n}\n", "import { createFrame, extend, toString } from './utils';\nimport Exception from './exception';\nimport { registerDefaultHelpers } from './helpers';\nimport { registerDefaultDecorators } from './decorators';\nimport logger from './logger';\nimport { resetLoggedProperties } from './internal/proto-access';\n\nexport const VERSION = '4.7.8';\nexport const COMPILER_REVISION = 8;\nexport const LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexport const REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nconst objectType = '[object Object]';\n\nexport function HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n registerDefaultHelpers(this);\n registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: logger.log,\n\n registerHelper: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple helpers');\n }\n extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function(name, partial) {\n if (toString.call(name) === objectType) {\n extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new Exception(\n `Attempting to register a partial called \"${name}\" as undefined`\n );\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple decorators');\n }\n extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses() {\n resetLoggedProperties();\n }\n};\n\nexport let log = logger.log;\n\nexport { createFrame, logger };\n", "// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n return '' + this.string;\n};\n\nexport default SafeString;\n", "export function wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n let wrapper = function(/* dynamic arguments */) {\n const options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n", "import * as Utils from './utils';\nimport Exception from './exception';\nimport {\n COMPILER_REVISION,\n createFrame,\n LAST_COMPATIBLE_COMPILER_REVISION,\n REVISION_CHANGES\n} from './base';\nimport { moveHelperToHooks } from './helpers';\nimport { wrapHelper } from './internal/wrapHelper';\nimport {\n createProtoAccessControl,\n resultIsAllowed\n} from './internal/proto-access';\n\nexport function checkRevision(compilerInfo) {\n const compilerRevision = (compilerInfo && compilerInfo[0]) || 1,\n currentRevision = COMPILER_REVISION;\n\n if (\n compilerRevision >= LAST_COMPATIBLE_COMPILER_REVISION &&\n compilerRevision <= COMPILER_REVISION\n ) {\n return;\n }\n\n if (compilerRevision < LAST_COMPATIBLE_COMPILER_REVISION) {\n const runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\n 'Template was precompiled with an older version of Handlebars than the current runtime. ' +\n 'Please update your precompiler to a newer version (' +\n runtimeVersions +\n ') or downgrade your runtime to an older version (' +\n compilerVersions +\n ').'\n );\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\n 'Template was precompiled with a newer version of Handlebars than the current runtime. ' +\n 'Please update your runtime to a newer version (' +\n compilerInfo[1] +\n ').'\n );\n }\n}\n\nexport function template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new Exception('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new Exception('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n const templateWasPrecompiledWithCompilerV7 =\n templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n let extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n let result = env.VM.invokePartial.call(\n this,\n partial,\n context,\n extendedOptions\n );\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(\n partial,\n templateSpec.compilerOptions,\n env\n );\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n let lines = result.split('\\n');\n for (let i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new Exception(\n 'The partial ' +\n options.name +\n ' could not be compiled when running in runtime-only mode'\n );\n }\n }\n\n // Just add water\n let container = {\n strict: function(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Exception('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function(parent, propertyName) {\n let result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function(depths, name) {\n const len = depths.length;\n for (let i = 0; i < len; i++) {\n let result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function(i) {\n let ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function(i, data, declaredBlockParams, blockParams, depths) {\n let programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(\n this,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n );\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function(param, common) {\n let obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context, options = {}) {\n let data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n let depths,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths =\n context != options.depths[0]\n ? [context].concat(options.depths)\n : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return (\n '' +\n templateSpec.main(\n container,\n context,\n container.helpers,\n container.partials,\n data,\n blockParams,\n depths\n )\n );\n }\n\n main = executeDecorators(\n templateSpec.main,\n main,\n container,\n options.depths || [],\n data,\n blockParams\n );\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function(options) {\n if (!options.partial) {\n let mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(\n options.partials,\n env.partials\n );\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend(\n {},\n env.decorators,\n options.decorators\n );\n }\n\n container.hooks = {};\n container.protoAccessControl = createProtoAccessControl(options);\n\n let keepHelperInHelpers =\n options.allowCallsToHelperMissing ||\n templateWasPrecompiledWithCompilerV7;\n moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function(i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new Exception('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new Exception('must pass parent depths');\n }\n\n return wrapProgram(\n container,\n i,\n templateSpec[i],\n data,\n 0,\n blockParams,\n depths\n );\n };\n return ret;\n}\n\nexport function wrapProgram(\n container,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n) {\n function prog(context, options = {}) {\n let currentDepths = depths;\n if (\n depths &&\n context != depths[0] &&\n !(context === container.nullContext && depths[0] === null)\n ) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(\n container,\n context,\n container.helpers,\n container.partials,\n options.data || data,\n blockParams && [options.blockParams].concat(blockParams),\n currentDepths\n );\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\nexport function resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nexport function invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n const currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n let partialBlock;\n if (options.fn && options.fn !== noop) {\n options.data = createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n let fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context,\n options = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new Exception('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexport function noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n let props = {};\n prog = fn.decorator(\n prog,\n props,\n container,\n depths && depths[0],\n data,\n blockParams,\n depths\n );\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(helperName => {\n let helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n const lookupProperty = container.lookupProperty;\n return wrapHelper(helper, options => {\n return Utils.extend({ lookupProperty }, options);\n });\n}\n", "/* global globalThis */\nexport default function(Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function() {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function() {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n const $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function() {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n}\n", "import * as base from './handlebars/base';\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nimport SafeString from './handlebars/safe-string';\nimport Exception from './handlebars/exception';\nimport * as Utils from './handlebars/utils';\nimport * as runtime from './handlebars/runtime';\n\nimport noConflict from './handlebars/no-conflict';\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n let hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst['default'] = inst;\n\nexport default inst;\n", "let AST = {\n // Public API used to evaluate derived attributes regarding AST nodes\n helpers: {\n // a mustache is definitely a helper if:\n // * it is an eligible helper, and\n // * it has at least one parameter or hash segment\n helperExpression: function(node) {\n return (\n node.type === 'SubExpression' ||\n ((node.type === 'MustacheStatement' ||\n node.type === 'BlockStatement') &&\n !!((node.params && node.params.length) || node.hash))\n );\n },\n\n scopedId: function(path) {\n return /^\\.|this\\b/.test(path.original);\n },\n\n // an ID is simple if it only has one part, and that part is not\n // `..` or `this`.\n simpleId: function(path) {\n return (\n path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth\n );\n }\n }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexport default AST;\n", "// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\nvar handlebars = (function(){\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"partialBlock\":12,\"content\":13,\"COMMENT\":14,\"CONTENT\":15,\"openRawBlock\":16,\"rawBlock_repetition0\":17,\"END_RAW_BLOCK\":18,\"OPEN_RAW_BLOCK\":19,\"helperName\":20,\"openRawBlock_repetition0\":21,\"openRawBlock_option0\":22,\"CLOSE_RAW_BLOCK\":23,\"openBlock\":24,\"block_option0\":25,\"closeBlock\":26,\"openInverse\":27,\"block_option1\":28,\"OPEN_BLOCK\":29,\"openBlock_repetition0\":30,\"openBlock_option0\":31,\"openBlock_option1\":32,\"CLOSE\":33,\"OPEN_INVERSE\":34,\"openInverse_repetition0\":35,\"openInverse_option0\":36,\"openInverse_option1\":37,\"openInverseChain\":38,\"OPEN_INVERSE_CHAIN\":39,\"openInverseChain_repetition0\":40,\"openInverseChain_option0\":41,\"openInverseChain_option1\":42,\"inverseAndProgram\":43,\"INVERSE\":44,\"inverseChain\":45,\"inverseChain_option0\":46,\"OPEN_ENDBLOCK\":47,\"OPEN\":48,\"mustache_repetition0\":49,\"mustache_option0\":50,\"OPEN_UNESCAPED\":51,\"mustache_repetition1\":52,\"mustache_option1\":53,\"CLOSE_UNESCAPED\":54,\"OPEN_PARTIAL\":55,\"partialName\":56,\"partial_repetition0\":57,\"partial_option0\":58,\"openPartialBlock\":59,\"OPEN_PARTIAL_BLOCK\":60,\"openPartialBlock_repetition0\":61,\"openPartialBlock_option0\":62,\"param\":63,\"sexpr\":64,\"OPEN_SEXPR\":65,\"sexpr_repetition0\":66,\"sexpr_option0\":67,\"CLOSE_SEXPR\":68,\"hash\":69,\"hash_repetition_plus0\":70,\"hashSegment\":71,\"ID\":72,\"EQUALS\":73,\"blockParams\":74,\"OPEN_BLOCK_PARAMS\":75,\"blockParams_repetition_plus0\":76,\"CLOSE_BLOCK_PARAMS\":77,\"path\":78,\"dataName\":79,\"STRING\":80,\"NUMBER\":81,\"BOOLEAN\":82,\"UNDEFINED\":83,\"NULL\":84,\"DATA\":85,\"pathSegments\":86,\"SEP\":87,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",14:\"COMMENT\",15:\"CONTENT\",18:\"END_RAW_BLOCK\",19:\"OPEN_RAW_BLOCK\",23:\"CLOSE_RAW_BLOCK\",29:\"OPEN_BLOCK\",33:\"CLOSE\",34:\"OPEN_INVERSE\",39:\"OPEN_INVERSE_CHAIN\",44:\"INVERSE\",47:\"OPEN_ENDBLOCK\",48:\"OPEN\",51:\"OPEN_UNESCAPED\",54:\"CLOSE_UNESCAPED\",55:\"OPEN_PARTIAL\",60:\"OPEN_PARTIAL_BLOCK\",65:\"OPEN_SEXPR\",68:\"CLOSE_SEXPR\",72:\"ID\",73:\"EQUALS\",75:\"OPEN_BLOCK_PARAMS\",77:\"CLOSE_BLOCK_PARAMS\",80:\"STRING\",81:\"NUMBER\",82:\"BOOLEAN\",83:\"UNDEFINED\",84:\"NULL\",85:\"DATA\",87:\"SEP\"},\nproductions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],\nperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$\n) {\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1: return $$[$0-1]; \nbreak;\ncase 2:this.$ = yy.prepareProgram($$[$0]);\nbreak;\ncase 3:this.$ = $$[$0];\nbreak;\ncase 4:this.$ = $$[$0];\nbreak;\ncase 5:this.$ = $$[$0];\nbreak;\ncase 6:this.$ = $$[$0];\nbreak;\ncase 7:this.$ = $$[$0];\nbreak;\ncase 8:this.$ = $$[$0];\nbreak;\ncase 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 11:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 12:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };\nbreak;\ncase 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\nbreak;\ncase 14:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\nbreak;\ncase 15:this.$ = { open: $$[$0-5], path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 17:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 18:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\nbreak;\ncase 19:\n var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0-1].loc);\n program.chained = true;\n\n this.$ = { strip: $$[$0-2].strip, program: program, chain: true };\n \nbreak;\ncase 20:this.$ = $$[$0];\nbreak;\ncase 21:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\nbreak;\ncase 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 23:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n indent: '',\n strip: yy.stripFlags($$[$0-4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 25:this.$ = yy.preparePartialBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 26:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1], strip: yy.stripFlags($$[$0-4], $$[$0]) };\nbreak;\ncase 27:this.$ = $$[$0];\nbreak;\ncase 28:this.$ = $$[$0];\nbreak;\ncase 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 30:this.$ = {type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 31:this.$ = {type: 'HashPair', key: yy.id($$[$0-2]), value: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 32:this.$ = yy.id($$[$0-1]);\nbreak;\ncase 33:this.$ = $$[$0];\nbreak;\ncase 34:this.$ = $$[$0];\nbreak;\ncase 35:this.$ = {type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 36:this.$ = {type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$)};\nbreak;\ncase 37:this.$ = {type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$)};\nbreak;\ncase 38:this.$ = {type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$)};\nbreak;\ncase 39:this.$ = {type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$)};\nbreak;\ncase 40:this.$ = $$[$0];\nbreak;\ncase 41:this.$ = $$[$0];\nbreak;\ncase 42:this.$ = yy.preparePath(true, $$[$0], this._$);\nbreak;\ncase 43:this.$ = yy.preparePath(false, $$[$0], this._$);\nbreak;\ncase 44: $$[$0-2].push({part: yy.id($$[$0]), original: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \nbreak;\ncase 45:this.$ = [{part: yy.id($$[$0]), original: $$[$0]}];\nbreak;\ncase 46:this.$ = [];\nbreak;\ncase 47:$$[$0-1].push($$[$0]);\nbreak;\ncase 48:this.$ = [];\nbreak;\ncase 49:$$[$0-1].push($$[$0]);\nbreak;\ncase 50:this.$ = [];\nbreak;\ncase 51:$$[$0-1].push($$[$0]);\nbreak;\ncase 58:this.$ = [];\nbreak;\ncase 59:$$[$0-1].push($$[$0]);\nbreak;\ncase 64:this.$ = [];\nbreak;\ncase 65:$$[$0-1].push($$[$0]);\nbreak;\ncase 70:this.$ = [];\nbreak;\ncase 71:$$[$0-1].push($$[$0]);\nbreak;\ncase 78:this.$ = [];\nbreak;\ncase 79:$$[$0-1].push($$[$0]);\nbreak;\ncase 82:this.$ = [];\nbreak;\ncase 83:$$[$0-1].push($$[$0]);\nbreak;\ncase 86:this.$ = [];\nbreak;\ncase 87:$$[$0-1].push($$[$0]);\nbreak;\ncase 90:this.$ = [];\nbreak;\ncase 91:$$[$0-1].push($$[$0]);\nbreak;\ncase 94:this.$ = [];\nbreak;\ncase 95:$$[$0-1].push($$[$0]);\nbreak;\ncase 98:this.$ = [$$[$0]];\nbreak;\ncase 99:$$[$0-1].push($$[$0]);\nbreak;\ncase 100:this.$ = [$$[$0]];\nbreak;\ncase 101:$$[$0-1].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],\ndefaultActions: {4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},\nparseError: function parseError (str, hash) {\n throw new Error(str);\n},\nparse: function parse(input) {\n var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n this.yy.parser = this;\n if (typeof this.lexer.yylloc == \"undefined\")\n this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n var ranges = this.lexer.options && this.lexer.options.ranges;\n if (typeof this.yy.parseError === \"function\")\n this.parseError = this.yy.parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = self.lexer.lex() || 1;\n if (typeof token !== \"number\") {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n if (!recovering) {\n expected = [];\n for (p in table[state])\n if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n if (this.lexer.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n }\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0)\n recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}\n};\n/* Jison generated lexer */\nvar lexer = (function(){\nvar lexer = ({EOF:1,\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\nsetInput:function (input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n if (this.options.ranges) this.yylloc.range = [0,0];\n this.offset = 0;\n return this;\n },\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) this.yylloc.range[1]++;\n\n this._input = this._input.slice(1);\n return ch;\n },\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length-1);\n this.matched = this.matched.substr(0, this.matched.length-1);\n\n if (lines.length-1) this.yylineno -= lines.length-1;\n var r = this.yylloc.range;\n\n this.yylloc = {first_line: this.yylloc.first_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n return this;\n },\nmore:function () {\n this._more = true;\n return this;\n },\nless:function (n) {\n this.unput(this.match.slice(n));\n },\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n },\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n },\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) this.done = true;\n\n var token,\n match,\n tempMatch,\n index,\n col,\n lines;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i=0;i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n if (match) {\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {first_line: this.yylloc.last_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;\n else return;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n {text: \"\", token: null, line: this.yylineno});\n }\n },\nlex:function lex () {\n var r = this.next();\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\npopState:function popState () {\n return this.conditionStack.pop();\n },\n_currentRules:function _currentRules () {\n return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n },\ntopState:function () {\n return this.conditionStack[this.conditionStack.length-2];\n },\npushState:function begin (condition) {\n this.begin(condition);\n }});\nlexer.options = {};\nlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START\n) {\n\n\nfunction strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n}\n\n\nvar YYSTATE=YY_START\nswitch($avoiding_name_collisions) {\ncase 0:\n if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0,1);\n this.begin(\"mu\");\n } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0,1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n if(yy_.yytext) return 15;\n \nbreak;\ncase 1:return 15;\nbreak;\ncase 2:\n this.popState();\n return 15;\n \nbreak;\ncase 3:this.begin('raw'); return 15;\nbreak;\ncase 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length-1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 'END_RAW_BLOCK';\n }\n \nbreak;\ncase 5: return 15; \nbreak;\ncase 6:\n this.popState();\n return 14;\n\nbreak;\ncase 7:return 65;\nbreak;\ncase 8:return 68;\nbreak;\ncase 9: return 19; \nbreak;\ncase 10:\n this.popState();\n this.begin('raw');\n return 23;\n \nbreak;\ncase 11:return 55;\nbreak;\ncase 12:return 60;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 47;\nbreak;\ncase 15:this.popState(); return 44;\nbreak;\ncase 16:this.popState(); return 44;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 39;\nbreak;\ncase 19:return 51;\nbreak;\ncase 20:return 48;\nbreak;\ncase 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n\nbreak;\ncase 22:\n this.popState();\n return 14;\n\nbreak;\ncase 23:return 48;\nbreak;\ncase 24:return 73;\nbreak;\ncase 25:return 72;\nbreak;\ncase 26:return 72;\nbreak;\ncase 27:return 87;\nbreak;\ncase 28:// ignore whitespace\nbreak;\ncase 29:this.popState(); return 54;\nbreak;\ncase 30:this.popState(); return 33;\nbreak;\ncase 31:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 80;\nbreak;\ncase 32:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 80;\nbreak;\ncase 33:return 85;\nbreak;\ncase 34:return 82;\nbreak;\ncase 35:return 82;\nbreak;\ncase 36:return 83;\nbreak;\ncase 37:return 84;\nbreak;\ncase 38:return 81;\nbreak;\ncase 39:return 75;\nbreak;\ncase 40:return 77;\nbreak;\ncase 41:return 72;\nbreak;\ncase 42:yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g,'$1'); return 72;\nbreak;\ncase 43:return 'INVALID';\nbreak;\ncase 44:return 5;\nbreak;\n}\n};\nlexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{(?=[^/]))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#>)/,/^(?:\\{\\{(~)?#\\*?)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?\\*?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:undefined(?=([~}\\s)])))/,/^(?:null(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[(\\\\\\]|[^\\]])*\\])/,/^(?:.)/,/^(?:$)/];\nlexer.conditions = {\"mu\":{\"rules\":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[6],\"inclusive\":false},\"raw\":{\"rules\":[3,4,5],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,44],\"inclusive\":true}};\nreturn lexer;})()\nparser.lexer = lexer;\nfunction Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();export default handlebars;\n", "import Exception from '../exception';\n\nfunction Visitor() {\n this.parents = [];\n}\n\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function(node, name) {\n let value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception(\n 'Unexpected node type \"' +\n value.type +\n '\" found when accepting ' +\n name +\n ' on ' +\n node.type\n );\n }\n node[name] = value;\n }\n },\n\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function(array) {\n for (let i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n\n accept: function(object) {\n if (!object) {\n return;\n }\n\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n\n let ret = this[object.type](object);\n\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n\n Program: function(program) {\n this.acceptArray(program.body);\n },\n\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n\n PartialStatement: visitPartial,\n PartialBlockStatement: function(partial) {\n visitPartial.call(this, partial);\n\n this.acceptKey(partial, 'program');\n },\n\n ContentStatement: function(/* content */) {},\n CommentStatement: function(/* comment */) {},\n\n SubExpression: visitSubExpression,\n\n PathExpression: function(/* path */) {},\n\n StringLiteral: function(/* string */) {},\n NumberLiteral: function(/* number */) {},\n BooleanLiteral: function(/* bool */) {},\n UndefinedLiteral: function(/* literal */) {},\n NullLiteral: function(/* literal */) {},\n\n Hash: function(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function(pair) {\n this.acceptRequired(pair, 'value');\n }\n};\n\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\n\nexport default Visitor;\n", "import Visitor from './visitor';\n\nfunction WhitespaceControl(options = {}) {\n this.options = options;\n}\nWhitespaceControl.prototype = new Visitor();\n\nWhitespaceControl.prototype.Program = function(program) {\n const doStandalone = !this.options.ignoreStandalone;\n\n let isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n\n let body = program.body;\n for (let i = 0, l = body.length; i < l; i++) {\n let current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n let _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone =\n strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n};\n\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(\n block\n) {\n this.accept(block.program);\n this.accept(block.inverse);\n\n // Find the inverse program that is involed with whitespace stripping.\n let program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n let strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n let inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n\n // Find standalone else statments\n if (\n !this.options.ignoreStandalone &&\n isPrevWhitespace(program.body) &&\n isNextWhitespace(firstInverse.body)\n ) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n};\n\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(\n mustache\n) {\n return mustache.strip;\n};\n\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(\n node\n) {\n /* istanbul ignore next */\n let strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n};\n\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n let prev = body[i - 1],\n sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(\n prev.original\n );\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n let next = body[i + 1],\n sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(\n next.original\n );\n }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n let current = body[i == null ? 0 : i + 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.rightStripped)\n ) {\n return;\n }\n\n let original = current.value;\n current.value = current.value.replace(\n multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/,\n ''\n );\n current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n let current = body[i == null ? body.length - 1 : i - 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.leftStripped)\n ) {\n return;\n }\n\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n let original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\n\nexport default WhitespaceControl;\n", "import Exception from '../exception';\n\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n let errorNode = { loc: open.path.loc };\n\n throw new Exception(\n open.path.original + \" doesn't match \" + close,\n errorNode\n );\n }\n}\n\nexport function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n}\n\nexport function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n}\n\nexport function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n}\n\nexport function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\n\nexport function preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n\n let original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (let i = 0, l = parts.length; i < l; i++) {\n let part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new Exception('Invalid path: ' + original, { loc });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data,\n depth,\n parts: dig,\n original,\n loc\n };\n}\n\nexport function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n let escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n let decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path,\n params,\n hash,\n escaped,\n strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n\n locInfo = this.locInfo(locInfo);\n let program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n}\n\nexport function prepareBlock(\n openBlock,\n program,\n inverseAndProgram,\n close,\n inverted,\n locInfo\n) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n let decorator = /\\*/.test(openBlock.open);\n\n program.blockParams = openBlock.blockParams;\n\n let inverse, inverseStrip;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception(\n 'Unexpected inverse block on decorator',\n inverseAndProgram\n );\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program,\n inverse,\n openStrip: openBlock.strip,\n inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n const firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n}\n\nexport function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n", "import parser from './parser';\nimport WhitespaceControl from './whitespace-control';\nimport * as Helpers from './helpers';\nimport { extend } from '../utils';\n\nexport { parser };\n\nlet yy = {};\nextend(yy, Helpers);\n\nexport function parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n parser.yy = yy;\n\n // Altering the shared object here, but this is ok as parser is a sync operation\n yy.locInfo = function(locInfo) {\n return new yy.SourceLocation(options && options.srcName, locInfo);\n };\n\n let ast = parser.parse(input);\n\n return ast;\n}\n\nexport function parse(input, options) {\n let ast = parseWithoutProcessing(input, options);\n let strip = new WhitespaceControl(options);\n\n return strip.accept(ast);\n}\n", "/* eslint-disable new-cap */\n\nimport Exception from '../exception';\nimport { isArray, indexOf, extend } from '../utils';\nimport AST from './ast';\n\nconst slice = [].slice;\n\nexport function Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n compiler: Compiler,\n\n equals: function(other) {\n let len = this.opcodes.length;\n if (other.opcodes.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n let opcode = this.opcodes[i],\n otherOpcode = other.opcodes[i];\n if (\n opcode.opcode !== otherOpcode.opcode ||\n !argEquals(opcode.args, otherOpcode.args)\n ) {\n return false;\n }\n }\n\n // We know that length is the same between the two arrays because they are directly tied\n // to the opcode behavior above.\n len = this.children.length;\n for (let i = 0; i < len; i++) {\n if (!this.children[i].equals(other.children[i])) {\n return false;\n }\n }\n\n return true;\n },\n\n guid: 0,\n\n compile: function(program, options) {\n this.sourceNode = [];\n this.opcodes = [];\n this.children = [];\n this.options = options;\n this.stringParams = options.stringParams;\n this.trackIds = options.trackIds;\n\n options.blockParams = options.blockParams || [];\n\n options.knownHelpers = extend(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true\n },\n options.knownHelpers\n );\n\n return this.accept(program);\n },\n\n compileProgram: function(program) {\n let childCompiler = new this.compiler(), // eslint-disable-line new-cap\n result = childCompiler.compile(program, this.options),\n guid = this.guid++;\n\n this.usePartial = this.usePartial || result.usePartial;\n\n this.children[guid] = result;\n this.useDepths = this.useDepths || result.useDepths;\n\n return guid;\n },\n\n accept: function(node) {\n /* istanbul ignore next: Sanity code */\n if (!this[node.type]) {\n throw new Exception('Unknown type: ' + node.type, node);\n }\n\n this.sourceNode.unshift(node);\n let ret = this[node.type](node);\n this.sourceNode.shift();\n return ret;\n },\n\n Program: function(program) {\n this.options.blockParams.unshift(program.blockParams);\n\n let body = program.body,\n bodyLength = body.length;\n for (let i = 0; i < bodyLength; i++) {\n this.accept(body[i]);\n }\n\n this.options.blockParams.shift();\n\n this.isSimple = bodyLength === 1;\n this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n return this;\n },\n\n BlockStatement: function(block) {\n transformLiteralToPath(block);\n\n let program = block.program,\n inverse = block.inverse;\n\n program = program && this.compileProgram(program);\n inverse = inverse && this.compileProgram(inverse);\n\n let type = this.classifySexpr(block);\n\n if (type === 'helper') {\n this.helperSexpr(block, program, inverse);\n } else if (type === 'simple') {\n this.simpleSexpr(block);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('blockValue', block.path.original);\n } else {\n this.ambiguousSexpr(block, program, inverse);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('ambiguousBlockValue');\n }\n\n this.opcode('append');\n },\n\n DecoratorBlock(decorator) {\n let program = decorator.program && this.compileProgram(decorator.program);\n let params = this.setupFullMustacheParams(decorator, program, undefined),\n path = decorator.path;\n\n this.useDecorators = true;\n this.opcode('registerDecorator', params.length, path.original);\n },\n\n PartialStatement: function(partial) {\n this.usePartial = true;\n\n let program = partial.program;\n if (program) {\n program = this.compileProgram(partial.program);\n }\n\n let params = partial.params;\n if (params.length > 1) {\n throw new Exception(\n 'Unsupported number of partial arguments: ' + params.length,\n partial\n );\n } else if (!params.length) {\n if (this.options.explicitPartialContext) {\n this.opcode('pushLiteral', 'undefined');\n } else {\n params.push({ type: 'PathExpression', parts: [], depth: 0 });\n }\n }\n\n let partialName = partial.name.original,\n isDynamic = partial.name.type === 'SubExpression';\n if (isDynamic) {\n this.accept(partial.name);\n }\n\n this.setupFullMustacheParams(partial, program, undefined, true);\n\n let indent = partial.indent || '';\n if (this.options.preventIndent && indent) {\n this.opcode('appendContent', indent);\n indent = '';\n }\n\n this.opcode('invokePartial', isDynamic, partialName, indent);\n this.opcode('append');\n },\n PartialBlockStatement: function(partialBlock) {\n this.PartialStatement(partialBlock);\n },\n\n MustacheStatement: function(mustache) {\n this.SubExpression(mustache);\n\n if (mustache.escaped && !this.options.noEscape) {\n this.opcode('appendEscaped');\n } else {\n this.opcode('append');\n }\n },\n Decorator(decorator) {\n this.DecoratorBlock(decorator);\n },\n\n ContentStatement: function(content) {\n if (content.value) {\n this.opcode('appendContent', content.value);\n }\n },\n\n CommentStatement: function() {},\n\n SubExpression: function(sexpr) {\n transformLiteralToPath(sexpr);\n let type = this.classifySexpr(sexpr);\n\n if (type === 'simple') {\n this.simpleSexpr(sexpr);\n } else if (type === 'helper') {\n this.helperSexpr(sexpr);\n } else {\n this.ambiguousSexpr(sexpr);\n }\n },\n ambiguousSexpr: function(sexpr, program, inverse) {\n let path = sexpr.path,\n name = path.parts[0],\n isBlock = program != null || inverse != null;\n\n this.opcode('getContext', path.depth);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n path.strict = true;\n this.accept(path);\n\n this.opcode('invokeAmbiguous', name, isBlock);\n },\n\n simpleSexpr: function(sexpr) {\n let path = sexpr.path;\n path.strict = true;\n this.accept(path);\n this.opcode('resolvePossibleLambda');\n },\n\n helperSexpr: function(sexpr, program, inverse) {\n let params = this.setupFullMustacheParams(sexpr, program, inverse),\n path = sexpr.path,\n name = path.parts[0];\n\n if (this.options.knownHelpers[name]) {\n this.opcode('invokeKnownHelper', params.length, name);\n } else if (this.options.knownHelpersOnly) {\n throw new Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n sexpr\n );\n } else {\n path.strict = true;\n path.falsy = true;\n\n this.accept(path);\n this.opcode(\n 'invokeHelper',\n params.length,\n path.original,\n AST.helpers.simpleId(path)\n );\n }\n },\n\n PathExpression: function(path) {\n this.addDepth(path.depth);\n this.opcode('getContext', path.depth);\n\n let name = path.parts[0],\n scoped = AST.helpers.scopedId(path),\n blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n if (blockParamId) {\n this.opcode('lookupBlockParam', blockParamId, path.parts);\n } else if (!name) {\n // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n this.opcode('pushContext');\n } else if (path.data) {\n this.options.data = true;\n this.opcode('lookupData', path.depth, path.parts, path.strict);\n } else {\n this.opcode(\n 'lookupOnContext',\n path.parts,\n path.falsy,\n path.strict,\n scoped\n );\n }\n },\n\n StringLiteral: function(string) {\n this.opcode('pushString', string.value);\n },\n\n NumberLiteral: function(number) {\n this.opcode('pushLiteral', number.value);\n },\n\n BooleanLiteral: function(bool) {\n this.opcode('pushLiteral', bool.value);\n },\n\n UndefinedLiteral: function() {\n this.opcode('pushLiteral', 'undefined');\n },\n\n NullLiteral: function() {\n this.opcode('pushLiteral', 'null');\n },\n\n Hash: function(hash) {\n let pairs = hash.pairs,\n i = 0,\n l = pairs.length;\n\n this.opcode('pushHash');\n\n for (; i < l; i++) {\n this.pushParam(pairs[i].value);\n }\n while (i--) {\n this.opcode('assignToHash', pairs[i].key);\n }\n this.opcode('popHash');\n },\n\n // HELPERS\n opcode: function(name) {\n this.opcodes.push({\n opcode: name,\n args: slice.call(arguments, 1),\n loc: this.sourceNode[0].loc\n });\n },\n\n addDepth: function(depth) {\n if (!depth) {\n return;\n }\n\n this.useDepths = true;\n },\n\n classifySexpr: function(sexpr) {\n let isSimple = AST.helpers.simpleId(sexpr.path);\n\n let isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(sexpr);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n let name = sexpr.path.parts[0],\n options = this.options;\n if (options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return 'helper';\n } else if (isEligible) {\n return 'ambiguous';\n } else {\n return 'simple';\n }\n },\n\n pushParams: function(params) {\n for (let i = 0, l = params.length; i < l; i++) {\n this.pushParam(params[i]);\n }\n },\n\n pushParam: function(val) {\n let value = val.value != null ? val.value : val.original || '';\n\n if (this.stringParams) {\n if (value.replace) {\n value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n }\n\n if (val.depth) {\n this.addDepth(val.depth);\n }\n this.opcode('getContext', val.depth || 0);\n this.opcode('pushStringParam', value, val.type);\n\n if (val.type === 'SubExpression') {\n // SubExpressions get evaluated and passed in\n // in string params mode.\n this.accept(val);\n }\n } else {\n if (this.trackIds) {\n let blockParamIndex;\n if (val.parts && !AST.helpers.scopedId(val) && !val.depth) {\n blockParamIndex = this.blockParamIndex(val.parts[0]);\n }\n if (blockParamIndex) {\n let blockParamChild = val.parts.slice(1).join('.');\n this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n } else {\n value = val.original || value;\n if (value.replace) {\n value = value\n .replace(/^this(?:\\.|$)/, '')\n .replace(/^\\.\\//, '')\n .replace(/^\\.$/, '');\n }\n\n this.opcode('pushId', val.type, value);\n }\n }\n this.accept(val);\n }\n },\n\n setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {\n let params = sexpr.params;\n this.pushParams(params);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n if (sexpr.hash) {\n this.accept(sexpr.hash);\n } else {\n this.opcode('emptyHash', omitEmpty);\n }\n\n return params;\n },\n\n blockParamIndex: function(name) {\n for (\n let depth = 0, len = this.options.blockParams.length;\n depth < len;\n depth++\n ) {\n let blockParams = this.options.blockParams[depth],\n param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n};\n\nexport function precompile(input, options, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' +\n input\n );\n }\n\n options = options || {};\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options);\n return new env.JavaScriptCompiler().compile(environment, options);\n}\n\nexport function compile(input, options = {}, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.compile. You passed ' +\n input\n );\n }\n\n options = extend({}, options);\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let compiled;\n\n function compileInput() {\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options),\n templateSpec = new env.JavaScriptCompiler().compile(\n environment,\n options,\n undefined,\n true\n );\n return env.template(templateSpec);\n }\n\n // Template is only compiled on first use and cached after that point.\n function ret(context, execOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled.call(this, context, execOptions);\n }\n ret._setup = function(setupOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._setup(setupOptions);\n };\n ret._child = function(i, data, blockParams, depths) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._child(i, data, blockParams, depths);\n };\n return ret;\n}\n\nfunction argEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (isArray(a) && isArray(b) && a.length === b.length) {\n for (let i = 0; i < a.length; i++) {\n if (!argEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction transformLiteralToPath(sexpr) {\n if (!sexpr.path.parts) {\n let literal = sexpr.path;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n sexpr.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [literal.original + ''],\n original: literal.original + '',\n loc: literal.loc\n };\n }\n}\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // \u201Csources\u201D entry. This value is prepended to the individual\n // entries in the \u201Csource\u201D field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // \u201CsourceRoot\u201D, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n", "/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n", "/* global define, require */\nimport { isArray } from '../utils';\n\nlet SourceNode;\n\ntry {\n /* istanbul ignore next */\n if (typeof define !== 'function' || !define.amd) {\n // We don't support this in AMD environments. For these environments, we assume that\n // they are running on the browser and thus have no need for the source-map library.\n let SourceMap = require('source-map');\n SourceNode = SourceMap.SourceNode;\n }\n} catch (err) {\n /* NOP */\n}\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build */\nif (!SourceNode) {\n SourceNode = function(line, column, srcFile, chunks) {\n this.src = '';\n if (chunks) {\n this.add(chunks);\n }\n };\n /* istanbul ignore next */\n SourceNode.prototype = {\n add: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src += chunks;\n },\n prepend: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src = chunks + this.src;\n },\n toStringWithSourceMap: function() {\n return { code: this.toString() };\n },\n toString: function() {\n return this.src;\n }\n };\n}\n\nfunction castChunk(chunk, codeGen, loc) {\n if (isArray(chunk)) {\n let ret = [];\n\n for (let i = 0, len = chunk.length; i < len; i++) {\n ret.push(codeGen.wrap(chunk[i], loc));\n }\n return ret;\n } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n // Handle primitives that the SourceNode will throw up on\n return chunk + '';\n }\n return chunk;\n}\n\nfunction CodeGen(srcFile) {\n this.srcFile = srcFile;\n this.source = [];\n}\n\nCodeGen.prototype = {\n isEmpty() {\n return !this.source.length;\n },\n prepend: function(source, loc) {\n this.source.unshift(this.wrap(source, loc));\n },\n push: function(source, loc) {\n this.source.push(this.wrap(source, loc));\n },\n\n merge: function() {\n let source = this.empty();\n this.each(function(line) {\n source.add([' ', line, '\\n']);\n });\n return source;\n },\n\n each: function(iter) {\n for (let i = 0, len = this.source.length; i < len; i++) {\n iter(this.source[i]);\n }\n },\n\n empty: function() {\n let loc = this.currentLocation || { start: {} };\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n },\n wrap: function(chunk, loc = this.currentLocation || { start: {} }) {\n if (chunk instanceof SourceNode) {\n return chunk;\n }\n\n chunk = castChunk(chunk, this, loc);\n\n return new SourceNode(\n loc.start.line,\n loc.start.column,\n this.srcFile,\n chunk\n );\n },\n\n functionCall: function(fn, type, params) {\n params = this.generateList(params);\n return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n },\n\n quotedString: function(str) {\n return (\n '\"' +\n (str + '')\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n .replace(/\\u2029/g, '\\\\u2029') +\n '\"'\n );\n },\n\n objectLiteral: function(obj) {\n let pairs = [];\n\n Object.keys(obj).forEach(key => {\n let value = castChunk(obj[key], this);\n if (value !== 'undefined') {\n pairs.push([this.quotedString(key), ':', value]);\n }\n });\n\n let ret = this.generateList(pairs);\n ret.prepend('{');\n ret.add('}');\n return ret;\n },\n\n generateList: function(entries) {\n let ret = this.empty();\n\n for (let i = 0, len = entries.length; i < len; i++) {\n if (i) {\n ret.add(',');\n }\n\n ret.add(castChunk(entries[i], this));\n }\n\n return ret;\n },\n\n generateArray: function(entries) {\n let ret = this.generateList(entries);\n ret.prepend('[');\n ret.add(']');\n\n return ret;\n }\n};\n\nexport default CodeGen;\n", "import { COMPILER_REVISION, REVISION_CHANGES } from '../base';\nimport Exception from '../exception';\nimport { isArray } from '../utils';\nimport CodeGen from './code-gen';\n\nfunction Literal(value) {\n this.value = value;\n}\n\nfunction JavaScriptCompiler() {}\n\nJavaScriptCompiler.prototype = {\n // PUBLIC API: You can override these methods in a subclass to provide\n // alternative compiled forms for name lookup and buffering semantics\n nameLookup: function(parent, name /*, type */) {\n return this.internalNameLookup(parent, name);\n },\n depthedLookup: function(name) {\n return [\n this.aliasable('container.lookup'),\n '(depths, ',\n JSON.stringify(name),\n ')'\n ];\n },\n\n compilerInfo: function() {\n const revision = COMPILER_REVISION,\n versions = REVISION_CHANGES[revision];\n return [revision, versions];\n },\n\n appendToBuffer: function(source, location, explicit) {\n // Force a source as this simplifies the merge logic.\n if (!isArray(source)) {\n source = [source];\n }\n source = this.source.wrap(source, location);\n\n if (this.environment.isSimple) {\n return ['return ', source, ';'];\n } else if (explicit) {\n // This is a case where the buffer operation occurs as a child of another\n // construct, generally braces. We have to explicitly output these buffer\n // operations to ensure that the emitted code goes in the correct location.\n return ['buffer += ', source, ';'];\n } else {\n source.appendToBuffer = true;\n return source;\n }\n },\n\n initializeBuffer: function() {\n return this.quotedString('');\n },\n // END PUBLIC API\n internalNameLookup: function(parent, name) {\n this.lookupPropertyFunctionIsUsed = true;\n return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n },\n\n lookupPropertyFunctionIsUsed: false,\n\n compile: function(environment, options, context, asObject) {\n this.environment = environment;\n this.options = options;\n this.stringParams = this.options.stringParams;\n this.trackIds = this.options.trackIds;\n this.precompile = !asObject;\n\n this.name = this.environment.name;\n this.isChild = !!context;\n this.context = context || {\n decorators: [],\n programs: [],\n environments: []\n };\n\n this.preamble();\n\n this.stackSlot = 0;\n this.stackVars = [];\n this.aliases = {};\n this.registers = { list: [] };\n this.hashes = [];\n this.compileStack = [];\n this.inlineStack = [];\n this.blockParams = [];\n\n this.compileChildren(environment, options);\n\n this.useDepths =\n this.useDepths ||\n environment.useDepths ||\n environment.useDecorators ||\n this.options.compat;\n this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n let opcodes = environment.opcodes,\n opcode,\n firstLoc,\n i,\n l;\n\n for (i = 0, l = opcodes.length; i < l; i++) {\n opcode = opcodes[i];\n\n this.source.currentLocation = opcode.loc;\n firstLoc = firstLoc || opcode.loc;\n this[opcode.opcode].apply(this, opcode.args);\n }\n\n // Flush any trailing content that might be pending.\n this.source.currentLocation = firstLoc;\n this.pushSource('');\n\n /* istanbul ignore next */\n if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n throw new Exception('Compile completed with content left on stack');\n }\n\n if (!this.decorators.isEmpty()) {\n this.useDecorators = true;\n\n this.decorators.prepend([\n 'var decorators = container.decorators, ',\n this.lookupPropertyFunctionVarDeclaration(),\n ';\\n'\n ]);\n this.decorators.push('return fn;');\n\n if (asObject) {\n this.decorators = Function.apply(this, [\n 'fn',\n 'props',\n 'container',\n 'depth0',\n 'data',\n 'blockParams',\n 'depths',\n this.decorators.merge()\n ]);\n } else {\n this.decorators.prepend(\n 'function(fn, props, container, depth0, data, blockParams, depths) {\\n'\n );\n this.decorators.push('}\\n');\n this.decorators = this.decorators.merge();\n }\n } else {\n this.decorators = undefined;\n }\n\n let fn = this.createFunctionContext(asObject);\n if (!this.isChild) {\n let ret = {\n compiler: this.compilerInfo(),\n main: fn\n };\n\n if (this.decorators) {\n ret.main_d = this.decorators; // eslint-disable-line camelcase\n ret.useDecorators = true;\n }\n\n let { programs, decorators } = this.context;\n for (i = 0, l = programs.length; i < l; i++) {\n if (programs[i]) {\n ret[i] = programs[i];\n if (decorators[i]) {\n ret[i + '_d'] = decorators[i];\n ret.useDecorators = true;\n }\n }\n }\n\n if (this.environment.usePartial) {\n ret.usePartial = true;\n }\n if (this.options.data) {\n ret.useData = true;\n }\n if (this.useDepths) {\n ret.useDepths = true;\n }\n if (this.useBlockParams) {\n ret.useBlockParams = true;\n }\n if (this.options.compat) {\n ret.compat = true;\n }\n\n if (!asObject) {\n ret.compiler = JSON.stringify(ret.compiler);\n\n this.source.currentLocation = { start: { line: 1, column: 0 } };\n ret = this.objectLiteral(ret);\n\n if (options.srcName) {\n ret = ret.toStringWithSourceMap({ file: options.destName });\n ret.map = ret.map && ret.map.toString();\n } else {\n ret = ret.toString();\n }\n } else {\n ret.compilerOptions = this.options;\n }\n\n return ret;\n } else {\n return fn;\n }\n },\n\n preamble: function() {\n // track the last context pushed into place to allow skipping the\n // getContext opcode when it would be a noop\n this.lastContext = 0;\n this.source = new CodeGen(this.options.srcName);\n this.decorators = new CodeGen(this.options.srcName);\n },\n\n createFunctionContext: function(asObject) {\n let varDeclarations = '';\n\n let locals = this.stackVars.concat(this.registers.list);\n if (locals.length > 0) {\n varDeclarations += ', ' + locals.join(', ');\n }\n\n // Generate minimizer alias mappings\n //\n // When using true SourceNodes, this will update all references to the given alias\n // as the source nodes are reused in situ. For the non-source node compilation mode,\n // aliases will not be used, but this case is already being run on the client and\n // we aren't concern about minimizing the template size.\n let aliasCount = 0;\n Object.keys(this.aliases).forEach(alias => {\n let node = this.aliases[alias];\n if (node.children && node.referenceCount > 1) {\n varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n node.children[0] = 'alias' + aliasCount;\n }\n });\n\n if (this.lookupPropertyFunctionIsUsed) {\n varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n }\n\n let params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n\n if (this.useBlockParams || this.useDepths) {\n params.push('blockParams');\n }\n if (this.useDepths) {\n params.push('depths');\n }\n\n // Perform a second pass over the output to merge content when possible\n let source = this.mergeSource(varDeclarations);\n\n if (asObject) {\n params.push(source);\n\n return Function.apply(this, params);\n } else {\n return this.source.wrap([\n 'function(',\n params.join(','),\n ') {\\n ',\n source,\n '}'\n ]);\n }\n },\n mergeSource: function(varDeclarations) {\n let isSimple = this.environment.isSimple,\n appendOnly = !this.forceBuffer,\n appendFirst,\n sourceSeen,\n bufferStart,\n bufferEnd;\n this.source.each(line => {\n if (line.appendToBuffer) {\n if (bufferStart) {\n line.prepend(' + ');\n } else {\n bufferStart = line;\n }\n bufferEnd = line;\n } else {\n if (bufferStart) {\n if (!sourceSeen) {\n appendFirst = true;\n } else {\n bufferStart.prepend('buffer += ');\n }\n bufferEnd.add(';');\n bufferStart = bufferEnd = undefined;\n }\n\n sourceSeen = true;\n if (!isSimple) {\n appendOnly = false;\n }\n }\n });\n\n if (appendOnly) {\n if (bufferStart) {\n bufferStart.prepend('return ');\n bufferEnd.add(';');\n } else if (!sourceSeen) {\n this.source.push('return \"\";');\n }\n } else {\n varDeclarations +=\n ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n\n if (bufferStart) {\n bufferStart.prepend('return buffer + ');\n bufferEnd.add(';');\n } else {\n this.source.push('return buffer;');\n }\n }\n\n if (varDeclarations) {\n this.source.prepend(\n 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n')\n );\n }\n\n return this.source.merge();\n },\n\n lookupPropertyFunctionVarDeclaration: function() {\n return `\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n `.trim();\n },\n\n // [blockValue]\n //\n // On stack, before: hash, inverse, program, value\n // On stack, after: return value of blockHelperMissing\n //\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n blockValue: function(name) {\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs(name, 0, params);\n\n let blockName = this.popStack();\n params.splice(1, 0, blockName);\n\n this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n },\n\n // [ambiguousBlockValue]\n //\n // On stack, before: hash, inverse, program, value\n // Compiler value, before: lastHelper=value of last found helper, if any\n // On stack, after, if no lastHelper: same as [blockValue]\n // On stack, after, if lastHelper: value\n ambiguousBlockValue: function() {\n // We're being a bit cheeky and reusing the options value from the prior exec\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs('', 0, params, true);\n\n this.flushInline();\n\n let current = this.topStack();\n params.splice(1, 0, current);\n\n this.pushSource([\n 'if (!',\n this.lastHelper,\n ') { ',\n current,\n ' = ',\n this.source.functionCall(blockHelperMissing, 'call', params),\n '}'\n ]);\n },\n\n // [appendContent]\n //\n // On stack, before: ...\n // On stack, after: ...\n //\n // Appends the string value of `content` to the current buffer\n appendContent: function(content) {\n if (this.pendingContent) {\n content = this.pendingContent + content;\n } else {\n this.pendingLocation = this.source.currentLocation;\n }\n\n this.pendingContent = content;\n },\n\n // [append]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Coerces `value` to a String and appends it to the current buffer.\n //\n // If `value` is truthy, or 0, it is coerced into a string and appended\n // Otherwise, the empty string is appended\n append: function() {\n if (this.isInline()) {\n this.replaceStack(current => [' != null ? ', current, ' : \"\"']);\n\n this.pushSource(this.appendToBuffer(this.popStack()));\n } else {\n let local = this.popStack();\n this.pushSource([\n 'if (',\n local,\n ' != null) { ',\n this.appendToBuffer(local, undefined, true),\n ' }'\n ]);\n if (this.environment.isSimple) {\n this.pushSource([\n 'else { ',\n this.appendToBuffer(\"''\", undefined, true),\n ' }'\n ]);\n }\n }\n },\n\n // [appendEscaped]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Escape `value` and append it to the buffer\n appendEscaped: function() {\n this.pushSource(\n this.appendToBuffer([\n this.aliasable('container.escapeExpression'),\n '(',\n this.popStack(),\n ')'\n ])\n );\n },\n\n // [getContext]\n //\n // On stack, before: ...\n // On stack, after: ...\n // Compiler value, after: lastContext=depth\n //\n // Set the value of the `lastContext` compiler value to the depth\n getContext: function(depth) {\n this.lastContext = depth;\n },\n\n // [pushContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext, ...\n //\n // Pushes the value of the current context onto the stack.\n pushContext: function() {\n this.pushStackLiteral(this.contextName(this.lastContext));\n },\n\n // [lookupOnContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext[name], ...\n //\n // Looks up the value of `name` on the current context and pushes\n // it onto the stack.\n lookupOnContext: function(parts, falsy, strict, scoped) {\n let i = 0;\n\n if (!scoped && this.options.compat && !this.lastContext) {\n // The depthed query is expected to handle the undefined logic for the root level that\n // is implemented below, so we evaluate that directly in compat mode\n this.push(this.depthedLookup(parts[i++]));\n } else {\n this.pushContext();\n }\n\n this.resolvePath('context', parts, i, falsy, strict);\n },\n\n // [lookupBlockParam]\n //\n // On stack, before: ...\n // On stack, after: blockParam[name], ...\n //\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n lookupBlockParam: function(blockParamId, parts) {\n this.useBlockParams = true;\n\n this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n this.resolvePath('context', parts, 1);\n },\n\n // [lookupData]\n //\n // On stack, before: ...\n // On stack, after: data, ...\n //\n // Push the data lookup operator\n lookupData: function(depth, parts, strict) {\n if (!depth) {\n this.pushStackLiteral('data');\n } else {\n this.pushStackLiteral('container.data(data, ' + depth + ')');\n }\n\n this.resolvePath('data', parts, 0, true, strict);\n },\n\n resolvePath: function(type, parts, i, falsy, strict) {\n if (this.options.strict || this.options.assumeObjects) {\n this.push(\n strictLookup(this.options.strict && strict, this, parts, i, type)\n );\n return;\n }\n\n let len = parts.length;\n for (; i < len; i++) {\n /* eslint-disable no-loop-func */\n this.replaceStack(current => {\n let lookup = this.nameLookup(current, parts[i], type);\n // We want to ensure that zero and false are handled properly if the context (falsy flag)\n // needs to have the special handling for these values.\n if (!falsy) {\n return [' != null ? ', lookup, ' : ', current];\n } else {\n // Otherwise we can use generic falsy handling\n return [' && ', lookup];\n }\n });\n /* eslint-enable no-loop-func */\n }\n },\n\n // [resolvePossibleLambda]\n //\n // On stack, before: value, ...\n // On stack, after: resolved value, ...\n //\n // If the `value` is a lambda, replace it on the stack by\n // the return value of the lambda\n resolvePossibleLambda: function() {\n this.push([\n this.aliasable('container.lambda'),\n '(',\n this.popStack(),\n ', ',\n this.contextName(0),\n ')'\n ]);\n },\n\n // [pushStringParam]\n //\n // On stack, before: ...\n // On stack, after: string, currentContext, ...\n //\n // This opcode is designed for use in string mode, which\n // provides the string value of a parameter along with its\n // depth rather than resolving it immediately.\n pushStringParam: function(string, type) {\n this.pushContext();\n this.pushString(type);\n\n // If it's a subexpression, the string result\n // will be pushed after this opcode.\n if (type !== 'SubExpression') {\n if (typeof string === 'string') {\n this.pushString(string);\n } else {\n this.pushStackLiteral(string);\n }\n }\n },\n\n emptyHash: function(omitEmpty) {\n if (this.trackIds) {\n this.push('{}'); // hashIds\n }\n if (this.stringParams) {\n this.push('{}'); // hashContexts\n this.push('{}'); // hashTypes\n }\n this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n },\n pushHash: function() {\n if (this.hash) {\n this.hashes.push(this.hash);\n }\n this.hash = { values: {}, types: [], contexts: [], ids: [] };\n },\n popHash: function() {\n let hash = this.hash;\n this.hash = this.hashes.pop();\n\n if (this.trackIds) {\n this.push(this.objectLiteral(hash.ids));\n }\n if (this.stringParams) {\n this.push(this.objectLiteral(hash.contexts));\n this.push(this.objectLiteral(hash.types));\n }\n\n this.push(this.objectLiteral(hash.values));\n },\n\n // [pushString]\n //\n // On stack, before: ...\n // On stack, after: quotedString(string), ...\n //\n // Push a quoted version of `string` onto the stack\n pushString: function(string) {\n this.pushStackLiteral(this.quotedString(string));\n },\n\n // [pushLiteral]\n //\n // On stack, before: ...\n // On stack, after: value, ...\n //\n // Pushes a value onto the stack. This operation prevents\n // the compiler from creating a temporary variable to hold\n // it.\n pushLiteral: function(value) {\n this.pushStackLiteral(value);\n },\n\n // [pushProgram]\n //\n // On stack, before: ...\n // On stack, after: program(guid), ...\n //\n // Push a program expression onto the stack. This takes\n // a compile-time guid and converts it into a runtime-accessible\n // expression.\n pushProgram: function(guid) {\n if (guid != null) {\n this.pushStackLiteral(this.programExpression(guid));\n } else {\n this.pushStackLiteral(null);\n }\n },\n\n // [registerDecorator]\n //\n // On stack, before: hash, program, params..., ...\n // On stack, after: ...\n //\n // Pops off the decorator's parameters, invokes the decorator,\n // and inserts the decorator into the decorators list.\n registerDecorator(paramSize, name) {\n let foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n options = this.setupHelperArgs(name, paramSize);\n\n this.decorators.push([\n 'fn = ',\n this.decorators.functionCall(foundDecorator, '', [\n 'fn',\n 'props',\n 'container',\n options\n ]),\n ' || fn;'\n ]);\n },\n\n // [invokeHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n invokeHelper: function(paramSize, name, isSimple) {\n let nonHelper = this.popStack(),\n helper = this.setupHelper(paramSize, name);\n\n let possibleFunctionCalls = [];\n\n if (isSimple) {\n // direct call to helper\n possibleFunctionCalls.push(helper.name);\n }\n // call a function from the input object\n possibleFunctionCalls.push(nonHelper);\n if (!this.options.strict) {\n possibleFunctionCalls.push(\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n let functionLookupCode = [\n '(',\n this.itemsSeparatedBy(possibleFunctionCalls, '||'),\n ')'\n ];\n let functionCall = this.source.functionCall(\n functionLookupCode,\n 'call',\n helper.callParams\n );\n this.push(functionCall);\n },\n\n itemsSeparatedBy: function(items, separator) {\n let result = [];\n result.push(items[0]);\n for (let i = 1; i < items.length; i++) {\n result.push(separator, items[i]);\n }\n return result;\n },\n // [invokeKnownHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n invokeKnownHelper: function(paramSize, name) {\n let helper = this.setupHelper(paramSize, name);\n this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n },\n\n // [invokeAmbiguous]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of disambiguation\n //\n // This operation is used when an expression like `{{foo}}`\n // is provided, but we don't know at compile-time whether it\n // is a helper or a path.\n //\n // This operation emits more code than the other options,\n // and can be avoided by passing the `knownHelpers` and\n // `knownHelpersOnly` flags at compile-time.\n invokeAmbiguous: function(name, helperCall) {\n this.useRegister('helper');\n\n let nonHelper = this.popStack();\n\n this.emptyHash();\n let helper = this.setupHelper(0, name, helperCall);\n\n let helperName = (this.lastHelper = this.nameLookup(\n 'helpers',\n name,\n 'helper'\n ));\n\n let lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n if (!this.options.strict) {\n lookup[0] = '(helper = ';\n lookup.push(\n ' != null ? helper : ',\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n this.push([\n '(',\n lookup,\n helper.paramsInit ? ['),(', helper.paramsInit] : [],\n '),',\n '(typeof helper === ',\n this.aliasable('\"function\"'),\n ' ? ',\n this.source.functionCall('helper', 'call', helper.callParams),\n ' : helper))'\n ]);\n },\n\n // [invokePartial]\n //\n // On stack, before: context, ...\n // On stack after: result of partial invocation\n //\n // This operation pops off a context, invokes a partial with that context,\n // and pushes the result of the invocation back.\n invokePartial: function(isDynamic, name, indent) {\n let params = [],\n options = this.setupParams(name, 1, params);\n\n if (isDynamic) {\n name = this.popStack();\n delete options.name;\n }\n\n if (indent) {\n options.indent = JSON.stringify(indent);\n }\n options.helpers = 'helpers';\n options.partials = 'partials';\n options.decorators = 'container.decorators';\n\n if (!isDynamic) {\n params.unshift(this.nameLookup('partials', name, 'partial'));\n } else {\n params.unshift(name);\n }\n\n if (this.options.compat) {\n options.depths = 'depths';\n }\n options = this.objectLiteral(options);\n params.push(options);\n\n this.push(this.source.functionCall('container.invokePartial', '', params));\n },\n\n // [assignToHash]\n //\n // On stack, before: value, ..., hash, ...\n // On stack, after: ..., hash, ...\n //\n // Pops a value off the stack and assigns it to the current hash\n assignToHash: function(key) {\n let value = this.popStack(),\n context,\n type,\n id;\n\n if (this.trackIds) {\n id = this.popStack();\n }\n if (this.stringParams) {\n type = this.popStack();\n context = this.popStack();\n }\n\n let hash = this.hash;\n if (context) {\n hash.contexts[key] = context;\n }\n if (type) {\n hash.types[key] = type;\n }\n if (id) {\n hash.ids[key] = id;\n }\n hash.values[key] = value;\n },\n\n pushId: function(type, name, child) {\n if (type === 'BlockParam') {\n this.pushStackLiteral(\n 'blockParams[' +\n name[0] +\n '].path[' +\n name[1] +\n ']' +\n (child ? ' + ' + JSON.stringify('.' + child) : '')\n );\n } else if (type === 'PathExpression') {\n this.pushString(name);\n } else if (type === 'SubExpression') {\n this.pushStackLiteral('true');\n } else {\n this.pushStackLiteral('null');\n }\n },\n\n // HELPERS\n\n compiler: JavaScriptCompiler,\n\n compileChildren: function(environment, options) {\n let children = environment.children,\n child,\n compiler;\n\n for (let i = 0, l = children.length; i < l; i++) {\n child = children[i];\n compiler = new this.compiler(); // eslint-disable-line new-cap\n\n let existing = this.matchExistingProgram(child);\n\n if (existing == null) {\n this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n let index = this.context.programs.length;\n child.index = index;\n child.name = 'program' + index;\n this.context.programs[index] = compiler.compile(\n child,\n options,\n this.context,\n !this.precompile\n );\n this.context.decorators[index] = compiler.decorators;\n this.context.environments[index] = child;\n\n this.useDepths = this.useDepths || compiler.useDepths;\n this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n child.useDepths = this.useDepths;\n child.useBlockParams = this.useBlockParams;\n } else {\n child.index = existing.index;\n child.name = 'program' + existing.index;\n\n this.useDepths = this.useDepths || existing.useDepths;\n this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n }\n }\n },\n matchExistingProgram: function(child) {\n for (let i = 0, len = this.context.environments.length; i < len; i++) {\n let environment = this.context.environments[i];\n if (environment && environment.equals(child)) {\n return environment;\n }\n }\n },\n\n programExpression: function(guid) {\n let child = this.environment.children[guid],\n programParams = [child.index, 'data', child.blockParams];\n\n if (this.useBlockParams || this.useDepths) {\n programParams.push('blockParams');\n }\n if (this.useDepths) {\n programParams.push('depths');\n }\n\n return 'container.program(' + programParams.join(', ') + ')';\n },\n\n useRegister: function(name) {\n if (!this.registers[name]) {\n this.registers[name] = true;\n this.registers.list.push(name);\n }\n },\n\n push: function(expr) {\n if (!(expr instanceof Literal)) {\n expr = this.source.wrap(expr);\n }\n\n this.inlineStack.push(expr);\n return expr;\n },\n\n pushStackLiteral: function(item) {\n this.push(new Literal(item));\n },\n\n pushSource: function(source) {\n if (this.pendingContent) {\n this.source.push(\n this.appendToBuffer(\n this.source.quotedString(this.pendingContent),\n this.pendingLocation\n )\n );\n this.pendingContent = undefined;\n }\n\n if (source) {\n this.source.push(source);\n }\n },\n\n replaceStack: function(callback) {\n let prefix = ['('],\n stack,\n createdStack,\n usedLiteral;\n\n /* istanbul ignore next */\n if (!this.isInline()) {\n throw new Exception('replaceStack on non-inline');\n }\n\n // We want to merge the inline statement into the replacement statement via ','\n let top = this.popStack(true);\n\n if (top instanceof Literal) {\n // Literals do not need to be inlined\n stack = [top.value];\n prefix = ['(', stack];\n usedLiteral = true;\n } else {\n // Get or create the current stack name for use by the inline\n createdStack = true;\n let name = this.incrStack();\n\n prefix = ['((', this.push(name), ' = ', top, ')'];\n stack = this.topStack();\n }\n\n let item = callback.call(this, stack);\n\n if (!usedLiteral) {\n this.popStack();\n }\n if (createdStack) {\n this.stackSlot--;\n }\n this.push(prefix.concat(item, ')'));\n },\n\n incrStack: function() {\n this.stackSlot++;\n if (this.stackSlot > this.stackVars.length) {\n this.stackVars.push('stack' + this.stackSlot);\n }\n return this.topStackName();\n },\n topStackName: function() {\n return 'stack' + this.stackSlot;\n },\n flushInline: function() {\n let inlineStack = this.inlineStack;\n this.inlineStack = [];\n for (let i = 0, len = inlineStack.length; i < len; i++) {\n let entry = inlineStack[i];\n /* istanbul ignore if */\n if (entry instanceof Literal) {\n this.compileStack.push(entry);\n } else {\n let stack = this.incrStack();\n this.pushSource([stack, ' = ', entry, ';']);\n this.compileStack.push(stack);\n }\n }\n },\n isInline: function() {\n return this.inlineStack.length;\n },\n\n popStack: function(wrapped) {\n let inline = this.isInline(),\n item = (inline ? this.inlineStack : this.compileStack).pop();\n\n if (!wrapped && item instanceof Literal) {\n return item.value;\n } else {\n if (!inline) {\n /* istanbul ignore next */\n if (!this.stackSlot) {\n throw new Exception('Invalid stack pop');\n }\n this.stackSlot--;\n }\n return item;\n }\n },\n\n topStack: function() {\n let stack = this.isInline() ? this.inlineStack : this.compileStack,\n item = stack[stack.length - 1];\n\n /* istanbul ignore if */\n if (item instanceof Literal) {\n return item.value;\n } else {\n return item;\n }\n },\n\n contextName: function(context) {\n if (this.useDepths && context) {\n return 'depths[' + context + ']';\n } else {\n return 'depth' + context;\n }\n },\n\n quotedString: function(str) {\n return this.source.quotedString(str);\n },\n\n objectLiteral: function(obj) {\n return this.source.objectLiteral(obj);\n },\n\n aliasable: function(name) {\n let ret = this.aliases[name];\n if (ret) {\n ret.referenceCount++;\n return ret;\n }\n\n ret = this.aliases[name] = this.source.wrap(name);\n ret.aliasable = true;\n ret.referenceCount = 1;\n\n return ret;\n },\n\n setupHelper: function(paramSize, name, blockHelper) {\n let params = [],\n paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n let foundHelper = this.nameLookup('helpers', name, 'helper'),\n callContext = this.aliasable(\n `${this.contextName(0)} != null ? ${this.contextName(\n 0\n )} : (container.nullContext || {})`\n );\n\n return {\n params: params,\n paramsInit: paramsInit,\n name: foundHelper,\n callParams: [callContext].concat(params)\n };\n },\n\n setupParams: function(helper, paramSize, params) {\n let options = {},\n contexts = [],\n types = [],\n ids = [],\n objectArgs = !params,\n param;\n\n if (objectArgs) {\n params = [];\n }\n\n options.name = this.quotedString(helper);\n options.hash = this.popStack();\n\n if (this.trackIds) {\n options.hashIds = this.popStack();\n }\n if (this.stringParams) {\n options.hashTypes = this.popStack();\n options.hashContexts = this.popStack();\n }\n\n let inverse = this.popStack(),\n program = this.popStack();\n\n // Avoid setting fn and inverse if neither are set. This allows\n // helpers to do a check for `if (options.fn)`\n if (program || inverse) {\n options.fn = program || 'container.noop';\n options.inverse = inverse || 'container.noop';\n }\n\n // The parameters go on to the stack in order (making sure that they are evaluated in order)\n // so we need to pop them off the stack in reverse order\n let i = paramSize;\n while (i--) {\n param = this.popStack();\n params[i] = param;\n\n if (this.trackIds) {\n ids[i] = this.popStack();\n }\n if (this.stringParams) {\n types[i] = this.popStack();\n contexts[i] = this.popStack();\n }\n }\n\n if (objectArgs) {\n options.args = this.source.generateArray(params);\n }\n\n if (this.trackIds) {\n options.ids = this.source.generateArray(ids);\n }\n if (this.stringParams) {\n options.types = this.source.generateArray(types);\n options.contexts = this.source.generateArray(contexts);\n }\n\n if (this.options.data) {\n options.data = 'data';\n }\n if (this.useBlockParams) {\n options.blockParams = 'blockParams';\n }\n return options;\n },\n\n setupHelperArgs: function(helper, paramSize, params, useRegister) {\n let options = this.setupParams(helper, paramSize, params);\n options.loc = JSON.stringify(this.source.currentLocation);\n options = this.objectLiteral(options);\n if (useRegister) {\n this.useRegister('options');\n params.push('options');\n return ['options=', options];\n } else if (params) {\n params.push(options);\n return '';\n } else {\n return options;\n }\n }\n};\n\n(function() {\n const reservedWords = (\n 'break else new var' +\n ' case finally return void' +\n ' catch for switch while' +\n ' continue function this with' +\n ' default if throw' +\n ' delete in try' +\n ' do instanceof typeof' +\n ' abstract enum int short' +\n ' boolean export interface static' +\n ' byte extends long super' +\n ' char final native synchronized' +\n ' class float package throws' +\n ' const goto private transient' +\n ' debugger implements protected volatile' +\n ' double import public let yield await' +\n ' null true false'\n ).split(' ');\n\n const compilerWords = (JavaScriptCompiler.RESERVED_WORDS = {});\n\n for (let i = 0, l = reservedWords.length; i < l; i++) {\n compilerWords[reservedWords[i]] = true;\n }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n return (\n !JavaScriptCompiler.RESERVED_WORDS[name] &&\n /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)\n );\n};\n\nfunction strictLookup(requireTerminal, compiler, parts, i, type) {\n let stack = compiler.popStack(),\n len = parts.length;\n if (requireTerminal) {\n len--;\n }\n\n for (; i < len; i++) {\n stack = compiler.nameLookup(stack, parts[i], type);\n }\n\n if (requireTerminal) {\n return [\n compiler.aliasable('container.strict'),\n '(',\n stack,\n ', ',\n compiler.quotedString(parts[i]),\n ', ',\n JSON.stringify(compiler.source.currentLocation),\n ' )'\n ];\n } else {\n return stack;\n }\n}\n\nexport default JavaScriptCompiler;\n", "import runtime from './handlebars.runtime';\n\n// Compiler imports\nimport AST from './handlebars/compiler/ast';\nimport {\n parser as Parser,\n parse,\n parseWithoutProcessing\n} from './handlebars/compiler/base';\nimport { Compiler, compile, precompile } from './handlebars/compiler/compiler';\nimport JavaScriptCompiler from './handlebars/compiler/javascript-compiler';\nimport Visitor from './handlebars/compiler/visitor';\n\nimport noConflict from './handlebars/no-conflict';\n\nlet _create = runtime.create;\nfunction create() {\n let hb = _create();\n\n hb.compile = function(input, options) {\n return compile(input, options, hb);\n };\n hb.precompile = function(input, options) {\n return precompile(input, options, hb);\n };\n\n hb.AST = AST;\n hb.Compiler = Compiler;\n hb.JavaScriptCompiler = JavaScriptCompiler;\n hb.Parser = Parser;\n hb.parse = parse;\n hb.parseWithoutProcessing = parseWithoutProcessing;\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst.Visitor = Visitor;\n\ninst['default'] = inst;\n\nexport default inst;\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\n// The handlebars module uses `export =`, so we should technically use `import Handlebars = require('handlebars')`, but Babel will not allow this:\n// https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require\nimport Handlebars from 'handlebars';\n\nimport type { CompileOptions, RuntimeOptions, TemplateDelegate } from './types';\nimport { ElasticHandlebarsVisitor } from './visitor';\n\nconst originalCreate = Handlebars.create;\n\nexport { Handlebars };\n\n/**\n * Creates an isolated Handlebars environment.\n *\n * Each environment has its own helpers.\n * This is only necessary for use cases that demand distinct helpers.\n * Most use cases can use the root Handlebars environment directly.\n *\n * @returns A sandboxed/scoped version of the @kbn/handlebars module\n */\nHandlebars.create = function (): typeof Handlebars {\n const SandboxedHandlebars = originalCreate.call(Handlebars) as typeof Handlebars;\n // When creating new Handlebars environments, ensure the custom compileAST function is present in the new environment as well\n SandboxedHandlebars.compileAST = Handlebars.compileAST;\n return SandboxedHandlebars;\n};\n\nHandlebars.compileAST = function (\n input: string | hbs.AST.Program,\n options?: CompileOptions\n): TemplateDelegate {\n if (input == null || (typeof input !== 'string' && input.type !== 'Program')) {\n throw new Handlebars.Exception(\n `You must pass a string or Handlebars AST to Handlebars.compileAST. You passed ${input}`\n );\n }\n\n // If `Handlebars.compileAST` is reassigned, `this` will be undefined.\n const visitor = new ElasticHandlebarsVisitor(this ?? Handlebars, input, options);\n\n return (context: any, runtimeOptions?: RuntimeOptions) => visitor.render(context, runtimeOptions);\n};\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\nimport Handlebars from 'handlebars';\nimport {\n createProtoAccessControl,\n resultIsAllowed,\n // @ts-expect-error: Could not find a declaration file for module\n} from 'handlebars/dist/cjs/handlebars/internal/proto-access';\n// @ts-expect-error: Could not find a declaration file for module\nimport AST from 'handlebars/dist/cjs/handlebars/compiler/ast';\n// @ts-expect-error: Could not find a declaration file for module\nimport { indexOf, createFrame } from 'handlebars/dist/cjs/handlebars/utils';\n// @ts-expect-error: Could not find a declaration file for module\nimport { moveHelperToHooks } from 'handlebars/dist/cjs/handlebars/helpers';\n\nimport type {\n AmbiguousHelperOptions,\n CompileOptions,\n Container,\n DecoratorDelegate,\n DecoratorsHash,\n HelperOptions,\n NodeType,\n NonBlockHelperOptions,\n ProcessableBlockStatementNode,\n ProcessableNode,\n ProcessableNodeWithPathParts,\n ProcessableNodeWithPathPartsOrLiteral,\n ProcessableStatementNode,\n ResolvePartialOptions,\n RuntimeOptions,\n Template,\n TemplateDelegate,\n VisitorHelper,\n} from './types';\nimport { kAmbiguous, kHelper, kSimple } from './symbols';\nimport {\n initData,\n isBlock,\n isDecorator,\n noop,\n toDecoratorOptions,\n transformLiteralToPath,\n} from './utils';\n\nexport class ElasticHandlebarsVisitor extends Handlebars.Visitor {\n private env: typeof Handlebars;\n private contexts: any[] = [];\n private output: any[] = [];\n private template?: string;\n private compileOptions: CompileOptions;\n private runtimeOptions?: RuntimeOptions;\n private blockParamNames: any[][] = [];\n private blockParamValues: any[][] = [];\n private ast?: hbs.AST.Program;\n private container: Container;\n private defaultHelperOptions: Pick;\n private processedRootDecorators = false; // Root decorators should not have access to input arguments. This flag helps us detect them.\n private processedDecoratorsForProgram = new Set(); // It's important that a given program node only has its decorators run once, we use this Map to keep track of them\n\n constructor(\n env: typeof Handlebars,\n input: string | hbs.AST.Program,\n options: CompileOptions = {}\n ) {\n super();\n\n this.env = env;\n\n if (typeof input !== 'string' && input.type === 'Program') {\n this.ast = input;\n } else {\n this.template = input as string;\n }\n\n this.compileOptions = { data: true, ...options };\n this.compileOptions.knownHelpers = Object.assign(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true,\n },\n this.compileOptions.knownHelpers\n );\n\n const protoAccessControl = createProtoAccessControl({});\n\n const container: Container = (this.container = {\n helpers: {},\n partials: {},\n decorators: {},\n strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Handlebars.Exception('\"' + name + '\" not defined in ' + obj, {\n loc,\n } as hbs.AST.Node);\n }\n return container.lookupProperty(obj, name);\n },\n // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js)\n lookupProperty(parent, propertyName) {\n const result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js)\n lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n data(value: any, depth: number) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n hooks: {},\n });\n\n this.defaultHelperOptions = {\n lookupProperty: container.lookupProperty,\n };\n }\n\n render(context: any, options: RuntimeOptions = {}): string {\n this.contexts = [context];\n this.output = [];\n this.runtimeOptions = { ...options };\n this.container.helpers = { ...this.env.helpers, ...options.helpers };\n this.container.partials = { ...this.env.partials, ...options.partials };\n this.container.decorators = {\n ...(this.env.decorators as DecoratorsHash),\n ...options.decorators,\n };\n this.container.hooks = {};\n this.processedRootDecorators = false;\n this.processedDecoratorsForProgram.clear();\n\n if (this.compileOptions.data) {\n this.runtimeOptions.data = initData(context, this.runtimeOptions.data);\n }\n\n const keepHelperInHelpers = false;\n moveHelperToHooks(this.container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(this.container, 'blockHelperMissing', keepHelperInHelpers);\n\n if (!this.ast) {\n this.ast = Handlebars.parse(this.template!);\n }\n\n // The `defaultMain` function contains the default behavior:\n //\n // Generate a \"program\" function based on the root `Program` in the AST and\n // call it. This will start the processing of all the child nodes in the\n // AST.\n const defaultMain: TemplateDelegate = (_context) => {\n const prog = this.generateProgramFunction(this.ast!);\n return prog(_context, this.runtimeOptions);\n };\n\n // Run any decorators that might exist on the root:\n //\n // The `defaultMain` function is passed in, and if there are no root\n // decorators, or if the decorators chooses to do so, the same function is\n // returned from `processDecorators` and the default behavior is retained.\n //\n // Alternatively any of the root decorators might call the `defaultMain`\n // function themselves, process its return value, and return a completely\n // different `main` function.\n const main = this.processDecorators(this.ast, defaultMain);\n this.processedRootDecorators = true;\n\n // Call the `main` function and add the result to the final output.\n const result = main(this.context, options);\n\n if (main === defaultMain) {\n this.output.push(result);\n return this.output.join('');\n } else {\n // We normally expect the return value of `main` to be a string. However,\n // if a decorator is used to override the `defaultMain` function, the\n // return value can be any type. To match the upstream handlebars project\n // behavior, we want the result of rendering the template to be the\n // literal value returned by the decorator.\n //\n // Since the output array in this case always will be empty, we just\n // return that single value instead of attempting to join all the array\n // elements as strings.\n return result;\n }\n }\n\n // ********************************************** //\n // *** Visitor AST Traversal Functions *** //\n // ********************************************** //\n\n Program(program: hbs.AST.Program) {\n this.blockParamNames.unshift(program.blockParams);\n super.Program(program);\n this.blockParamNames.shift();\n }\n\n MustacheStatement(mustache: hbs.AST.MustacheStatement) {\n this.processStatementOrExpression(mustache);\n }\n\n BlockStatement(block: hbs.AST.BlockStatement) {\n this.processStatementOrExpression(block);\n }\n\n PartialStatement(partial: hbs.AST.PartialStatement) {\n this.invokePartial(partial);\n }\n\n PartialBlockStatement(partial: hbs.AST.PartialBlockStatement) {\n this.invokePartial(partial);\n }\n\n // This space is intentionally left blank: We want to override the Visitor\n // class implementation of this method, but since we handle decorators\n // separately before traversing the nodes, we just want to make this a no-op.\n DecoratorBlock(decorator: hbs.AST.DecoratorBlock) {}\n\n // This space is intentionally left blank: We want to override the Visitor\n // class implementation of this method, but since we handle decorators\n // separately before traversing the nodes, we just want to make this a no-op.\n Decorator(decorator: hbs.AST.Decorator) {}\n\n SubExpression(sexpr: hbs.AST.SubExpression) {\n this.processStatementOrExpression(sexpr);\n }\n\n PathExpression(path: hbs.AST.PathExpression) {\n const blockParamId =\n !path.depth && !AST.helpers.scopedId(path) && this.blockParamIndex(path.parts[0]);\n\n let result;\n if (blockParamId) {\n result = this.lookupBlockParam(blockParamId, path);\n } else if (path.data) {\n result = this.lookupData(this.runtimeOptions!.data, path);\n } else {\n result = this.resolvePath(this.contexts[path.depth], path);\n }\n\n this.output.push(result);\n }\n\n ContentStatement(content: hbs.AST.ContentStatement) {\n this.output.push(content.value);\n }\n\n StringLiteral(string: hbs.AST.StringLiteral) {\n this.output.push(string.value);\n }\n\n NumberLiteral(number: hbs.AST.NumberLiteral) {\n this.output.push(number.value);\n }\n\n BooleanLiteral(bool: hbs.AST.BooleanLiteral) {\n this.output.push(bool.value);\n }\n\n UndefinedLiteral() {\n this.output.push(undefined);\n }\n\n NullLiteral() {\n this.output.push(null);\n }\n\n // ********************************************** //\n // *** Visitor AST Helper Functions *** //\n // ********************************************** //\n\n /**\n * Special code for decorators, since they have to be executed ahead of time (before the wrapping program).\n * So we have to look into the program AST body and see if it contains any decorators that we have to process\n * before we can finish processing of the wrapping program.\n */\n private processDecorators(program: hbs.AST.Program, prog: TemplateDelegate) {\n if (!this.processedDecoratorsForProgram.has(program)) {\n this.processedDecoratorsForProgram.add(program);\n const props = {};\n for (const node of program.body) {\n if (isDecorator(node)) {\n prog = this.processDecorator(node, prog, props);\n }\n }\n }\n\n return prog;\n }\n\n private processDecorator(\n decorator: hbs.AST.DecoratorBlock | hbs.AST.Decorator,\n prog: TemplateDelegate,\n props: Record\n ) {\n const options = this.setupDecoratorOptions(decorator);\n\n const result = this.container.lookupProperty(\n this.container.decorators,\n options.name\n )(prog, props, this.container, options);\n\n return Object.assign(result || prog, props);\n }\n\n private processStatementOrExpression(node: ProcessableNodeWithPathPartsOrLiteral) {\n // Calling `transformLiteralToPath` has side-effects!\n // It converts a node from type `ProcessableNodeWithPathPartsOrLiteral` to `ProcessableNodeWithPathParts`\n transformLiteralToPath(node);\n\n switch (this.classifyNode(node as ProcessableNodeWithPathParts)) {\n case kSimple:\n this.processSimpleNode(node as ProcessableNodeWithPathParts);\n break;\n case kHelper:\n this.processHelperNode(node as ProcessableNodeWithPathParts);\n break;\n case kAmbiguous:\n this.processAmbiguousNode(node as ProcessableNodeWithPathParts);\n break;\n }\n }\n\n // Liftet from lib/handlebars/compiler/compiler.js (original name: classifySexpr)\n private classifyNode(node: { path: hbs.AST.PathExpression }): NodeType {\n const isSimple = AST.helpers.simpleId(node.path);\n const isBlockParam = isSimple && !!this.blockParamIndex(node.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(node);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n const name = node.path.parts[0];\n const options = this.compileOptions;\n if (options.knownHelpers && options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return kHelper;\n } else if (isEligible) {\n return kAmbiguous;\n } else {\n return kSimple;\n }\n }\n\n // Liftet from lib/handlebars/compiler/compiler.js\n private blockParamIndex(name: string): [number, any] | undefined {\n for (let depth = 0, len = this.blockParamNames.length; depth < len; depth++) {\n const blockParams = this.blockParamNames[depth];\n const param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n private lookupBlockParam(blockParamId: [number, any], path: hbs.AST.PathExpression) {\n const value = this.blockParamValues[blockParamId[0]][blockParamId[1]];\n return this.resolvePath(value, path, 1);\n }\n\n // Push the data lookup operator\n private lookupData(data: any, path: hbs.AST.PathExpression) {\n if (path.depth) {\n data = this.container.data(data, path.depth);\n }\n\n return this.resolvePath(data, path);\n }\n\n private pushToOutputWithEscapeCheck(result: any, node: ProcessableNodeWithPathParts) {\n if (\n !(node as hbs.AST.MustacheStatement).escaped ||\n this.compileOptions.noEscape === true ||\n typeof result !== 'string'\n ) {\n this.output.push(result);\n } else {\n this.output.push(Handlebars.escapeExpression(result));\n }\n }\n\n private processSimpleNode(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n // @ts-expect-error strict is not a valid property on PathExpression, but we used in the same way it's also used in the original handlebars\n path.strict = true;\n const result = this.resolveNodes(path)[0];\n const lambdaResult = this.container.lambda(result, this.context);\n\n if (isBlock(node)) {\n this.blockValue(node, lambdaResult);\n } else {\n this.pushToOutputWithEscapeCheck(lambdaResult, node);\n }\n }\n\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n private blockValue(node: hbs.AST.BlockStatement, value: any) {\n const name = node.path.original;\n const options = this.setupParams(node, name);\n\n const result = this.container.hooks.blockHelperMissing!.call(this.context, value, options);\n\n this.output.push(result);\n }\n\n private processHelperNode(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n const name = path.parts[0];\n if (this.compileOptions.knownHelpers && this.compileOptions.knownHelpers[name]) {\n this.invokeKnownHelper(node);\n } else if (this.compileOptions.knownHelpersOnly) {\n throw new Handlebars.Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n node\n );\n } else {\n this.invokeHelper(node);\n }\n }\n\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n private invokeKnownHelper(node: ProcessableNodeWithPathParts) {\n const name = node.path.parts[0];\n const helper = this.setupHelper(node, name);\n // TypeScript: `helper.fn` might be `undefined` at this point, but to match the upstream behavior we call it without any guards\n const result = helper.fn!.call(helper.context, ...helper.params, helper.options);\n\n this.pushToOutputWithEscapeCheck(result, node);\n }\n\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n private invokeHelper(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n const name = path.original;\n const isSimple = AST.helpers.simpleId(path);\n const helper = this.setupHelper(node, name);\n\n const loc = isSimple && helper.fn ? node.loc : path.loc;\n helper.fn = (isSimple && helper.fn) || this.resolveNodes(path)[0];\n\n if (!helper.fn) {\n if (this.compileOptions.strict) {\n helper.fn = this.container.strict(helper.context, name, loc);\n } else {\n helper.fn = this.container.hooks.helperMissing;\n }\n }\n\n // TypeScript: `helper.fn` might be `undefined` at this point, but to match the upstream behavior we call it without any guards\n const result = helper.fn!.call(helper.context, ...helper.params, helper.options);\n\n this.pushToOutputWithEscapeCheck(result, node);\n }\n\n private invokePartial(partial: hbs.AST.PartialStatement | hbs.AST.PartialBlockStatement) {\n const { params } = partial;\n if (params.length > 1) {\n throw new Handlebars.Exception(\n `Unsupported number of partial arguments: ${params.length}`,\n partial\n );\n }\n\n const isDynamic = partial.name.type === 'SubExpression';\n const name = isDynamic\n ? this.resolveNodes(partial.name).join('')\n : (partial.name as hbs.AST.PathExpression).original;\n\n const options: AmbiguousHelperOptions & ResolvePartialOptions = this.setupParams(partial, name);\n options.helpers = this.container.helpers;\n options.partials = this.container.partials;\n options.decorators = this.container.decorators;\n\n let partialBlock;\n if ('fn' in options && options.fn !== noop) {\n const { fn } = options;\n const currentPartialBlock = options.data?.['partial-block'];\n options.data = createFrame(options.data);\n\n // Wrapper function to get access to currentPartialBlock from the closure\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context: any,\n wrapperOptions: { data?: HelperOptions['data'] } = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n wrapperOptions.data = createFrame(wrapperOptions.data);\n wrapperOptions.data['partial-block'] = currentPartialBlock;\n return fn(context, wrapperOptions);\n };\n\n if (fn.partials) {\n options.partials = { ...options.partials, ...fn.partials };\n }\n }\n\n let context = {};\n if (params.length === 0 && !this.compileOptions.explicitPartialContext) {\n context = this.context;\n } else if (params.length === 1) {\n context = this.resolveNodes(params[0])[0];\n }\n\n if (Object.keys(options.hash).length > 0) {\n // TODO: context can be an array, but maybe never when we have a hash???\n context = Object.assign({}, context, options.hash);\n }\n\n const partialTemplate: Template | undefined =\n this.container.partials[name] ??\n partialBlock ??\n // TypeScript note: We extend ResolvePartialOptions in our types.ts file\n // to fix an error in the upstream type. When calling back into the\n // upstream code, we just cast back to the non-extended type\n Handlebars.VM.resolvePartial(\n undefined,\n undefined,\n options as Handlebars.ResolvePartialOptions\n );\n\n if (partialTemplate === undefined) {\n throw new Handlebars.Exception(`The partial ${name} could not be found`);\n }\n\n let render;\n if (typeof partialTemplate === 'string') {\n render = this.env.compileAST(partialTemplate, this.compileOptions);\n if (name in this.container.partials) {\n this.container.partials[name] = render;\n }\n } else {\n render = partialTemplate;\n }\n\n let result = render(context, options);\n\n if ('indent' in partial) {\n result =\n partial.indent +\n (this.compileOptions.preventIndent\n ? result\n : result.replace(/\\n(?!$)/g, `\\n${partial.indent}`)); // indent each line, ignoring any trailing linebreak\n }\n\n this.output.push(result);\n }\n\n private processAmbiguousNode(node: ProcessableNodeWithPathParts) {\n const name = node.path.parts[0];\n const helper = this.setupHelper(node, name);\n let { fn: helperFn } = helper;\n\n const loc = helperFn ? node.loc : node.path.loc;\n helperFn = helperFn ?? this.resolveNodes(node.path)[0];\n\n if (helperFn === undefined) {\n if (this.compileOptions.strict) {\n helperFn = this.container.strict(helper.context, name, loc);\n } else {\n helperFn =\n helper.context != null\n ? this.container.lookupProperty(helper.context, name)\n : helper.context;\n if (helperFn == null) helperFn = this.container.hooks.helperMissing;\n }\n }\n\n const helperResult =\n typeof helperFn === 'function'\n ? helperFn.call(helper.context, ...helper.params, helper.options)\n : helperFn;\n\n if (isBlock(node)) {\n const result = helper.fn\n ? helperResult\n : this.container.hooks.blockHelperMissing!.call(this.context, helperResult, helper.options);\n if (result != null) {\n this.output.push(result);\n }\n } else {\n if (\n (node as hbs.AST.MustacheStatement).escaped === false ||\n this.compileOptions.noEscape === true ||\n typeof helperResult !== 'string'\n ) {\n this.output.push(helperResult);\n } else {\n this.output.push(Handlebars.escapeExpression(helperResult));\n }\n }\n }\n\n private setupHelper(node: ProcessableNode, helperName: string): VisitorHelper {\n return {\n fn: this.container.lookupProperty(this.container.helpers, helperName),\n context: this.context,\n params: this.resolveNodes(node.params),\n options: this.setupParams(node, helperName),\n };\n }\n\n private setupDecoratorOptions(decorator: hbs.AST.Decorator | hbs.AST.DecoratorBlock) {\n // TypeScript: The types indicate that `decorator.path` technically can be an `hbs.AST.Literal`. However, the upstream codebase always treats it as an `hbs.AST.PathExpression`, so we do too.\n const name = (decorator.path as hbs.AST.PathExpression).original;\n const options = toDecoratorOptions(this.setupParams(decorator, name));\n\n if (decorator.params.length > 0) {\n if (!this.processedRootDecorators) {\n // When processing the root decorators, temporarily remove the root context so it's not accessible to the decorator\n const context = this.contexts.shift();\n options.args = this.resolveNodes(decorator.params);\n this.contexts.unshift(context);\n } else {\n options.args = this.resolveNodes(decorator.params);\n }\n } else {\n options.args = [];\n }\n\n return options;\n }\n\n private setupParams(node: ProcessableBlockStatementNode, name: string): HelperOptions;\n private setupParams(node: ProcessableStatementNode, name: string): NonBlockHelperOptions;\n private setupParams(node: ProcessableNode, name: string): AmbiguousHelperOptions;\n private setupParams(node: ProcessableNode, name: string) {\n const options: AmbiguousHelperOptions = {\n name,\n hash: this.getHash(node),\n data: this.runtimeOptions!.data,\n loc: { start: node.loc.start, end: node.loc.end },\n ...this.defaultHelperOptions,\n };\n\n if (isBlock(node)) {\n (options as HelperOptions).fn = node.program\n ? this.processDecorators(node.program, this.generateProgramFunction(node.program))\n : noop;\n (options as HelperOptions).inverse = node.inverse\n ? this.processDecorators(node.inverse, this.generateProgramFunction(node.inverse))\n : noop;\n }\n\n return options;\n }\n\n private generateProgramFunction(program: hbs.AST.Program) {\n if (!program) return noop;\n\n const prog: TemplateDelegate = (nextContext: any, runtimeOptions: RuntimeOptions = {}) => {\n runtimeOptions = { ...runtimeOptions };\n\n // inherit data in blockParams from parent program\n runtimeOptions.data = runtimeOptions.data || this.runtimeOptions!.data;\n if (runtimeOptions.blockParams) {\n runtimeOptions.blockParams = runtimeOptions.blockParams.concat(\n this.runtimeOptions!.blockParams\n );\n }\n\n // inherit partials from parent program\n runtimeOptions.partials = runtimeOptions.partials || this.runtimeOptions!.partials;\n\n // stash parent program data\n const tmpRuntimeOptions = this.runtimeOptions;\n this.runtimeOptions = runtimeOptions;\n const shiftContext = nextContext !== this.context;\n if (shiftContext) this.contexts.unshift(nextContext);\n this.blockParamValues.unshift(runtimeOptions.blockParams || []);\n\n // execute child program\n const result = this.resolveNodes(program).join('');\n\n // unstash parent program data\n this.blockParamValues.shift();\n if (shiftContext) this.contexts.shift();\n this.runtimeOptions = tmpRuntimeOptions;\n\n // return result of child program\n return result;\n };\n\n prog.blockParams = program.blockParams?.length ?? 0;\n return prog;\n }\n\n private getHash(statement: { hash?: hbs.AST.Hash }) {\n const result: { [key: string]: any } = {};\n if (!statement.hash) return result;\n for (const { key, value } of statement.hash.pairs) {\n result[key] = this.resolveNodes(value)[0];\n }\n return result;\n }\n\n private resolvePath(obj: any, path: hbs.AST.PathExpression, index = 0) {\n if (this.compileOptions.strict || this.compileOptions.assumeObjects) {\n return this.strictLookup(obj, path);\n }\n\n for (; index < path.parts.length; index++) {\n if (obj == null) return;\n obj = this.container.lookupProperty(obj, path.parts[index]);\n }\n\n return obj;\n }\n\n private strictLookup(obj: any, path: hbs.AST.PathExpression) {\n // @ts-expect-error strict is not a valid property on PathExpression, but we used in the same way it's also used in the original handlebars\n const requireTerminal = this.compileOptions.strict && path.strict;\n const len = path.parts.length - (requireTerminal ? 1 : 0);\n\n for (let i = 0; i < len; i++) {\n obj = this.container.lookupProperty(obj, path.parts[i]);\n }\n\n if (requireTerminal) {\n return this.container.strict(obj, path.parts[len], path.loc);\n } else {\n return obj;\n }\n }\n\n private resolveNodes(nodes: hbs.AST.Node | hbs.AST.Node[]): any[] {\n const currentOutput = this.output;\n this.output = [];\n\n if (Array.isArray(nodes)) {\n this.acceptArray(nodes);\n } else {\n this.accept(nodes);\n }\n\n const result = this.output;\n\n this.output = currentOutput;\n\n return result;\n }\n\n private get context() {\n return this.contexts[0];\n }\n}\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\nexport const kHelper = Symbol('helper');\nexport const kAmbiguous = Symbol('ambiguous');\nexport const kSimple = Symbol('simple');\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\n// @ts-expect-error: Could not find a declaration file for module\nimport { createFrame } from 'handlebars/dist/cjs/handlebars/utils';\n\nimport type { AmbiguousHelperOptions, DecoratorOptions } from './types';\n\nexport function isBlock(node: hbs.AST.Node): node is hbs.AST.BlockStatement {\n return 'program' in node || 'inverse' in node;\n}\n\nexport function isDecorator(\n node: hbs.AST.Node\n): node is hbs.AST.Decorator | hbs.AST.DecoratorBlock {\n return node.type === 'Decorator' || node.type === 'DecoratorBlock';\n}\n\nexport function toDecoratorOptions(options: AmbiguousHelperOptions) {\n // There's really no tests/documentation on this, but to match the upstream codebase we'll remove `lookupProperty` from the decorator context\n delete (options as any).lookupProperty;\n\n return options as DecoratorOptions;\n}\n\nexport function noop() {\n return '';\n}\n\n// liftet from handlebars lib/handlebars/runtime.js\nexport function initData(context: any, data: any) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\n// liftet from handlebars lib/handlebars/compiler/compiler.js\nexport function transformLiteralToPath(node: { path: hbs.AST.PathExpression | hbs.AST.Literal }) {\n const pathIsLiteral = 'parts' in node.path === false;\n\n if (pathIsLiteral) {\n const literal = node.path;\n // @ts-expect-error: Not all `hbs.AST.Literal` sub-types has an `original` property, but that's ok, in that case we just want `undefined`\n const original = literal.original;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n node.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [original + ''],\n original: original + '',\n loc: literal.loc,\n };\n }\n}\n\nexport function allowUnsafeEval() {\n try {\n new Function();\n return true;\n } catch (e) {\n return false;\n }\n}\n"], "mappings": "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CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,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AE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IA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", "names": ["isFunction", "indexOf", "createFrame", "moveHelperToHooks", "options", "ret", "createProtoAccessControl", "resultIsAllowed", "wrapper", "ret", "initData", "context", "noop", "options", "Handlebars", "AST", "lexer", "compile", "transformLiteralToPath", "isBlock", "sourceFile", "needle", "section", "import_handlebars", "import_utils", "Handlebars", "AST", "context", "Handlebars", "Handlebars"] }