var _exception2 = _interopRequireDefault(_exception);
exports['default'] = function (instance) {
instance.registerHelper('helperMissing', function () /* [args, ]options */{
if (arguments.length === 1) {
// A missing field in a {{foo}} construct.
// Someone is actually trying to call something, blow up.
throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"');
module.exports = exports['default'];
/***/ (function(module, exports, __webpack_require__) {
var _interopRequireDefault = __webpack_require__(1)['default'];
exports.__esModule = true;
var _utils = __webpack_require__(5);
var _exception = __webpack_require__(6);
var _exception2 = _interopRequireDefault(_exception);
exports['default'] = function (instance) {
instance.registerHelper('if', function (conditional, options) {
if (arguments.length != 2) {
throw new _exception2['default']('#if requires exactly one argument');
if (_utils.isFunction(conditional)) {
conditional = conditional.call(this);
// Default behavior is to render the positive path if the value is truthy and not empty.
// The `includeZero` option may be set to treat the condtional as purely not empty based on the
// behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.
if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {
return options.inverse(this);
instance.registerHelper('unless', function (conditional, options) {
if (arguments.length != 2) {
throw new _exception2['default']('#unless requires exactly one argument');
return instance.helpers['if'].call(this, conditional, {
module.exports = exports['default'];
/***/ (function(module, exports) {
exports.__esModule = true;
exports['default'] = function (instance) {
instance.registerHelper('log', function () /* message, options */{
options = arguments[arguments.length - 1];
for (var i = 0; i < arguments.length - 1; i++) {
if (options.hash.level != null) {
level = options.hash.level;
} else if (options.data && options.data.level != null) {
level = options.data.level;
instance.log.apply(instance, args);
module.exports = exports['default'];
/***/ (function(module, exports) {
exports.__esModule = true;
exports['default'] = function (instance) {
instance.registerHelper('lookup', function (obj, field, options) {
// Note for 5.0: Change to "obj == null" in 5.0
return options.lookupProperty(obj, field);
module.exports = exports['default'];
/***/ (function(module, exports, __webpack_require__) {
var _interopRequireDefault = __webpack_require__(1)['default'];
exports.__esModule = true;
var _utils = __webpack_require__(5);
var _exception = __webpack_require__(6);
var _exception2 = _interopRequireDefault(_exception);
exports['default'] = function (instance) {
instance.registerHelper('with', function (context, options) {
if (arguments.length != 2) {
throw new _exception2['default']('#with requires exactly one argument');
if (_utils.isFunction(context)) {
context = context.call(this);
if (!_utils.isEmpty(context)) {
if (options.data && options.ids) {
data = _utils.createFrame(options.data);
data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);
blockParams: _utils.blockParams([context], [data && data.contextPath])
return options.inverse(this);
module.exports = exports['default'];
/***/ (function(module, exports, __webpack_require__) {
var _interopRequireDefault = __webpack_require__(1)['default'];
exports.__esModule = true;
exports.registerDefaultDecorators = registerDefaultDecorators;
var _decoratorsInline = __webpack_require__(31);
var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);
function registerDefaultDecorators(instance) {
_decoratorsInline2['default'](instance);
/***/ (function(module, exports, __webpack_require__) {
exports.__esModule = true;
var _utils = __webpack_require__(5);
exports['default'] = function (instance) {
instance.registerDecorator('inline', function (fn, props, container, options) {
ret = function (context, options) {
// Create a new partials stack frame prior to exec.
var original = container.partials;
container.partials = _utils.extend({}, original, props.partials);
var ret = fn(context, options);
container.partials = original;
props.partials[options.args[0]] = options.fn;
module.exports = exports['default'];
/***/ (function(module, exports, __webpack_require__) {
exports.__esModule = true;
var _utils = __webpack_require__(5);
methodMap: ['debug', 'info', 'warn', 'error'],
// Maps a given level value to the `methodMap` indexes above.
lookupLevel: function lookupLevel(level) {
if (typeof level === 'string') {
var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());
level = parseInt(level, 10);
// Can be overridden in the host environment
log: function log(level) {
level = logger.lookupLevel(level);
if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
var method = logger.methodMap[level];
// eslint-disable-next-line no-console
for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
message[_key - 1] = arguments[_key];
console[method].apply(console, message); // eslint-disable-line no-console
exports['default'] = logger;
module.exports = exports['default'];
/***/ (function(module, exports, __webpack_require__) {
var _Object$create = __webpack_require__(34)['default'];
var _Object$keys = __webpack_require__(13)['default'];
var _interopRequireWildcard = __webpack_require__(3)['default'];
exports.__esModule = true;
exports.createProtoAccessControl = createProtoAccessControl;
exports.resultIsAllowed = resultIsAllowed;
exports.resetLoggedProperties = resetLoggedProperties;
var _createNewLookupObject = __webpack_require__(36);
var _logger = __webpack_require__(32);
var logger = _interopRequireWildcard(_logger);
var loggedProperties = _Object$create(null);
function createProtoAccessControl(runtimeOptions) {
var defaultMethodWhiteList = _Object$create(null);
defaultMethodWhiteList['constructor'] = false;
defaultMethodWhiteList['__defineGetter__'] = false;
defaultMethodWhiteList['__defineSetter__'] = false;
defaultMethodWhiteList['__lookupGetter__'] = false;
var defaultPropertyWhiteList = _Object$create(null);
// eslint-disable-next-line no-proto
defaultPropertyWhiteList['__proto__'] = false;
whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
defaultValue: runtimeOptions.allowProtoPropertiesByDefault
whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
defaultValue: runtimeOptions.allowProtoMethodsByDefault
function resultIsAllowed(result, protoAccessControl, propertyName) {
if (typeof result === 'function') {
return checkWhiteList(protoAccessControl.methods, propertyName);
return checkWhiteList(protoAccessControl.properties, propertyName);
function checkWhiteList(protoAccessControlForType, propertyName) {
if (protoAccessControlForType.whitelist[propertyName] !== undefined) {
return protoAccessControlForType.whitelist[propertyName] === true;
if (protoAccessControlForType.defaultValue !== undefined) {
return protoAccessControlForType.defaultValue;
logUnexpecedPropertyAccessOnce(propertyName);
function logUnexpecedPropertyAccessOnce(propertyName) {
if (loggedProperties[propertyName] !== true) {
loggedProperties[propertyName] = true;
logger.log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');
function resetLoggedProperties() {
_Object$keys(loggedProperties).forEach(function (propertyName) {
delete loggedProperties[propertyName];
/***/ (function(module, exports, __webpack_require__) {
module.exports = { "default": __webpack_require__(35), __esModule: true };
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(9);
module.exports = function create(P, D){
/***/ (function(module, exports, __webpack_require__) {
var _Object$create = __webpack_require__(34)['default'];
exports.__esModule = true;
exports.createNewLookupObject = createNewLookupObject;
var _utils = __webpack_require__(5);
* Create a new object with "null"-prototype to avoid truthy results on prototype properties.
* The resulting object can be used with "object[property]" to check if a property exists
* @param {...object} sources a varargs parameter of source objects that will be merged
function createNewLookupObject() {
for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
sources[_key] = arguments[_key];
return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
/***/ (function(module, exports) {
// Build out our basic SafeString type
exports.__esModule = true;
function SafeString(string) {
SafeString.prototype.toString = SafeString.prototype.toHTML = function () {
exports['default'] = SafeString;
module.exports = exports['default'];
/***/ (function(module, exports, __webpack_require__) {
var _Object$seal = __webpack_require__(39)['default'];
var _Object$keys = __webpack_require__(13)['default'];
var _interopRequireWildcard = __webpack_require__(3)['default'];
var _interopRequireDefault = __webpack_require__(1)['default'];
exports.__esModule = true;
exports.checkRevision = checkRevision;
exports.template = template;
exports.wrapProgram = wrapProgram;
exports.resolvePartial = resolvePartial;
exports.invokePartial = invokePartial;
var _utils = __webpack_require__(5);
var Utils = _interopRequireWildcard(_utils);
var _exception = __webpack_require__(6);
var _exception2 = _interopRequireDefault(_exception);
var _base = __webpack_require__(4);
var _helpers = __webpack_require__(10);
var _internalWrapHelper = __webpack_require__(43);
var _internalProtoAccess = __webpack_require__(33);
function checkRevision(compilerInfo) {
var compilerRevision = compilerInfo && compilerInfo[0] || 1,
currentRevision = _base.COMPILER_REVISION;
if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {
if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {
var runtimeVersions = _base.REVISION_CHANGES[currentRevision],
compilerVersions = _base.REVISION_CHANGES[compilerRevision];
throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');
// Use the embedded version info since the runtime doesn't know about this revision yet
throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');
function template(templateSpec, env) {
/* istanbul ignore next */
throw new _exception2['default']('No environment passed to template');
if (!templateSpec || !templateSpec.main) {
throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);
templateSpec.main.decorator = templateSpec.main_d;
// Note: Using env.VM references rather than local var references throughout this section to allow
// for external users to override these as pseudo-supported APIs.
env.VM.checkRevision(templateSpec.compiler);
// backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)
var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;
function invokePartialWrapper(partial, context, options) {
context = Utils.extend({}, context, options.hash);
partial = env.VM.resolvePartial.call(this, partial, context, options);
var extendedOptions = Utils.extend({}, options, {
protoAccessControl: this.protoAccessControl
var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
if (result == null && env.compile) {
options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
result = options.partials[options.name](context, extendedOptions);