This is an automated email from the ASF dual-hosted git repository.

dhavaljrajpara pushed a commit to branch RANGER-5638
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit f9f04c831f98e2d6d8de10f46bf8f19bb81698c2
Author: Dhaval Rajpara <[email protected]>
AuthorDate: Fri Jul 10 01:44:54 2026 +0530

    RANGER-5638 : ranger: Upgrade handlebars to 4.7.9
---
 .../require-handlebars-plugin/js/Handlebars.js     | 1226 ++++++++++++++++----
 1 file changed, 1021 insertions(+), 205 deletions(-)

diff --git 
a/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/Handlebars.js
 
b/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/Handlebars.js
index 1b2e9e08e..547aef1f1 100644
--- 
a/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/Handlebars.js
+++ 
b/security-admin/src/main/webapp/libs/bower/require-handlebars-plugin/js/Handlebars.js
@@ -1,7 +1,7 @@
 /**!
 
  @license
- handlebars v4.7.7
+ handlebars v4.7.9
 
 Copyright (C) 2011-2019 by Yehuda Katz
 
@@ -92,23 +92,23 @@ return /******/ (function(modules) { // webpackBootstrap
 
   // Compiler imports
 
-  var _handlebarsCompilerAst = __webpack_require__(45);
+  var _handlebarsCompilerAst = __webpack_require__(83);
 
   var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
 
-  var _handlebarsCompilerBase = __webpack_require__(46);
+  var _handlebarsCompilerBase = __webpack_require__(84);
 
-  var _handlebarsCompilerCompiler = __webpack_require__(51);
+  var _handlebarsCompilerCompiler = __webpack_require__(89);
 
-  var _handlebarsCompilerJavascriptCompiler = __webpack_require__(52);
+  var _handlebarsCompilerJavascriptCompiler = __webpack_require__(90);
 
   var _handlebarsCompilerJavascriptCompiler2 = 
_interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
 
-  var _handlebarsCompilerVisitor = __webpack_require__(49);
+  var _handlebarsCompilerVisitor = __webpack_require__(87);
 
   var _handlebarsCompilerVisitor2 = 
_interopRequireDefault(_handlebarsCompilerVisitor);
 
-  var _handlebarsNoConflict = __webpack_require__(44);
+  var _handlebarsNoConflict = __webpack_require__(82);
 
   var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
 
@@ -178,7 +178,7 @@ return /******/ (function(modules) { // webpackBootstrap
   // Each of these augment the Handlebars object. No need to setup here.
   // (This is done to easily share code between commonjs and browse envs)
 
-  var _handlebarsSafeString = __webpack_require__(37);
+  var _handlebarsSafeString = __webpack_require__(76);
 
   var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
 
@@ -190,11 +190,11 @@ return /******/ (function(modules) { // webpackBootstrap
 
   var Utils = _interopRequireWildcard(_handlebarsUtils);
 
-  var _handlebarsRuntime = __webpack_require__(38);
+  var _handlebarsRuntime = __webpack_require__(77);
 
   var runtime = _interopRequireWildcard(_handlebarsRuntime);
 
-  var _handlebarsNoConflict = __webpack_require__(44);
+  var _handlebarsNoConflict = __webpack_require__(82);
 
   var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
 
@@ -270,15 +270,15 @@ return /******/ (function(modules) { // webpackBootstrap
 
   var _helpers = __webpack_require__(10);
 
-  var _decorators = __webpack_require__(30);
+  var _decorators = __webpack_require__(70);
 
-  var _logger = __webpack_require__(32);
+  var _logger = __webpack_require__(72);
 
   var _logger2 = _interopRequireDefault(_logger);
 
-  var _internalProtoAccess = __webpack_require__(33);
+  var _internalProtoAccess = __webpack_require__(73);
 
-  var VERSION = '4.7.7';
+  var VERSION = '4.7.9';
   exports.VERSION = VERSION;
   var COMPILER_REVISION = 8;
   exports.COMPILER_REVISION = COMPILER_REVISION;
@@ -621,23 +621,23 @@ return /******/ (function(modules) { // webpackBootstrap
 
   var _helpersEach2 = _interopRequireDefault(_helpersEach);
 
-  var _helpersHelperMissing = __webpack_require__(25);
+  var _helpersHelperMissing = __webpack_require__(65);
 
   var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);
 
-  var _helpersIf = __webpack_require__(26);
+  var _helpersIf = __webpack_require__(66);
 
   var _helpersIf2 = _interopRequireDefault(_helpersIf);
 
-  var _helpersLog = __webpack_require__(27);
+  var _helpersLog = __webpack_require__(67);
 
   var _helpersLog2 = _interopRequireDefault(_helpersLog);
 
-  var _helpersLookup = __webpack_require__(28);
+  var _helpersLookup = __webpack_require__(68);
 
   var _helpersLookup2 = _interopRequireDefault(_helpersLookup);
 
-  var _helpersWith = __webpack_require__(29);
+  var _helpersWith = __webpack_require__(69);
 
   var _helpersWith2 = _interopRequireDefault(_helpersWith);
 
@@ -655,7 +655,8 @@ return /******/ (function(modules) { // webpackBootstrap
     if (instance.helpers[helperName]) {
       instance.hooks[helperName] = instance.helpers[helperName];
       if (!keepHelper) {
-        delete instance.helpers[helperName];
+        // Using delete is slow
+        instance.helpers[helperName] = undefined;
       }
     }
   }
@@ -707,9 +708,15 @@ return /******/ (function(modules) { // webpackBootstrap
 /* 12 */
 /***/ (function(module, exports, __webpack_require__) {
 
-  /* WEBPACK VAR INJECTION */(function(global) {'use strict';
+  'use strict';
+
+  var _Symbol = __webpack_require__(13)['default'];
+
+  var _Symbol$iterator = __webpack_require__(43)['default'];
+
+  var _getIterator = __webpack_require__(55)['default'];
 
-  var _Object$keys = __webpack_require__(13)['default'];
+  var _Object$keys = __webpack_require__(60)['default'];
 
   var _interopRequireDefault = __webpack_require__(1)['default'];
 
@@ -771,9 +778,9 @@ return /******/ (function(modules) { // webpackBootstrap
               execIteration(i, i, i === context.length - 1);
             }
           }
-        } else if (global.Symbol && context[global.Symbol.iterator]) {
+        } else if (typeof _Symbol === 'function' && context[_Symbol$iterator]) 
{
           var newContext = [];
-          var iterator = context[global.Symbol.iterator]();
+          var iterator = _getIterator(context);
           for (var it = iterator.next(); !it.done; it = iterator.next()) {
             newContext.push(it.value);
           }
@@ -811,7 +818,6 @@ return /******/ (function(modules) { // webpackBootstrap
   };
 
   module.exports = exports['default'];
-  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
 
 /***/ }),
 /* 13 */
@@ -824,61 +830,285 @@ return /******/ (function(modules) { // webpackBootstrap
 /***/ (function(module, exports, __webpack_require__) {
 
   __webpack_require__(15);
-  module.exports = __webpack_require__(21).Object.keys;
+  __webpack_require__(42);
+  module.exports = __webpack_require__(21).Symbol;
 
 /***/ }),
 /* 15 */
 /***/ (function(module, exports, __webpack_require__) {
 
-  // 19.1.2.14 Object.keys(O)
-  var toObject = __webpack_require__(16);
+  'use strict';
+  // ECMAScript 6 symbols shim
+  var $              = __webpack_require__(9)
+    , global         = __webpack_require__(16)
+    , has            = __webpack_require__(17)
+    , DESCRIPTORS    = __webpack_require__(18)
+    , $export        = __webpack_require__(20)
+    , redefine       = __webpack_require__(24)
+    , $fails         = __webpack_require__(19)
+    , shared         = __webpack_require__(27)
+    , setToStringTag = __webpack_require__(28)
+    , uid            = __webpack_require__(30)
+    , wks            = __webpack_require__(29)
+    , keyOf          = __webpack_require__(31)
+    , $names         = __webpack_require__(36)
+    , enumKeys       = __webpack_require__(37)
+    , isArray        = __webpack_require__(38)
+    , anObject       = __webpack_require__(39)
+    , toIObject      = __webpack_require__(32)
+    , createDesc     = __webpack_require__(26)
+    , getDesc        = $.getDesc
+    , setDesc        = $.setDesc
+    , _create        = $.create
+    , getNames       = $names.get
+    , $Symbol        = global.Symbol
+    , $JSON          = global.JSON
+    , _stringify     = $JSON && $JSON.stringify
+    , setter         = false
+    , HIDDEN         = wks('_hidden')
+    , isEnum         = $.isEnum
+    , SymbolRegistry = shared('symbol-registry')
+    , AllSymbols     = shared('symbols')
+    , useNative      = typeof $Symbol == 'function'
+    , ObjectProto    = Object.prototype;
+
+  // fallback for old Android, 
https://code.google.com/p/v8/issues/detail?id=687
+  var setSymbolDesc = DESCRIPTORS && $fails(function(){
+    return _create(setDesc({}, 'a', {
+      get: function(){ return setDesc(this, 'a', {value: 7}).a; }
+    })).a != 7;
+  }) ? function(it, key, D){
+    var protoDesc = getDesc(ObjectProto, key);
+    if(protoDesc)delete ObjectProto[key];
+    setDesc(it, key, D);
+    if(protoDesc && it !== ObjectProto)setDesc(ObjectProto, key, protoDesc);
+  } : setDesc;
+
+  var wrap = function(tag){
+    var sym = AllSymbols[tag] = _create($Symbol.prototype);
+    sym._k = tag;
+    DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
+      configurable: true,
+      set: function(value){
+        if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = 
false;
+        setSymbolDesc(this, tag, createDesc(1, value));
+      }
+    });
+    return sym;
+  };
 
-  __webpack_require__(18)('keys', function($keys){
-    return function keys(it){
-      return $keys(toObject(it));
+  var isSymbol = function(it){
+    return typeof it == 'symbol';
+  };
+
+  var $defineProperty = function defineProperty(it, key, D){
+    if(D && has(AllSymbols, key)){
+      if(!D.enumerable){
+        if(!has(it, HIDDEN))setDesc(it, HIDDEN, createDesc(1, {}));
+        it[HIDDEN][key] = true;
+      } else {
+        if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
+        D = _create(D, {enumerable: createDesc(0, false)});
+      } return setSymbolDesc(it, key, D);
+    } return setDesc(it, key, D);
+  };
+  var $defineProperties = function defineProperties(it, P){
+    anObject(it);
+    var keys = enumKeys(P = toIObject(P))
+      , i    = 0
+      , l = keys.length
+      , key;
+    while(l > i)$defineProperty(it, key = keys[i++], P[key]);
+    return it;
+  };
+  var $create = function create(it, P){
+    return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+  };
+  var $propertyIsEnumerable = function propertyIsEnumerable(key){
+    var E = isEnum.call(this, key);
+    return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) 
&& this[HIDDEN][key]
+      ? E : true;
+  };
+  var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
+    var D = getDesc(it = toIObject(it), key);
+    if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && 
it[HIDDEN][key]))D.enumerable = true;
+    return D;
+  };
+  var $getOwnPropertyNames = function getOwnPropertyNames(it){
+    var names  = getNames(toIObject(it))
+      , result = []
+      , i      = 0
+      , key;
+    while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != 
HIDDEN)result.push(key);
+    return result;
+  };
+  var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
+    var names  = getNames(toIObject(it))
+      , result = []
+      , i      = 0
+      , key;
+    while(names.length > i)if(has(AllSymbols, key = 
names[i++]))result.push(AllSymbols[key]);
+    return result;
+  };
+  var $stringify = function stringify(it){
+    if(it === undefined || isSymbol(it))return; // IE8 returns string on 
undefined
+    var args = [it]
+      , i    = 1
+      , $$   = arguments
+      , replacer, $replacer;
+    while($$.length > i)args.push($$[i++]);
+    replacer = args[1];
+    if(typeof replacer == 'function')$replacer = replacer;
+    if($replacer || !isArray(replacer))replacer = function(key, value){
+      if($replacer)value = $replacer.call(this, key, value);
+      if(!isSymbol(value))return value;
     };
+    args[1] = replacer;
+    return _stringify.apply($JSON, args);
+  };
+  var buggyJSON = $fails(function(){
+    var S = $Symbol();
+    // MS Edge converts symbol values to JSON as {}
+    // WebKit converts symbol values to JSON as null
+    // V8 throws on boxed symbols
+    return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || 
_stringify(Object(S)) != '{}';
   });
 
+  // 19.4.1.1 Symbol([description])
+  if(!useNative){
+    $Symbol = function Symbol(){
+      if(isSymbol(this))throw TypeError('Symbol is not a constructor');
+      return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
+    };
+    redefine($Symbol.prototype, 'toString', function toString(){
+      return this._k;
+    });
+
+    isSymbol = function(it){
+      return it instanceof $Symbol;
+    };
+
+    $.create     = $create;
+    $.isEnum     = $propertyIsEnumerable;
+    $.getDesc    = $getOwnPropertyDescriptor;
+    $.setDesc    = $defineProperty;
+    $.setDescs   = $defineProperties;
+    $.getNames   = $names.get = $getOwnPropertyNames;
+    $.getSymbols = $getOwnPropertySymbols;
+
+    if(DESCRIPTORS && !__webpack_require__(41)){
+      redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, 
true);
+    }
+  }
+
+  var symbolStatics = {
+    // 19.4.2.1 Symbol.for(key)
+    'for': function(key){
+      return has(SymbolRegistry, key += '')
+        ? SymbolRegistry[key]
+        : SymbolRegistry[key] = $Symbol(key);
+    },
+    // 19.4.2.5 Symbol.keyFor(sym)
+    keyFor: function keyFor(key){
+      return keyOf(SymbolRegistry, key);
+    },
+    useSetter: function(){ setter = true; },
+    useSimple: function(){ setter = false; }
+  };
+  // 19.4.2.2 Symbol.hasInstance
+  // 19.4.2.3 Symbol.isConcatSpreadable
+  // 19.4.2.4 Symbol.iterator
+  // 19.4.2.6 Symbol.match
+  // 19.4.2.8 Symbol.replace
+  // 19.4.2.9 Symbol.search
+  // 19.4.2.10 Symbol.species
+  // 19.4.2.11 Symbol.split
+  // 19.4.2.12 Symbol.toPrimitive
+  // 19.4.2.13 Symbol.toStringTag
+  // 19.4.2.14 Symbol.unscopables
+  $.each.call((
+    'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +
+    'species,split,toPrimitive,toStringTag,unscopables'
+  ).split(','), function(it){
+    var sym = wks(it);
+    symbolStatics[it] = useNative ? sym : wrap(sym);
+  });
+
+  setter = true;
+
+  $export($export.G + $export.W, {Symbol: $Symbol});
+
+  $export($export.S, 'Symbol', symbolStatics);
+
+  $export($export.S + $export.F * !useNative, 'Object', {
+    // 19.1.2.2 Object.create(O [, Properties])
+    create: $create,
+    // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+    defineProperty: $defineProperty,
+    // 19.1.2.3 Object.defineProperties(O, Properties)
+    defineProperties: $defineProperties,
+    // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+    getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+    // 19.1.2.7 Object.getOwnPropertyNames(O)
+    getOwnPropertyNames: $getOwnPropertyNames,
+    // 19.1.2.8 Object.getOwnPropertySymbols(O)
+    getOwnPropertySymbols: $getOwnPropertySymbols
+  });
+
+  // 24.3.2 JSON.stringify(value [, replacer [, space]])
+  $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', 
{stringify: $stringify});
+
+  // 19.4.3.5 Symbol.prototype[@@toStringTag]
+  setToStringTag($Symbol, 'Symbol');
+  // 20.2.1.9 Math[@@toStringTag]
+  setToStringTag(Math, 'Math', true);
+  // 24.3.3 JSON[@@toStringTag]
+  setToStringTag(global.JSON, 'JSON', true);
+
 /***/ }),
 /* 16 */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ (function(module, exports) {
 
-  // 7.1.13 ToObject(argument)
-  var defined = __webpack_require__(17);
-  module.exports = function(it){
-    return Object(defined(it));
-  };
+  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+  var global = module.exports = typeof window != 'undefined' && window.Math == 
Math
+    ? window : typeof self != 'undefined' && self.Math == Math ? self : 
Function('return this')();
+  if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
 
 /***/ }),
 /* 17 */
 /***/ (function(module, exports) {
 
-  // 7.2.1 RequireObjectCoercible(argument)
-  module.exports = function(it){
-    if(it == undefined)throw TypeError("Can't call method on  " + it);
-    return it;
+  var hasOwnProperty = {}.hasOwnProperty;
+  module.exports = function(it, key){
+    return hasOwnProperty.call(it, key);
   };
 
 /***/ }),
 /* 18 */
 /***/ (function(module, exports, __webpack_require__) {
 
-  // most Object methods by ES6 should accept primitives
-  var $export = __webpack_require__(19)
-    , core    = __webpack_require__(21)
-    , fails   = __webpack_require__(24);
-  module.exports = function(KEY, exec){
-    var fn  = (core.Object || {})[KEY] || Object[KEY]
-      , exp = {};
-    exp[KEY] = exec(fn);
-    $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', 
exp);
-  };
+  // Thank's IE8 for his funny defineProperty
+  module.exports = !__webpack_require__(19)(function(){
+    return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 
7;
+  });
 
 /***/ }),
 /* 19 */
+/***/ (function(module, exports) {
+
+  module.exports = function(exec){
+    try {
+      return !!exec();
+    } catch(e){
+      return true;
+    }
+  };
+
+/***/ }),
+/* 20 */
 /***/ (function(module, exports, __webpack_require__) {
 
-  var global    = __webpack_require__(20)
+  var global    = __webpack_require__(16)
     , core      = __webpack_require__(21)
     , ctx       = __webpack_require__(22)
     , PROTOTYPE = 'prototype';
@@ -925,15 +1155,6 @@ return /******/ (function(modules) { // webpackBootstrap
   $export.W = 32; // wrap
   module.exports = $export;
 
-/***/ }),
-/* 20 */
-/***/ (function(module, exports) {
-
-  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
-  var global = module.exports = typeof window != 'undefined' && window.Math == 
Math
-    ? window : typeof self != 'undefined' && self.Math == Math ? self : 
Function('return this')();
-  if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
-
 /***/ }),
 /* 21 */
 /***/ (function(module, exports) {
@@ -977,18 +1198,559 @@ return /******/ (function(modules) { // webpackBootstrap
 
 /***/ }),
 /* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  module.exports = __webpack_require__(25);
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  var $          = __webpack_require__(9)
+    , createDesc = __webpack_require__(26);
+  module.exports = __webpack_require__(18) ? function(object, key, value){
+    return $.setDesc(object, key, createDesc(1, value));
+  } : function(object, key, value){
+    object[key] = value;
+    return object;
+  };
+
+/***/ }),
+/* 26 */
 /***/ (function(module, exports) {
 
-  module.exports = function(exec){
+  module.exports = function(bitmap, value){
+    return {
+      enumerable  : !(bitmap & 1),
+      configurable: !(bitmap & 2),
+      writable    : !(bitmap & 4),
+      value       : value
+    };
+  };
+
+/***/ }),
+/* 27 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  var global = __webpack_require__(16)
+    , SHARED = '__core-js_shared__'
+    , store  = global[SHARED] || (global[SHARED] = {});
+  module.exports = function(key){
+    return store[key] || (store[key] = {});
+  };
+
+/***/ }),
+/* 28 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  var def = __webpack_require__(9).setDesc
+    , has = __webpack_require__(17)
+    , TAG = __webpack_require__(29)('toStringTag');
+
+  module.exports = function(it, tag, stat){
+    if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, 
{configurable: true, value: tag});
+  };
+
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  var store  = __webpack_require__(27)('wks')
+    , uid    = __webpack_require__(30)
+    , Symbol = __webpack_require__(16).Symbol;
+  module.exports = function(name){
+    return store[name] || (store[name] =
+      Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));
+  };
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports) {
+
+  var id = 0
+    , px = Math.random();
+  module.exports = function(key){
+    return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + 
px).toString(36));
+  };
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  var $         = __webpack_require__(9)
+    , toIObject = __webpack_require__(32);
+  module.exports = function(object, el){
+    var O      = toIObject(object)
+      , keys   = $.getKeys(O)
+      , length = keys.length
+      , index  = 0
+      , key;
+    while(length > index)if(O[key = keys[index++]] === el)return key;
+  };
+
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  // to indexed object, toObject with fallback for non-array-like ES3 strings
+  var IObject = __webpack_require__(33)
+    , defined = __webpack_require__(35);
+  module.exports = function(it){
+    return IObject(defined(it));
+  };
+
+/***/ }),
+/* 33 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  // fallback for non-array-like ES3 and non-enumerable old V8 strings
+  var cof = __webpack_require__(34);
+  module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+    return cof(it) == 'String' ? it.split('') : Object(it);
+  };
+
+/***/ }),
+/* 34 */
+/***/ (function(module, exports) {
+
+  var toString = {}.toString;
+
+  module.exports = function(it){
+    return toString.call(it).slice(8, -1);
+  };
+
+/***/ }),
+/* 35 */
+/***/ (function(module, exports) {
+
+  // 7.2.1 RequireObjectCoercible(argument)
+  module.exports = function(it){
+    if(it == undefined)throw TypeError("Can't call method on  " + it);
+    return it;
+  };
+
+/***/ }),
+/* 36 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+  var toIObject = __webpack_require__(32)
+    , getNames  = __webpack_require__(9).getNames
+    , toString  = {}.toString;
+
+  var windowNames = typeof window == 'object' && Object.getOwnPropertyNames
+    ? Object.getOwnPropertyNames(window) : [];
+
+  var getWindowNames = function(it){
     try {
-      return !!exec();
+      return getNames(it);
     } catch(e){
-      return true;
+      return windowNames.slice();
     }
   };
 
+  module.exports.get = function getOwnPropertyNames(it){
+    if(windowNames && toString.call(it) == '[object Window]')return 
getWindowNames(it);
+    return getNames(toIObject(it));
+  };
+
 /***/ }),
-/* 25 */
+/* 37 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  // all enumerable object keys, includes symbols
+  var $ = __webpack_require__(9);
+  module.exports = function(it){
+    var keys       = $.getKeys(it)
+      , getSymbols = $.getSymbols;
+    if(getSymbols){
+      var symbols = getSymbols(it)
+        , isEnum  = $.isEnum
+        , i       = 0
+        , key;
+      while(symbols.length > i)if(isEnum.call(it, key = 
symbols[i++]))keys.push(key);
+    }
+    return keys;
+  };
+
+/***/ }),
+/* 38 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  // 7.2.2 IsArray(argument)
+  var cof = __webpack_require__(34);
+  module.exports = Array.isArray || function(arg){
+    return cof(arg) == 'Array';
+  };
+
+/***/ }),
+/* 39 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  var isObject = __webpack_require__(40);
+  module.exports = function(it){
+    if(!isObject(it))throw TypeError(it + ' is not an object!');
+    return it;
+  };
+
+/***/ }),
+/* 40 */
+/***/ (function(module, exports) {
+
+  module.exports = function(it){
+    return typeof it === 'object' ? it !== null : typeof it === 'function';
+  };
+
+/***/ }),
+/* 41 */
+/***/ (function(module, exports) {
+
+  module.exports = true;
+
+/***/ }),
+/* 42 */
+/***/ (function(module, exports) {
+
+  
+
+/***/ }),
+/* 43 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  module.exports = { "default": __webpack_require__(44), __esModule: true };
+
+/***/ }),
+/* 44 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  __webpack_require__(45);
+  __webpack_require__(51);
+  module.exports = __webpack_require__(29)('iterator');
+
+/***/ }),
+/* 45 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  'use strict';
+  var $at  = __webpack_require__(46)(true);
+
+  // 21.1.3.27 String.prototype[@@iterator]()
+  __webpack_require__(48)(String, 'String', function(iterated){
+    this._t = String(iterated); // target
+    this._i = 0;                // next index
+  // 21.1.5.2.1 %StringIteratorPrototype%.next()
+  }, function(){
+    var O     = this._t
+      , index = this._i
+      , point;
+    if(index >= O.length)return {value: undefined, done: true};
+    point = $at(O, index);
+    this._i += point.length;
+    return {value: point, done: false};
+  });
+
+/***/ }),
+/* 46 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  var toInteger = __webpack_require__(47)
+    , defined   = __webpack_require__(35);
+  // true  -> String#at
+  // false -> String#codePointAt
+  module.exports = function(TO_STRING){
+    return function(that, pos){
+      var s = String(defined(that))
+        , i = toInteger(pos)
+        , l = s.length
+        , a, b;
+      if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
+      a = s.charCodeAt(i);
+      return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 
1)) < 0xdc00 || b > 0xdfff
+        ? TO_STRING ? s.charAt(i) : a
+        : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 
0x10000;
+    };
+  };
+
+/***/ }),
+/* 47 */
+/***/ (function(module, exports) {
+
+  // 7.1.4 ToInteger
+  var ceil  = Math.ceil
+    , floor = Math.floor;
+  module.exports = function(it){
+    return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+  };
+
+/***/ }),
+/* 48 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  'use strict';
+  var LIBRARY        = __webpack_require__(41)
+    , $export        = __webpack_require__(20)
+    , redefine       = __webpack_require__(24)
+    , hide           = __webpack_require__(25)
+    , has            = __webpack_require__(17)
+    , Iterators      = __webpack_require__(49)
+    , $iterCreate    = __webpack_require__(50)
+    , setToStringTag = __webpack_require__(28)
+    , getProto       = __webpack_require__(9).getProto
+    , ITERATOR       = __webpack_require__(29)('iterator')
+    , BUGGY          = !([].keys && 'next' in [].keys()) // Safari has buggy 
iterators w/o `next`
+    , FF_ITERATOR    = '@@iterator'
+    , KEYS           = 'keys'
+    , VALUES         = 'values';
+
+  var returnThis = function(){ return this; };
+
+  module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, 
FORCED){
+    $iterCreate(Constructor, NAME, next);
+    var getMethod = function(kind){
+      if(!BUGGY && kind in proto)return proto[kind];
+      switch(kind){
+        case KEYS: return function keys(){ return new Constructor(this, kind); 
};
+        case VALUES: return function values(){ return new Constructor(this, 
kind); };
+      } return function entries(){ return new Constructor(this, kind); };
+    };
+    var TAG        = NAME + ' Iterator'
+      , DEF_VALUES = DEFAULT == VALUES
+      , VALUES_BUG = false
+      , proto      = Base.prototype
+      , $native    = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && 
proto[DEFAULT]
+      , $default   = $native || getMethod(DEFAULT)
+      , methods, key;
+    // Fix native
+    if($native){
+      var IteratorPrototype = getProto($default.call(new Base));
+      // Set @@toStringTag to native iterators
+      setToStringTag(IteratorPrototype, TAG, true);
+      // FF fix
+      if(!LIBRARY && has(proto, FF_ITERATOR))hide(IteratorPrototype, ITERATOR, 
returnThis);
+      // fix Array#{values, @@iterator}.name in V8 / FF
+      if(DEF_VALUES && $native.name !== VALUES){
+        VALUES_BUG = true;
+        $default = function values(){ return $native.call(this); };
+      }
+    }
+    // Define iterator
+    if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
+      hide(proto, ITERATOR, $default);
+    }
+    // Plug for library
+    Iterators[NAME] = $default;
+    Iterators[TAG]  = returnThis;
+    if(DEFAULT){
+      methods = {
+        values:  DEF_VALUES  ? $default : getMethod(VALUES),
+        keys:    IS_SET      ? $default : getMethod(KEYS),
+        entries: !DEF_VALUES ? $default : getMethod('entries')
+      };
+      if(FORCED)for(key in methods){
+        if(!(key in proto))redefine(proto, key, methods[key]);
+      } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, 
methods);
+    }
+    return methods;
+  };
+
+/***/ }),
+/* 49 */
+/***/ (function(module, exports) {
+
+  module.exports = {};
+
+/***/ }),
+/* 50 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  'use strict';
+  var $              = __webpack_require__(9)
+    , descriptor     = __webpack_require__(26)
+    , setToStringTag = __webpack_require__(28)
+    , IteratorPrototype = {};
+
+  // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+  __webpack_require__(25)(IteratorPrototype, 
__webpack_require__(29)('iterator'), function(){ return this; });
+
+  module.exports = function(Constructor, NAME, next){
+    Constructor.prototype = $.create(IteratorPrototype, {next: descriptor(1, 
next)});
+    setToStringTag(Constructor, NAME + ' Iterator');
+  };
+
+/***/ }),
+/* 51 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  __webpack_require__(52);
+  var Iterators = __webpack_require__(49);
+  Iterators.NodeList = Iterators.HTMLCollection = Iterators.Array;
+
+/***/ }),
+/* 52 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  'use strict';
+  var addToUnscopables = __webpack_require__(53)
+    , step             = __webpack_require__(54)
+    , Iterators        = __webpack_require__(49)
+    , toIObject        = __webpack_require__(32);
+
+  // 22.1.3.4 Array.prototype.entries()
+  // 22.1.3.13 Array.prototype.keys()
+  // 22.1.3.29 Array.prototype.values()
+  // 22.1.3.30 Array.prototype[@@iterator]()
+  module.exports = __webpack_require__(48)(Array, 'Array', function(iterated, 
kind){
+    this._t = toIObject(iterated); // target
+    this._i = 0;                   // next index
+    this._k = kind;                // kind
+  // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+  }, function(){
+    var O     = this._t
+      , kind  = this._k
+      , index = this._i++;
+    if(!O || index >= O.length){
+      this._t = undefined;
+      return step(1);
+    }
+    if(kind == 'keys'  )return step(0, index);
+    if(kind == 'values')return step(0, O[index]);
+    return step(0, [index, O[index]]);
+  }, 'values');
+
+  // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+  Iterators.Arguments = Iterators.Array;
+
+  addToUnscopables('keys');
+  addToUnscopables('values');
+  addToUnscopables('entries');
+
+/***/ }),
+/* 53 */
+/***/ (function(module, exports) {
+
+  module.exports = function(){ /* empty */ };
+
+/***/ }),
+/* 54 */
+/***/ (function(module, exports) {
+
+  module.exports = function(done, value){
+    return {value: value, done: !!done};
+  };
+
+/***/ }),
+/* 55 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  module.exports = { "default": __webpack_require__(56), __esModule: true };
+
+/***/ }),
+/* 56 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  __webpack_require__(51);
+  __webpack_require__(45);
+  module.exports = __webpack_require__(57);
+
+/***/ }),
+/* 57 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  var anObject = __webpack_require__(39)
+    , get      = __webpack_require__(58);
+  module.exports = __webpack_require__(21).getIterator = function(it){
+    var iterFn = get(it);
+    if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');
+    return anObject(iterFn.call(it));
+  };
+
+/***/ }),
+/* 58 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  var classof   = __webpack_require__(59)
+    , ITERATOR  = __webpack_require__(29)('iterator')
+    , Iterators = __webpack_require__(49);
+  module.exports = __webpack_require__(21).getIteratorMethod = function(it){
+    if(it != undefined)return it[ITERATOR]
+      || it['@@iterator']
+      || Iterators[classof(it)];
+  };
+
+/***/ }),
+/* 59 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  // getting tag from 19.1.3.6 Object.prototype.toString()
+  var cof = __webpack_require__(34)
+    , TAG = __webpack_require__(29)('toStringTag')
+    // ES3 wrong here
+    , ARG = cof(function(){ return arguments; }()) == 'Arguments';
+
+  module.exports = function(it){
+    var O, T, B;
+    return it === undefined ? 'Undefined' : it === null ? 'Null'
+      // @@toStringTag case
+      : typeof (T = (O = Object(it))[TAG]) == 'string' ? T
+      // builtinTag case
+      : ARG ? cof(O)
+      // ES3 arguments fallback
+      : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 
'Arguments' : B;
+  };
+
+/***/ }),
+/* 60 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  module.exports = { "default": __webpack_require__(61), __esModule: true };
+
+/***/ }),
+/* 61 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  __webpack_require__(62);
+  module.exports = __webpack_require__(21).Object.keys;
+
+/***/ }),
+/* 62 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  // 19.1.2.14 Object.keys(O)
+  var toObject = __webpack_require__(63);
+
+  __webpack_require__(64)('keys', function($keys){
+    return function keys(it){
+      return $keys(toObject(it));
+    };
+  });
+
+/***/ }),
+/* 63 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  // 7.1.13 ToObject(argument)
+  var defined = __webpack_require__(35);
+  module.exports = function(it){
+    return Object(defined(it));
+  };
+
+/***/ }),
+/* 64 */
+/***/ (function(module, exports, __webpack_require__) {
+
+  // most Object methods by ES6 should accept primitives
+  var $export = __webpack_require__(20)
+    , core    = __webpack_require__(21)
+    , fails   = __webpack_require__(19);
+  module.exports = function(KEY, exec){
+    var fn  = (core.Object || {})[KEY] || Object[KEY]
+      , exp = {};
+    exp[KEY] = exec(fn);
+    $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', 
exp);
+  };
+
+/***/ }),
+/* 65 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
@@ -1016,7 +1778,7 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 26 */
+/* 66 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
@@ -1065,7 +1827,7 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 27 */
+/* 67 */
 /***/ (function(module, exports) {
 
   'use strict';
@@ -1095,7 +1857,7 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 28 */
+/* 68 */
 /***/ (function(module, exports) {
 
   'use strict';
@@ -1115,7 +1877,7 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 29 */
+/* 69 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
@@ -1161,7 +1923,7 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 30 */
+/* 70 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
@@ -1171,7 +1933,7 @@ return /******/ (function(modules) { // webpackBootstrap
   exports.__esModule = true;
   exports.registerDefaultDecorators = registerDefaultDecorators;
 
-  var _decoratorsInline = __webpack_require__(31);
+  var _decoratorsInline = __webpack_require__(71);
 
   var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);
 
@@ -1180,7 +1942,7 @@ return /******/ (function(modules) { // webpackBootstrap
   }
 
 /***/ }),
-/* 31 */
+/* 71 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
@@ -1213,7 +1975,7 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 32 */
+/* 72 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
@@ -1264,48 +2026,53 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 33 */
+/* 73 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
 
-  var _Object$create = __webpack_require__(34)['default'];
+  var _Object$create = __webpack_require__(74)['default'];
 
-  var _Object$keys = __webpack_require__(13)['default'];
+  var _Object$keys = __webpack_require__(60)['default'];
 
-  var _interopRequireWildcard = __webpack_require__(3)['default'];
+  var _interopRequireDefault = __webpack_require__(1)['default'];
 
   exports.__esModule = true;
   exports.createProtoAccessControl = createProtoAccessControl;
   exports.resultIsAllowed = resultIsAllowed;
   exports.resetLoggedProperties = resetLoggedProperties;
 
-  var _createNewLookupObject = __webpack_require__(36);
+  var _utils = __webpack_require__(5);
 
-  var _logger = __webpack_require__(32);
+  var _logger = __webpack_require__(72);
 
-  var logger = _interopRequireWildcard(_logger);
+  var _logger2 = _interopRequireDefault(_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);
+    // Create an object with "null"-prototype to avoid truthy results on
+    // prototype properties.
+    var propertyWhiteList = _Object$create(null);
     // eslint-disable-next-line no-proto
-    defaultPropertyWhiteList['__proto__'] = false;
+    propertyWhiteList['__proto__'] = false;
+    _utils.extend(propertyWhiteList, runtimeOptions.allowedProtoProperties);
+
+    var methodWhiteList = _Object$create(null);
+    methodWhiteList['constructor'] = false;
+    methodWhiteList['__defineGetter__'] = false;
+    methodWhiteList['__defineSetter__'] = false;
+    methodWhiteList['__lookupGetter__'] = false;
+    methodWhiteList['__lookupSetter__'] = false;
+    _utils.extend(methodWhiteList, runtimeOptions.allowedProtoMethods);
 
     return {
       properties: {
-        whitelist: 
_createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, 
runtimeOptions.allowedProtoProperties),
+        whitelist: propertyWhiteList,
         defaultValue: runtimeOptions.allowProtoPropertiesByDefault
       },
       methods: {
-        whitelist: 
_createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, 
runtimeOptions.allowedProtoMethods),
+        whitelist: methodWhiteList,
         defaultValue: runtimeOptions.allowProtoMethodsByDefault
       }
     };
@@ -1333,7 +2100,7 @@ return /******/ (function(modules) { // webpackBootstrap
   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');
+      _logger2['default'].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');
     }
   }
 
@@ -1344,13 +2111,13 @@ return /******/ (function(modules) { // webpackBootstrap
   }
 
 /***/ }),
-/* 34 */
+/* 74 */
 /***/ (function(module, exports, __webpack_require__) {
 
-  module.exports = { "default": __webpack_require__(35), __esModule: true };
+  module.exports = { "default": __webpack_require__(75), __esModule: true };
 
 /***/ }),
-/* 35 */
+/* 75 */
 /***/ (function(module, exports, __webpack_require__) {
 
   var $ = __webpack_require__(9);
@@ -1359,35 +2126,7 @@ return /******/ (function(modules) { // webpackBootstrap
   };
 
 /***/ }),
-/* 36 */
-/***/ (function(module, exports, __webpack_require__) {
-
-  'use strict';
-
-  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
-   * @returns {object}
-   */
-
-  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));
-  }
-
-/***/ }),
-/* 37 */
+/* 76 */
 /***/ (function(module, exports) {
 
   // Build out our basic SafeString type
@@ -1406,14 +2145,14 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 38 */
+/* 77 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
 
-  var _Object$seal = __webpack_require__(39)['default'];
+  var _Object$seal = __webpack_require__(78)['default'];
 
-  var _Object$keys = __webpack_require__(13)['default'];
+  var _Object$keys = __webpack_require__(60)['default'];
 
   var _interopRequireWildcard = __webpack_require__(3)['default'];
 
@@ -1439,9 +2178,9 @@ return /******/ (function(modules) { // webpackBootstrap
 
   var _helpers = __webpack_require__(10);
 
-  var _internalWrapHelper = __webpack_require__(43);
+  var _internalWrapHelper = __webpack_require__(81);
 
-  var _internalProtoAccess = __webpack_require__(33);
+  var _internalProtoAccess = __webpack_require__(73);
 
   function checkRevision(compilerInfo) {
     var compilerRevision = compilerInfo && compilerInfo[0] || 1,
@@ -1488,16 +2227,14 @@ return /******/ (function(modules) { // webpackBootstrap
       }
       partial = env.VM.resolvePartial.call(this, partial, context, options);
 
-      var extendedOptions = Utils.extend({}, options, {
-        hooks: this.hooks,
-        protoAccessControl: this.protoAccessControl
-      });
+      options.hooks = this.hooks;
+      options.protoAccessControl = this.protoAccessControl;
 
-      var result = env.VM.invokePartial.call(this, partial, context, 
extendedOptions);
+      var result = env.VM.invokePartial.call(this, partial, context, options);
 
       if (result == null && env.compile) {
         options.partials[options.name] = env.compile(partial, 
templateSpec.compilerOptions, env);
-        result = options.partials[options.name](context, extendedOptions);
+        result = options.partials[options.name](context, options);
       }
       if (result != null) {
         if (options.indent) {
@@ -1546,7 +2283,7 @@ return /******/ (function(modules) { // webpackBootstrap
         for (var i = 0; i < len; i++) {
           var result = depths[i] && container.lookupProperty(depths[i], name);
           if (result != null) {
-            return depths[i][name];
+            return result;
           }
         }
       },
@@ -1628,8 +2365,9 @@ return /******/ (function(modules) { // webpackBootstrap
 
     ret._setup = function (options) {
       if (!options.partial) {
-        var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
-        wrapHelpersToPassLookupProperty(mergedHelpers, container);
+        var mergedHelpers = {};
+        addHelpers(mergedHelpers, env.helpers, container);
+        addHelpers(mergedHelpers, options.helpers, container);
         container.helpers = mergedHelpers;
 
         if (templateSpec.usePartial) {
@@ -1695,21 +2433,21 @@ return /******/ (function(modules) { // webpackBootstrap
   function resolvePartial(partial, context, options) {
     if (!partial) {
       if (options.name === '@partial-block') {
-        partial = options.data['partial-block'];
+        partial = lookupOwnProperty(options.data, 'partial-block');
       } else {
-        partial = options.partials[options.name];
+        partial = lookupOwnProperty(options.partials, options.name);
       }
     } else if (!partial.call && !options.name) {
       // This is a dynamic partial that returned a string
       options.name = partial;
-      partial = options.partials[partial];
+      partial = lookupOwnProperty(options.partials, partial);
     }
     return partial;
   }
 
   function invokePartial(partial, context, options) {
     // Use the current closure context to save the partial-block if this 
partial
-    var currentPartialBlock = options.data && options.data['partial-block'];
+    var currentPartialBlock = lookupOwnProperty(options.data, 'partial-block');
     options.partial = true;
     if (options.ids) {
       options.data.contextPath = options.ids[0] || options.data.contextPath;
@@ -1751,6 +2489,12 @@ return /******/ (function(modules) { // webpackBootstrap
     return '';
   }
 
+  function lookupOwnProperty(obj, name) {
+    if (obj && Object.prototype.hasOwnProperty.call(obj, name)) {
+      return obj[name];
+    }
+  }
+
   function initData(context, data) {
     if (!data || !('root' in data)) {
       data = data ? _base.createFrame(data) : {};
@@ -1768,9 +2512,10 @@ return /******/ (function(modules) { // webpackBootstrap
     return prog;
   }
 
-  function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
-    _Object$keys(mergedHelpers).forEach(function (helperName) {
-      var helper = mergedHelpers[helperName];
+  function addHelpers(mergedHelpers, helpers, container) {
+    if (!helpers) return;
+    _Object$keys(helpers).forEach(function (helperName) {
+      var helper = helpers[helperName];
       mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
     });
   }
@@ -1778,46 +2523,39 @@ return /******/ (function(modules) { // webpackBootstrap
   function passLookupPropertyOption(helper, container) {
     var lookupProperty = container.lookupProperty;
     return _internalWrapHelper.wrapHelper(helper, function (options) {
-      return Utils.extend({ lookupProperty: lookupProperty }, options);
+      options.lookupProperty = lookupProperty;
+      return options;
     });
   }
 
 /***/ }),
-/* 39 */
+/* 78 */
 /***/ (function(module, exports, __webpack_require__) {
 
-  module.exports = { "default": __webpack_require__(40), __esModule: true };
+  module.exports = { "default": __webpack_require__(79), __esModule: true };
 
 /***/ }),
-/* 40 */
+/* 79 */
 /***/ (function(module, exports, __webpack_require__) {
 
-  __webpack_require__(41);
+  __webpack_require__(80);
   module.exports = __webpack_require__(21).Object.seal;
 
 /***/ }),
-/* 41 */
+/* 80 */
 /***/ (function(module, exports, __webpack_require__) {
 
   // 19.1.2.17 Object.seal(O)
-  var isObject = __webpack_require__(42);
+  var isObject = __webpack_require__(40);
 
-  __webpack_require__(18)('seal', function($seal){
+  __webpack_require__(64)('seal', function($seal){
     return function seal(it){
       return $seal && isObject(it) ? $seal(it) : it;
     };
   });
 
 /***/ }),
-/* 42 */
-/***/ (function(module, exports) {
-
-  module.exports = function(it){
-    return typeof it === 'object' ? it !== null : typeof it === 'function';
-  };
-
-/***/ }),
-/* 43 */
+/* 81 */
 /***/ (function(module, exports) {
 
   'use strict';
@@ -1840,31 +2578,41 @@ return /******/ (function(modules) { // webpackBootstrap
   }
 
 /***/ }),
-/* 44 */
+/* 82 */
 /***/ (function(module, exports) {
 
-  /* WEBPACK VAR INJECTION */(function(global) {'use strict';
+  /* global globalThis */
+  'use strict';
 
   exports.__esModule = true;
 
   exports['default'] = function (Handlebars) {
     /* istanbul ignore next */
-    var root = typeof global !== 'undefined' ? global : window,
-        $Handlebars = root.Handlebars;
+    // https://mathiasbynens.be/notes/globalthis
+    (function () {
+      if (typeof globalThis === 'object') return;
+      Object.prototype.__defineGetter__('__magic__', function () {
+        return this;
+      });
+      __magic__.globalThis = __magic__; // eslint-disable-line no-undef
+      delete Object.prototype.__magic__;
+    })();
+
+    var $Handlebars = globalThis.Handlebars;
+
     /* istanbul ignore next */
     Handlebars.noConflict = function () {
-      if (root.Handlebars === Handlebars) {
-        root.Handlebars = $Handlebars;
+      if (globalThis.Handlebars === Handlebars) {
+        globalThis.Handlebars = $Handlebars;
       }
       return Handlebars;
     };
   };
 
   module.exports = exports['default'];
-  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
 
 /***/ }),
-/* 45 */
+/* 83 */
 /***/ (function(module, exports) {
 
   'use strict';
@@ -1899,11 +2647,13 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 46 */
+/* 84 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
 
+  var _Object$keys = __webpack_require__(60)['default'];
+
   var _interopRequireDefault = __webpack_require__(1)['default'];
 
   var _interopRequireWildcard = __webpack_require__(3)['default'];
@@ -1912,18 +2662,22 @@ return /******/ (function(modules) { // webpackBootstrap
   exports.parseWithoutProcessing = parseWithoutProcessing;
   exports.parse = parse;
 
-  var _parser = __webpack_require__(47);
+  var _parser = __webpack_require__(85);
 
   var _parser2 = _interopRequireDefault(_parser);
 
-  var _whitespaceControl = __webpack_require__(48);
+  var _whitespaceControl = __webpack_require__(86);
 
   var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
 
-  var _helpers = __webpack_require__(50);
+  var _helpers = __webpack_require__(88);
 
   var Helpers = _interopRequireWildcard(_helpers);
 
+  var _exception = __webpack_require__(6);
+
+  var _exception2 = _interopRequireDefault(_exception);
+
   var _utils = __webpack_require__(5);
 
   exports.parser = _parser2['default'];
@@ -1934,6 +2688,9 @@ return /******/ (function(modules) { // webpackBootstrap
   function parseWithoutProcessing(input, options) {
     // Just return if an already-compiled AST was passed in.
     if (input.type === 'Program') {
+      // When a pre-parsed AST is passed in, validate all node values to 
prevent
+      // code injection via type-confused literals.
+      validateInputAst(input);
       return input;
     }
 
@@ -1956,8 +2713,60 @@ return /******/ (function(modules) { // webpackBootstrap
     return strip.accept(ast);
   }
 
+  function validateInputAst(ast) {
+    validateAstNode(ast);
+  }
+
+  function validateAstNode(node) {
+    if (node == null) {
+      return;
+    }
+
+    if (Array.isArray(node)) {
+      node.forEach(validateAstNode);
+      return;
+    }
+
+    if (typeof node !== 'object') {
+      return;
+    }
+
+    if (node.type === 'PathExpression') {
+      if (!isValidDepth(node.depth)) {
+        throw new _exception2['default']('Invalid AST: PathExpression.depth 
must be an integer');
+      }
+      if (!Array.isArray(node.parts)) {
+        throw new _exception2['default']('Invalid AST: PathExpression.parts 
must be an array');
+      }
+      for (var i = 0; i < node.parts.length; i++) {
+        if (typeof node.parts[i] !== 'string') {
+          throw new _exception2['default']('Invalid AST: PathExpression.parts 
must only contain strings');
+        }
+      }
+    } else if (node.type === 'NumberLiteral') {
+      if (typeof node.value !== 'number' || !isFinite(node.value)) {
+        throw new _exception2['default']('Invalid AST: NumberLiteral.value 
must be a number');
+      }
+    } else if (node.type === 'BooleanLiteral') {
+      if (typeof node.value !== 'boolean') {
+        throw new _exception2['default']('Invalid AST: BooleanLiteral.value 
must be a boolean');
+      }
+    }
+
+    _Object$keys(node).forEach(function (propertyName) {
+      if (propertyName === 'loc') {
+        return;
+      }
+      validateAstNode(node[propertyName]);
+    });
+  }
+
+  function isValidDepth(depth) {
+    return typeof depth === 'number' && isFinite(depth) && Math.floor(depth) 
=== depth && depth >= 0;
+  }
+
 /***/ }),
-/* 47 */
+/* 85 */
 /***/ (function(module, exports) {
 
   // File ignored in coverage tests via setting in .istanbul.yml
@@ -2698,7 +3507,7 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports["default"];
 
 /***/ }),
-/* 48 */
+/* 86 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
@@ -2707,7 +3516,7 @@ return /******/ (function(modules) { // webpackBootstrap
 
   exports.__esModule = true;
 
-  var _visitor = __webpack_require__(49);
+  var _visitor = __webpack_require__(87);
 
   var _visitor2 = _interopRequireDefault(_visitor);
 
@@ -2922,7 +3731,7 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 49 */
+/* 87 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
@@ -3065,7 +3874,7 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 50 */
+/* 88 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
@@ -3296,14 +4105,14 @@ return /******/ (function(modules) { // webpackBootstrap
   }
 
 /***/ }),
-/* 51 */
+/* 89 */
 /***/ (function(module, exports, __webpack_require__) {
 
   /* eslint-disable new-cap */
 
   'use strict';
 
-  var _Object$create = __webpack_require__(34)['default'];
+  var _Object$create = __webpack_require__(74)['default'];
 
   var _interopRequireDefault = __webpack_require__(1)['default'];
 
@@ -3318,7 +4127,7 @@ return /******/ (function(modules) { // webpackBootstrap
 
   var _utils = __webpack_require__(5);
 
-  var _ast = __webpack_require__(45);
+  var _ast = __webpack_require__(83);
 
   var _ast2 = _interopRequireDefault(_ast);
 
@@ -3867,12 +4676,12 @@ return /******/ (function(modules) { // webpackBootstrap
   }
 
 /***/ }),
-/* 52 */
+/* 90 */
 /***/ (function(module, exports, __webpack_require__) {
 
   'use strict';
 
-  var _Object$keys = __webpack_require__(13)['default'];
+  var _Object$keys = __webpack_require__(60)['default'];
 
   var _interopRequireDefault = __webpack_require__(1)['default'];
 
@@ -3886,7 +4695,7 @@ return /******/ (function(modules) { // webpackBootstrap
 
   var _utils = __webpack_require__(5);
 
-  var _codeGen = __webpack_require__(53);
+  var _codeGen = __webpack_require__(91);
 
   var _codeGen2 = _interopRequireDefault(_codeGen);
 
@@ -4031,12 +4840,10 @@ return /******/ (function(modules) { // webpackBootstrap
         var decorators = _context.decorators;
 
         for (i = 0, l = programs.length; i < l; i++) {
-          if (programs[i]) {
-            ret[i] = programs[i];
-            if (decorators[i]) {
-              ret[i + '_d'] = decorators[i];
-              ret.useDecorators = true;
-            }
+          ret[i] = programs[i];
+          if (decorators[i]) {
+            ret[i + '_d'] = decorators[i];
+            ret.useDecorators = true;
           }
         }
 
@@ -4362,20 +5169,21 @@ return /******/ (function(modules) { // webpackBootstrap
       this.resolvePath('data', parts, 0, true, strict);
     },
 
-    resolvePath: function resolvePath(type, parts, i, falsy, strict) {
+    resolvePath: function resolvePath(type, parts, startPartIndex, falsy, 
strict) {
       // istanbul ignore next
 
       var _this2 = this;
 
       if (this.options.strict || this.options.assumeObjects) {
-        this.push(strictLookup(this.options.strict && strict, this, parts, 
type));
+        this.push(strictLookup(this.options.strict && strict, this, parts, 
startPartIndex, type));
         return;
       }
 
       var len = parts.length;
-      for (; i < len; i++) {
+
+      var _loop = function (i) {
         /* eslint-disable no-loop-func */
-        this.replaceStack(function (current) {
+        _this2.replaceStack(function (current) {
           var lookup = _this2.nameLookup(current, parts[i], type);
           // We want to ensure that zero and false are handled properly if the 
context (falsy flag)
           // needs to have the special handling for these values.
@@ -4387,6 +5195,10 @@ return /******/ (function(modules) { // webpackBootstrap
           }
         });
         /* eslint-enable no-loop-func */
+      };
+
+      for (var i = startPartIndex; i < len; i++) {
+        _loop(i);
       }
     },
 
@@ -4504,7 +5316,12 @@ return /******/ (function(modules) { // webpackBootstrap
       var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
           options = this.setupHelperArgs(name, paramSize);
 
-      this.decorators.push(['fn = ', 
this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', 
options]), ' || fn;']);
+      // Store the resolved decorator in a variable and verify it is a 
function before
+      // calling it. Without this, unregistered decorators can cause an 
unhandled TypeError
+      // (calling undefined), which crashes the process — enabling Denial of 
Service.
+      this.decorators.push(['var decorator = ', foundDecorator, ';']);
+      this.decorators.push(['if (typeof decorator !== "function") { throw new 
Error(', this.quotedString('Missing decorator: "' + name + '"'), '); }']);
+      this.decorators.push(['fn = ', this.decorators.functionCall('decorator', 
'', ['fn', 'props', 'container', options]), ' || fn;']);
     },
 
     // [invokeHelper]
@@ -4687,8 +5504,8 @@ return /******/ (function(modules) { // webpackBootstrap
         var existing = this.matchExistingProgram(child);
 
         if (existing == null) {
-          this.context.programs.push(''); // Placeholder to prevent name 
conflicts for nested children
-          var index = this.context.programs.length;
+          // Placeholder to prevent name conflicts for nested children
+          var index = this.context.programs.push('') - 1;
           child.index = index;
           child.name = 'program' + index;
           this.context.programs[index] = compiler.compile(child, options, 
this.context, !this.precompile);
@@ -5008,20 +5825,19 @@ return /******/ (function(modules) { // webpackBootstrap
     return !JavaScriptCompiler.RESERVED_WORDS[name] && 
/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
   };
 
-  function strictLookup(requireTerminal, compiler, parts, type) {
+  function strictLookup(requireTerminal, compiler, parts, startPartIndex, 
type) {
     var stack = compiler.popStack(),
-        i = 0,
         len = parts.length;
     if (requireTerminal) {
       len--;
     }
 
-    for (; i < len; i++) {
+    for (var i = startPartIndex; i < len; i++) {
       stack = compiler.nameLookup(stack, parts[i], type);
     }
 
     if (requireTerminal) {
-      return [compiler.aliasable('container.strict'), '(', stack, ', ', 
compiler.quotedString(parts[i]), ', ', 
JSON.stringify(compiler.source.currentLocation), ' )'];
+      return [compiler.aliasable('container.strict'), '(', stack, ', ', 
compiler.quotedString(parts[len]), ', ', 
JSON.stringify(compiler.source.currentLocation), ' )'];
     } else {
       return stack;
     }
@@ -5031,13 +5847,13 @@ return /******/ (function(modules) { // webpackBootstrap
   module.exports = exports['default'];
 
 /***/ }),
-/* 53 */
+/* 91 */
 /***/ (function(module, exports, __webpack_require__) {
 
-  /* global define */
+  /* global define, require */
   'use strict';
 
-  var _Object$keys = __webpack_require__(13)['default'];
+  var _Object$keys = __webpack_require__(60)['default'];
 
   exports.__esModule = true;
 
@@ -5048,7 +5864,7 @@ return /******/ (function(modules) { // webpackBootstrap
   try {
     /* istanbul ignore next */
     if (false) {
-      // We don't support this in AMD environments. For these environments, we 
asusme that
+      // We don't support this in AMD environments. For these environments, we 
assume that
       // they are running on the browser and thus have no need for the 
source-map library.
       var SourceMap = require('source-map');
       SourceNode = SourceMap.SourceNode;

Reply via email to