PluginProbe
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance / 4.7.0
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance v4.7.0
4.7.0 4.6.1 4.6.0 4.5.5 4.5.4 4.5.3 4.5.2 3.2.20 3.2.21 3.2.22 3.2.3 3.2.5 3.2.6 3.2.7 3.2.9 3.3.0 3.3.1 3.3.2 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.7.0 3.7.1 All 111 releases
← All changes | js/handlebars/handlebars.js +1021 -205 3.2.5 → 4.7.0 View file →
@@ -1,8 +1,8 @@
1 1 /**!
2 2
3 3 @license
4 - handlebars v4.7.7
4 + handlebars v4.7.9
5 5
6 6 Copyright (C) 2011-2019 by Yehuda Katz
7 7
8 8 Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -91,25 +91,25 @@
91 91 var _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime);
92 92
93 93 // Compiler imports
94 94
95 - var _handlebarsCompilerAst = __webpack_require__(45);
95 + var _handlebarsCompilerAst = __webpack_require__(83);
96 96
97 97 var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
98 98
99 - var _handlebarsCompilerBase = __webpack_require__(46);
99 + var _handlebarsCompilerBase = __webpack_require__(84);
100 100
101 - var _handlebarsCompilerCompiler = __webpack_require__(51);
101 + var _handlebarsCompilerCompiler = __webpack_require__(89);
102 102
103 - var _handlebarsCompilerJavascriptCompiler = __webpack_require__(52);
103 + var _handlebarsCompilerJavascriptCompiler = __webpack_require__(90);
104 104
105 105 var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
106 106
107 - var _handlebarsCompilerVisitor = __webpack_require__(49);
107 + var _handlebarsCompilerVisitor = __webpack_require__(87);
108 108
109 109 var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);
110 110
111 - var _handlebarsNoConflict = __webpack_require__(44);
111 + var _handlebarsNoConflict = __webpack_require__(82);
112 112
113 113 var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
114 114
115 115 var _create = _handlebarsRuntime2['default'].create;
@@ -177,9 +177,9 @@
177 177
178 178 // Each of these augment the Handlebars object. No need to setup here.
179 179 // (This is done to easily share code between commonjs and browse envs)
180 180
181 - var _handlebarsSafeString = __webpack_require__(37);
181 + var _handlebarsSafeString = __webpack_require__(76);
182 182
183 183 var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
184 184
185 185 var _handlebarsException = __webpack_require__(6);
@@ -189,13 +189,13 @@
189 189 var _handlebarsUtils = __webpack_require__(5);
190 190
191 191 var Utils = _interopRequireWildcard(_handlebarsUtils);
192 192
193 - var _handlebarsRuntime = __webpack_require__(38);
193 + var _handlebarsRuntime = __webpack_require__(77);
194 194
195 195 var runtime = _interopRequireWildcard(_handlebarsRuntime);
196 196
197 - var _handlebarsNoConflict = __webpack_require__(44);
197 + var _handlebarsNoConflict = __webpack_require__(82);
198 198
199 199 var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
200 200
201 201 // For compatibility and usage outside of module systems, make the Handlebars object a namespace
@@ -269,17 +269,17 @@
269 269 var _exception2 = _interopRequireDefault(_exception);
270 270
271 271 var _helpers = __webpack_require__(10);
272 272
273 - var _decorators = __webpack_require__(30);
273 + var _decorators = __webpack_require__(70);
274 274
275 - var _logger = __webpack_require__(32);
275 + var _logger = __webpack_require__(72);
276 276
277 277 var _logger2 = _interopRequireDefault(_logger);
278 278
279 - var _internalProtoAccess = __webpack_require__(33);
279 + var _internalProtoAccess = __webpack_require__(73);
280 280
281 - var VERSION = '4.7.7';
281 + var VERSION = '4.7.9';
282 282 exports.VERSION = VERSION;
283 283 var COMPILER_REVISION = 8;
284 284 exports.COMPILER_REVISION = COMPILER_REVISION;
285 285 var LAST_COMPATIBLE_COMPILER_REVISION = 7;
@@ -620,25 +620,25 @@
620 620 var _helpersEach = __webpack_require__(12);
621 621
622 622 var _helpersEach2 = _interopRequireDefault(_helpersEach);
623 623
624 - var _helpersHelperMissing = __webpack_require__(25);
624 + var _helpersHelperMissing = __webpack_require__(65);
625 625
626 626 var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);
627 627
628 - var _helpersIf = __webpack_require__(26);
628 + var _helpersIf = __webpack_require__(66);
629 629
630 630 var _helpersIf2 = _interopRequireDefault(_helpersIf);
631 631
632 - var _helpersLog = __webpack_require__(27);
632 + var _helpersLog = __webpack_require__(67);
633 633
634 634 var _helpersLog2 = _interopRequireDefault(_helpersLog);
635 635
636 - var _helpersLookup = __webpack_require__(28);
636 + var _helpersLookup = __webpack_require__(68);
637 637
638 638 var _helpersLookup2 = _interopRequireDefault(_helpersLookup);
639 639
640 - var _helpersWith = __webpack_require__(29);
640 + var _helpersWith = __webpack_require__(69);
641 641
642 642 var _helpersWith2 = _interopRequireDefault(_helpersWith);
643 643
644 644 function registerDefaultHelpers(instance) {
@@ -654,9 +654,10 @@
654 654 function moveHelperToHooks(instance, helperName, keepHelper) {
655 655 if (instance.helpers[helperName]) {
656 656 instance.hooks[helperName] = instance.helpers[helperName];
657 657 if (!keepHelper) {
658 - delete instance.helpers[helperName];
658 + // Using delete is slow
659 + instance.helpers[helperName] = undefined;
659 660 }
660 661 }
661 662 }
662 663
@@ -706,12 +707,18 @@
706 707 /***/ }),
707 708 /* 12 */
708 709 /***/ (function(module, exports, __webpack_require__) {
709 710
710 - /* WEBPACK VAR INJECTION */(function(global) {'use strict';
711 + 'use strict';
711 712
712 - var _Object$keys = __webpack_require__(13)['default'];
713 + var _Symbol = __webpack_require__(13)['default'];
713 714
715 + var _Symbol$iterator = __webpack_require__(43)['default'];
716 +
717 + var _getIterator = __webpack_require__(55)['default'];
718 +
719 + var _Object$keys = __webpack_require__(60)['default'];
720 +
714 721 var _interopRequireDefault = __webpack_require__(1)['default'];
715 722
716 723 exports.__esModule = true;
717 724
@@ -770,11 +777,11 @@
770 777 if (i in context) {
771 778 execIteration(i, i, i === context.length - 1);
772 779 }
773 780 }
774 - } else if (global.Symbol && context[global.Symbol.iterator]) {
781 + } else if (typeof _Symbol === 'function' && context[_Symbol$iterator]) {
775 782 var newContext = [];
776 - var iterator = context[global.Symbol.iterator]();
783 + var iterator = _getIterator(context);
777 784 for (var it = iterator.next(); !it.done; it = iterator.next()) {
778 785 newContext.push(it.value);
779 786 }
780 787 context = newContext;
@@ -810,9 +817,8 @@
810 817 });
811 818 };
812 819
813 820 module.exports = exports['default'];
814 - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
815 821
816 822 /***/ }),
817 823 /* 13 */
818 824 /***/ (function(module, exports, __webpack_require__) {
@@ -823,41 +829,259 @@
823 829 /* 14 */
824 830 /***/ (function(module, exports, __webpack_require__) {
825 831
826 832 __webpack_require__(15);
827 - module.exports = __webpack_require__(21).Object.keys;
833 + __webpack_require__(42);
834 + module.exports = __webpack_require__(21).Symbol;
828 835
829 836 /***/ }),
830 837 /* 15 */
831 838 /***/ (function(module, exports, __webpack_require__) {
832 839
833 - // 19.1.2.14 Object.keys(O)
834 - var toObject = __webpack_require__(16);
840 + 'use strict';
841 + // ECMAScript 6 symbols shim
842 + var $ = __webpack_require__(9)
843 + , global = __webpack_require__(16)
844 + , has = __webpack_require__(17)
845 + , DESCRIPTORS = __webpack_require__(18)
846 + , $export = __webpack_require__(20)
847 + , redefine = __webpack_require__(24)
848 + , $fails = __webpack_require__(19)
849 + , shared = __webpack_require__(27)
850 + , setToStringTag = __webpack_require__(28)
851 + , uid = __webpack_require__(30)
852 + , wks = __webpack_require__(29)
853 + , keyOf = __webpack_require__(31)
854 + , $names = __webpack_require__(36)
855 + , enumKeys = __webpack_require__(37)
856 + , isArray = __webpack_require__(38)
857 + , anObject = __webpack_require__(39)
858 + , toIObject = __webpack_require__(32)
859 + , createDesc = __webpack_require__(26)
860 + , getDesc = $.getDesc
861 + , setDesc = $.setDesc
862 + , _create = $.create
863 + , getNames = $names.get
864 + , $Symbol = global.Symbol
865 + , $JSON = global.JSON
866 + , _stringify = $JSON && $JSON.stringify
867 + , setter = false
868 + , HIDDEN = wks('_hidden')
869 + , isEnum = $.isEnum
870 + , SymbolRegistry = shared('symbol-registry')
871 + , AllSymbols = shared('symbols')
872 + , useNative = typeof $Symbol == 'function'
873 + , ObjectProto = Object.prototype;
835 874
836 - __webpack_require__(18)('keys', function($keys){
837 - return function keys(it){
838 - return $keys(toObject(it));
875 + // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
876 + var setSymbolDesc = DESCRIPTORS && $fails(function(){
877 + return _create(setDesc({}, 'a', {
878 + get: function(){ return setDesc(this, 'a', {value: 7}).a; }
879 + })).a != 7;
880 + }) ? function(it, key, D){
881 + var protoDesc = getDesc(ObjectProto, key);
882 + if(protoDesc)delete ObjectProto[key];
883 + setDesc(it, key, D);
884 + if(protoDesc && it !== ObjectProto)setDesc(ObjectProto, key, protoDesc);
885 + } : setDesc;
886 +
887 + var wrap = function(tag){
888 + var sym = AllSymbols[tag] = _create($Symbol.prototype);
889 + sym._k = tag;
890 + DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
891 + configurable: true,
892 + set: function(value){
893 + if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
894 + setSymbolDesc(this, tag, createDesc(1, value));
895 + }
896 + });
897 + return sym;
898 + };
899 +
900 + var isSymbol = function(it){
901 + return typeof it == 'symbol';
902 + };
903 +
904 + var $defineProperty = function defineProperty(it, key, D){
905 + if(D && has(AllSymbols, key)){
906 + if(!D.enumerable){
907 + if(!has(it, HIDDEN))setDesc(it, HIDDEN, createDesc(1, {}));
908 + it[HIDDEN][key] = true;
909 + } else {
910 + if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
911 + D = _create(D, {enumerable: createDesc(0, false)});
912 + } return setSymbolDesc(it, key, D);
913 + } return setDesc(it, key, D);
914 + };
915 + var $defineProperties = function defineProperties(it, P){
916 + anObject(it);
917 + var keys = enumKeys(P = toIObject(P))
918 + , i = 0
919 + , l = keys.length
920 + , key;
921 + while(l > i)$defineProperty(it, key = keys[i++], P[key]);
922 + return it;
923 + };
924 + var $create = function create(it, P){
925 + return P === undefined ? _create(it) : $defineProperties(_create(it), P);
926 + };
927 + var $propertyIsEnumerable = function propertyIsEnumerable(key){
928 + var E = isEnum.call(this, key);
929 + return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key]
930 + ? E : true;
931 + };
932 + var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
933 + var D = getDesc(it = toIObject(it), key);
934 + if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
935 + return D;
936 + };
937 + var $getOwnPropertyNames = function getOwnPropertyNames(it){
938 + var names = getNames(toIObject(it))
939 + , result = []
940 + , i = 0
941 + , key;
942 + while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN)result.push(key);
943 + return result;
944 + };
945 + var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
946 + var names = getNames(toIObject(it))
947 + , result = []
948 + , i = 0
949 + , key;
950 + while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
951 + return result;
952 + };
953 + var $stringify = function stringify(it){
954 + if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
955 + var args = [it]
956 + , i = 1
957 + , $$ = arguments
958 + , replacer, $replacer;
959 + while($$.length > i)args.push($$[i++]);
960 + replacer = args[1];
961 + if(typeof replacer == 'function')$replacer = replacer;
962 + if($replacer || !isArray(replacer))replacer = function(key, value){
963 + if($replacer)value = $replacer.call(this, key, value);
964 + if(!isSymbol(value))return value;
839 965 };
966 + args[1] = replacer;
967 + return _stringify.apply($JSON, args);
968 + };
969 + var buggyJSON = $fails(function(){
970 + var S = $Symbol();
971 + // MS Edge converts symbol values to JSON as {}
972 + // WebKit converts symbol values to JSON as null
973 + // V8 throws on boxed symbols
974 + return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
840 975 });
841 976
977 + // 19.4.1.1 Symbol([description])
978 + if(!useNative){
979 + $Symbol = function Symbol(){
980 + if(isSymbol(this))throw TypeError('Symbol is not a constructor');
981 + return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
982 + };
983 + redefine($Symbol.prototype, 'toString', function toString(){
984 + return this._k;
985 + });
986 +
987 + isSymbol = function(it){
988 + return it instanceof $Symbol;
989 + };
990 +
991 + $.create = $create;
992 + $.isEnum = $propertyIsEnumerable;
993 + $.getDesc = $getOwnPropertyDescriptor;
994 + $.setDesc = $defineProperty;
995 + $.setDescs = $defineProperties;
996 + $.getNames = $names.get = $getOwnPropertyNames;
997 + $.getSymbols = $getOwnPropertySymbols;
998 +
999 + if(DESCRIPTORS && !__webpack_require__(41)){
1000 + redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
1001 + }
1002 + }
1003 +
1004 + var symbolStatics = {
1005 + // 19.4.2.1 Symbol.for(key)
1006 + 'for': function(key){
1007 + return has(SymbolRegistry, key += '')
1008 + ? SymbolRegistry[key]
1009 + : SymbolRegistry[key] = $Symbol(key);
1010 + },
1011 + // 19.4.2.5 Symbol.keyFor(sym)
1012 + keyFor: function keyFor(key){
1013 + return keyOf(SymbolRegistry, key);
1014 + },
1015 + useSetter: function(){ setter = true; },
1016 + useSimple: function(){ setter = false; }
1017 + };
1018 + // 19.4.2.2 Symbol.hasInstance
1019 + // 19.4.2.3 Symbol.isConcatSpreadable
1020 + // 19.4.2.4 Symbol.iterator
1021 + // 19.4.2.6 Symbol.match
1022 + // 19.4.2.8 Symbol.replace
1023 + // 19.4.2.9 Symbol.search
1024 + // 19.4.2.10 Symbol.species
1025 + // 19.4.2.11 Symbol.split
1026 + // 19.4.2.12 Symbol.toPrimitive
1027 + // 19.4.2.13 Symbol.toStringTag
1028 + // 19.4.2.14 Symbol.unscopables
1029 + $.each.call((
1030 + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +
1031 + 'species,split,toPrimitive,toStringTag,unscopables'
1032 + ).split(','), function(it){
1033 + var sym = wks(it);
1034 + symbolStatics[it] = useNative ? sym : wrap(sym);
1035 + });
1036 +
1037 + setter = true;
1038 +
1039 + $export($export.G + $export.W, {Symbol: $Symbol});
1040 +
1041 + $export($export.S, 'Symbol', symbolStatics);
1042 +
1043 + $export($export.S + $export.F * !useNative, 'Object', {
1044 + // 19.1.2.2 Object.create(O [, Properties])
1045 + create: $create,
1046 + // 19.1.2.4 Object.defineProperty(O, P, Attributes)
1047 + defineProperty: $defineProperty,
1048 + // 19.1.2.3 Object.defineProperties(O, Properties)
1049 + defineProperties: $defineProperties,
1050 + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
1051 + getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
1052 + // 19.1.2.7 Object.getOwnPropertyNames(O)
1053 + getOwnPropertyNames: $getOwnPropertyNames,
1054 + // 19.1.2.8 Object.getOwnPropertySymbols(O)
1055 + getOwnPropertySymbols: $getOwnPropertySymbols
1056 + });
1057 +
1058 + // 24.3.2 JSON.stringify(value [, replacer [, space]])
1059 + $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {stringify: $stringify});
1060 +
1061 + // 19.4.3.5 Symbol.prototype[@@toStringTag]
1062 + setToStringTag($Symbol, 'Symbol');
1063 + // 20.2.1.9 Math[@@toStringTag]
1064 + setToStringTag(Math, 'Math', true);
1065 + // 24.3.3 JSON[@@toStringTag]
1066 + setToStringTag(global.JSON, 'JSON', true);
1067 +
842 1068 /***/ }),
843 1069 /* 16 */
844 -/***/ (function(module, exports, __webpack_require__) {
1070 +/***/ (function(module, exports) {
845 1071
846 - // 7.1.13 ToObject(argument)
847 - var defined = __webpack_require__(17);
848 - module.exports = function(it){
849 - return Object(defined(it));
850 - };
1072 + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
1073 + var global = module.exports = typeof window != 'undefined' && window.Math == Math
1074 + ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
1075 + if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
851 1076
852 1077 /***/ }),
853 1078 /* 17 */
854 1079 /***/ (function(module, exports) {
855 1080
856 - // 7.2.1 RequireObjectCoercible(argument)
857 - module.exports = function(it){
858 - if(it == undefined)throw TypeError("Can't call method on " + it);
859 - return it;
1081 + var hasOwnProperty = {}.hasOwnProperty;
1082 + module.exports = function(it, key){
1083 + return hasOwnProperty.call(it, key);
860 1084 };
861 1085
862 1086 /***/ }),
863 1087 /* 18 */
@@ -862,24 +1086,30 @@
862 1086 /***/ }),
863 1087 /* 18 */
864 1088 /***/ (function(module, exports, __webpack_require__) {
865 1089
866 - // most Object methods by ES6 should accept primitives
867 - var $export = __webpack_require__(19)
868 - , core = __webpack_require__(21)
869 - , fails = __webpack_require__(24);
870 - module.exports = function(KEY, exec){
871 - var fn = (core.Object || {})[KEY] || Object[KEY]
872 - , exp = {};
873 - exp[KEY] = exec(fn);
874 - $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
1090 + // Thank's IE8 for his funny defineProperty
1091 + module.exports = !__webpack_require__(19)(function(){
1092 + return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
1093 + });
1094 +
1095 +/***/ }),
1096 +/* 19 */
1097 +/***/ (function(module, exports) {
1098 +
1099 + module.exports = function(exec){
1100 + try {
1101 + return !!exec();
1102 + } catch(e){
1103 + return true;
1104 + }
875 1105 };
876 1106
877 1107 /***/ }),
878 -/* 19 */
1108 +/* 20 */
879 1109 /***/ (function(module, exports, __webpack_require__) {
880 1110
881 - var global = __webpack_require__(20)
1111 + var global = __webpack_require__(16)
882 1112 , core = __webpack_require__(21)
883 1113 , ctx = __webpack_require__(22)
884 1114 , PROTOTYPE = 'prototype';
885 1115
@@ -925,17 +1155,8 @@
925 1155 $export.W = 32; // wrap
926 1156 module.exports = $export;
927 1157
928 1158 /***/ }),
929 -/* 20 */
930 -/***/ (function(module, exports) {
931 -
932 - // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
933 - var global = module.exports = typeof window != 'undefined' && window.Math == Math
934 - ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
935 - if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
936 -
937 -/***/ }),
938 1159 /* 21 */
939 1160 /***/ (function(module, exports) {
940 1161
941 1162 var core = module.exports = {version: '1.2.6'};
@@ -976,24 +1197,565 @@
976 1197 };
977 1198
978 1199 /***/ }),
979 1200 /* 24 */
1201 +/***/ (function(module, exports, __webpack_require__) {
1202 +
1203 + module.exports = __webpack_require__(25);
1204 +
1205 +/***/ }),
1206 +/* 25 */
1207 +/***/ (function(module, exports, __webpack_require__) {
1208 +
1209 + var $ = __webpack_require__(9)
1210 + , createDesc = __webpack_require__(26);
1211 + module.exports = __webpack_require__(18) ? function(object, key, value){
1212 + return $.setDesc(object, key, createDesc(1, value));
1213 + } : function(object, key, value){
1214 + object[key] = value;
1215 + return object;
1216 + };
1217 +
1218 +/***/ }),
1219 +/* 26 */
980 1220 /***/ (function(module, exports) {
981 1221
982 - module.exports = function(exec){
1222 + module.exports = function(bitmap, value){
1223 + return {
1224 + enumerable : !(bitmap & 1),
1225 + configurable: !(bitmap & 2),
1226 + writable : !(bitmap & 4),
1227 + value : value
1228 + };
1229 + };
1230 +
1231 +/***/ }),
1232 +/* 27 */
1233 +/***/ (function(module, exports, __webpack_require__) {
1234 +
1235 + var global = __webpack_require__(16)
1236 + , SHARED = '__core-js_shared__'
1237 + , store = global[SHARED] || (global[SHARED] = {});
1238 + module.exports = function(key){
1239 + return store[key] || (store[key] = {});
1240 + };
1241 +
1242 +/***/ }),
1243 +/* 28 */
1244 +/***/ (function(module, exports, __webpack_require__) {
1245 +
1246 + var def = __webpack_require__(9).setDesc
1247 + , has = __webpack_require__(17)
1248 + , TAG = __webpack_require__(29)('toStringTag');
1249 +
1250 + module.exports = function(it, tag, stat){
1251 + if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
1252 + };
1253 +
1254 +/***/ }),
1255 +/* 29 */
1256 +/***/ (function(module, exports, __webpack_require__) {
1257 +
1258 + var store = __webpack_require__(27)('wks')
1259 + , uid = __webpack_require__(30)
1260 + , Symbol = __webpack_require__(16).Symbol;
1261 + module.exports = function(name){
1262 + return store[name] || (store[name] =
1263 + Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));
1264 + };
1265 +
1266 +/***/ }),
1267 +/* 30 */
1268 +/***/ (function(module, exports) {
1269 +
1270 + var id = 0
1271 + , px = Math.random();
1272 + module.exports = function(key){
1273 + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
1274 + };
1275 +
1276 +/***/ }),
1277 +/* 31 */
1278 +/***/ (function(module, exports, __webpack_require__) {
1279 +
1280 + var $ = __webpack_require__(9)
1281 + , toIObject = __webpack_require__(32);
1282 + module.exports = function(object, el){
1283 + var O = toIObject(object)
1284 + , keys = $.getKeys(O)
1285 + , length = keys.length
1286 + , index = 0
1287 + , key;
1288 + while(length > index)if(O[key = keys[index++]] === el)return key;
1289 + };
1290 +
1291 +/***/ }),
1292 +/* 32 */
1293 +/***/ (function(module, exports, __webpack_require__) {
1294 +
1295 + // to indexed object, toObject with fallback for non-array-like ES3 strings
1296 + var IObject = __webpack_require__(33)
1297 + , defined = __webpack_require__(35);
1298 + module.exports = function(it){
1299 + return IObject(defined(it));
1300 + };
1301 +
1302 +/***/ }),
1303 +/* 33 */
1304 +/***/ (function(module, exports, __webpack_require__) {
1305 +
1306 + // fallback for non-array-like ES3 and non-enumerable old V8 strings
1307 + var cof = __webpack_require__(34);
1308 + module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
1309 + return cof(it) == 'String' ? it.split('') : Object(it);
1310 + };
1311 +
1312 +/***/ }),
1313 +/* 34 */
1314 +/***/ (function(module, exports) {
1315 +
1316 + var toString = {}.toString;
1317 +
1318 + module.exports = function(it){
1319 + return toString.call(it).slice(8, -1);
1320 + };
1321 +
1322 +/***/ }),
1323 +/* 35 */
1324 +/***/ (function(module, exports) {
1325 +
1326 + // 7.2.1 RequireObjectCoercible(argument)
1327 + module.exports = function(it){
1328 + if(it == undefined)throw TypeError("Can't call method on " + it);
1329 + return it;
1330 + };
1331 +
1332 +/***/ }),
1333 +/* 36 */
1334 +/***/ (function(module, exports, __webpack_require__) {
1335 +
1336 + // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
1337 + var toIObject = __webpack_require__(32)
1338 + , getNames = __webpack_require__(9).getNames
1339 + , toString = {}.toString;
1340 +
1341 + var windowNames = typeof window == 'object' && Object.getOwnPropertyNames
1342 + ? Object.getOwnPropertyNames(window) : [];
1343 +
1344 + var getWindowNames = function(it){
983 1345 try {
984 - return !!exec();
1346 + return getNames(it);
985 1347 } catch(e){
986 - return true;
1348 + return windowNames.slice();
987 1349 }
988 1350 };
989 1351
1352 + module.exports.get = function getOwnPropertyNames(it){
1353 + if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it);
1354 + return getNames(toIObject(it));
1355 + };
1356 +
990 1357 /***/ }),
991 -/* 25 */
1358 +/* 37 */
992 1359 /***/ (function(module, exports, __webpack_require__) {
993 1360
1361 + // all enumerable object keys, includes symbols
1362 + var $ = __webpack_require__(9);
1363 + module.exports = function(it){
1364 + var keys = $.getKeys(it)
1365 + , getSymbols = $.getSymbols;
1366 + if(getSymbols){
1367 + var symbols = getSymbols(it)
1368 + , isEnum = $.isEnum
1369 + , i = 0
1370 + , key;
1371 + while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))keys.push(key);
1372 + }
1373 + return keys;
1374 + };
1375 +
1376 +/***/ }),
1377 +/* 38 */
1378 +/***/ (function(module, exports, __webpack_require__) {
1379 +
1380 + // 7.2.2 IsArray(argument)
1381 + var cof = __webpack_require__(34);
1382 + module.exports = Array.isArray || function(arg){
1383 + return cof(arg) == 'Array';
1384 + };
1385 +
1386 +/***/ }),
1387 +/* 39 */
1388 +/***/ (function(module, exports, __webpack_require__) {
1389 +
1390 + var isObject = __webpack_require__(40);
1391 + module.exports = function(it){
1392 + if(!isObject(it))throw TypeError(it + ' is not an object!');
1393 + return it;
1394 + };
1395 +
1396 +/***/ }),
1397 +/* 40 */
1398 +/***/ (function(module, exports) {
1399 +
1400 + module.exports = function(it){
1401 + return typeof it === 'object' ? it !== null : typeof it === 'function';
1402 + };
1403 +
1404 +/***/ }),
1405 +/* 41 */
1406 +/***/ (function(module, exports) {
1407 +
1408 + module.exports = true;
1409 +
1410 +/***/ }),
1411 +/* 42 */
1412 +/***/ (function(module, exports) {
1413 +
1414 +
1415 +
1416 +/***/ }),
1417 +/* 43 */
1418 +/***/ (function(module, exports, __webpack_require__) {
1419 +
1420 + module.exports = { "default": __webpack_require__(44), __esModule: true };
1421 +
1422 +/***/ }),
1423 +/* 44 */
1424 +/***/ (function(module, exports, __webpack_require__) {
1425 +
1426 + __webpack_require__(45);
1427 + __webpack_require__(51);
1428 + module.exports = __webpack_require__(29)('iterator');
1429 +
1430 +/***/ }),
1431 +/* 45 */
1432 +/***/ (function(module, exports, __webpack_require__) {
1433 +
994 1434 'use strict';
1435 + var $at = __webpack_require__(46)(true);
995 1436
1437 + // 21.1.3.27 String.prototype[@@iterator]()
1438 + __webpack_require__(48)(String, 'String', function(iterated){
1439 + this._t = String(iterated); // target
1440 + this._i = 0; // next index
1441 + // 21.1.5.2.1 %StringIteratorPrototype%.next()
1442 + }, function(){
1443 + var O = this._t
1444 + , index = this._i
1445 + , point;
1446 + if(index >= O.length)return {value: undefined, done: true};
1447 + point = $at(O, index);
1448 + this._i += point.length;
1449 + return {value: point, done: false};
1450 + });
1451 +
1452 +/***/ }),
1453 +/* 46 */
1454 +/***/ (function(module, exports, __webpack_require__) {
1455 +
1456 + var toInteger = __webpack_require__(47)
1457 + , defined = __webpack_require__(35);
1458 + // true -> String#at
1459 + // false -> String#codePointAt
1460 + module.exports = function(TO_STRING){
1461 + return function(that, pos){
1462 + var s = String(defined(that))
1463 + , i = toInteger(pos)
1464 + , l = s.length
1465 + , a, b;
1466 + if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
1467 + a = s.charCodeAt(i);
1468 + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
1469 + ? TO_STRING ? s.charAt(i) : a
1470 + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
1471 + };
1472 + };
1473 +
1474 +/***/ }),
1475 +/* 47 */
1476 +/***/ (function(module, exports) {
1477 +
1478 + // 7.1.4 ToInteger
1479 + var ceil = Math.ceil
1480 + , floor = Math.floor;
1481 + module.exports = function(it){
1482 + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
1483 + };
1484 +
1485 +/***/ }),
1486 +/* 48 */
1487 +/***/ (function(module, exports, __webpack_require__) {
1488 +
1489 + 'use strict';
1490 + var LIBRARY = __webpack_require__(41)
1491 + , $export = __webpack_require__(20)
1492 + , redefine = __webpack_require__(24)
1493 + , hide = __webpack_require__(25)
1494 + , has = __webpack_require__(17)
1495 + , Iterators = __webpack_require__(49)
1496 + , $iterCreate = __webpack_require__(50)
1497 + , setToStringTag = __webpack_require__(28)
1498 + , getProto = __webpack_require__(9).getProto
1499 + , ITERATOR = __webpack_require__(29)('iterator')
1500 + , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
1501 + , FF_ITERATOR = '@@iterator'
1502 + , KEYS = 'keys'
1503 + , VALUES = 'values';
1504 +
1505 + var returnThis = function(){ return this; };
1506 +
1507 + module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
1508 + $iterCreate(Constructor, NAME, next);
1509 + var getMethod = function(kind){
1510 + if(!BUGGY && kind in proto)return proto[kind];
1511 + switch(kind){
1512 + case KEYS: return function keys(){ return new Constructor(this, kind); };
1513 + case VALUES: return function values(){ return new Constructor(this, kind); };
1514 + } return function entries(){ return new Constructor(this, kind); };
1515 + };
1516 + var TAG = NAME + ' Iterator'
1517 + , DEF_VALUES = DEFAULT == VALUES
1518 + , VALUES_BUG = false
1519 + , proto = Base.prototype
1520 + , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
1521 + , $default = $native || getMethod(DEFAULT)
1522 + , methods, key;
1523 + // Fix native
1524 + if($native){
1525 + var IteratorPrototype = getProto($default.call(new Base));
1526 + // Set @@toStringTag to native iterators
1527 + setToStringTag(IteratorPrototype, TAG, true);
1528 + // FF fix
1529 + if(!LIBRARY && has(proto, FF_ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
1530 + // fix Array#{values, @@iterator}.name in V8 / FF
1531 + if(DEF_VALUES && $native.name !== VALUES){
1532 + VALUES_BUG = true;
1533 + $default = function values(){ return $native.call(this); };
1534 + }
1535 + }
1536 + // Define iterator
1537 + if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
1538 + hide(proto, ITERATOR, $default);
1539 + }
1540 + // Plug for library
1541 + Iterators[NAME] = $default;
1542 + Iterators[TAG] = returnThis;
1543 + if(DEFAULT){
1544 + methods = {
1545 + values: DEF_VALUES ? $default : getMethod(VALUES),
1546 + keys: IS_SET ? $default : getMethod(KEYS),
1547 + entries: !DEF_VALUES ? $default : getMethod('entries')
1548 + };
1549 + if(FORCED)for(key in methods){
1550 + if(!(key in proto))redefine(proto, key, methods[key]);
1551 + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
1552 + }
1553 + return methods;
1554 + };
1555 +
1556 +/***/ }),
1557 +/* 49 */
1558 +/***/ (function(module, exports) {
1559 +
1560 + module.exports = {};
1561 +
1562 +/***/ }),
1563 +/* 50 */
1564 +/***/ (function(module, exports, __webpack_require__) {
1565 +
1566 + 'use strict';
1567 + var $ = __webpack_require__(9)
1568 + , descriptor = __webpack_require__(26)
1569 + , setToStringTag = __webpack_require__(28)
1570 + , IteratorPrototype = {};
1571 +
1572 + // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
1573 + __webpack_require__(25)(IteratorPrototype, __webpack_require__(29)('iterator'), function(){ return this; });
1574 +
1575 + module.exports = function(Constructor, NAME, next){
1576 + Constructor.prototype = $.create(IteratorPrototype, {next: descriptor(1, next)});
1577 + setToStringTag(Constructor, NAME + ' Iterator');
1578 + };
1579 +
1580 +/***/ }),
1581 +/* 51 */
1582 +/***/ (function(module, exports, __webpack_require__) {
1583 +
1584 + __webpack_require__(52);
1585 + var Iterators = __webpack_require__(49);
1586 + Iterators.NodeList = Iterators.HTMLCollection = Iterators.Array;
1587 +
1588 +/***/ }),
1589 +/* 52 */
1590 +/***/ (function(module, exports, __webpack_require__) {
1591 +
1592 + 'use strict';
1593 + var addToUnscopables = __webpack_require__(53)
1594 + , step = __webpack_require__(54)
1595 + , Iterators = __webpack_require__(49)
1596 + , toIObject = __webpack_require__(32);
1597 +
1598 + // 22.1.3.4 Array.prototype.entries()
1599 + // 22.1.3.13 Array.prototype.keys()
1600 + // 22.1.3.29 Array.prototype.values()
1601 + // 22.1.3.30 Array.prototype[@@iterator]()
1602 + module.exports = __webpack_require__(48)(Array, 'Array', function(iterated, kind){
1603 + this._t = toIObject(iterated); // target
1604 + this._i = 0; // next index
1605 + this._k = kind; // kind
1606 + // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
1607 + }, function(){
1608 + var O = this._t
1609 + , kind = this._k
1610 + , index = this._i++;
1611 + if(!O || index >= O.length){
1612 + this._t = undefined;
1613 + return step(1);
1614 + }
1615 + if(kind == 'keys' )return step(0, index);
1616 + if(kind == 'values')return step(0, O[index]);
1617 + return step(0, [index, O[index]]);
1618 + }, 'values');
1619 +
1620 + // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
1621 + Iterators.Arguments = Iterators.Array;
1622 +
1623 + addToUnscopables('keys');
1624 + addToUnscopables('values');
1625 + addToUnscopables('entries');
1626 +
1627 +/***/ }),
1628 +/* 53 */
1629 +/***/ (function(module, exports) {
1630 +
1631 + module.exports = function(){ /* empty */ };
1632 +
1633 +/***/ }),
1634 +/* 54 */
1635 +/***/ (function(module, exports) {
1636 +
1637 + module.exports = function(done, value){
1638 + return {value: value, done: !!done};
1639 + };
1640 +
1641 +/***/ }),
1642 +/* 55 */
1643 +/***/ (function(module, exports, __webpack_require__) {
1644 +
1645 + module.exports = { "default": __webpack_require__(56), __esModule: true };
1646 +
1647 +/***/ }),
1648 +/* 56 */
1649 +/***/ (function(module, exports, __webpack_require__) {
1650 +
1651 + __webpack_require__(51);
1652 + __webpack_require__(45);
1653 + module.exports = __webpack_require__(57);
1654 +
1655 +/***/ }),
1656 +/* 57 */
1657 +/***/ (function(module, exports, __webpack_require__) {
1658 +
1659 + var anObject = __webpack_require__(39)
1660 + , get = __webpack_require__(58);
1661 + module.exports = __webpack_require__(21).getIterator = function(it){
1662 + var iterFn = get(it);
1663 + if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');
1664 + return anObject(iterFn.call(it));
1665 + };
1666 +
1667 +/***/ }),
1668 +/* 58 */
1669 +/***/ (function(module, exports, __webpack_require__) {
1670 +
1671 + var classof = __webpack_require__(59)
1672 + , ITERATOR = __webpack_require__(29)('iterator')
1673 + , Iterators = __webpack_require__(49);
1674 + module.exports = __webpack_require__(21).getIteratorMethod = function(it){
1675 + if(it != undefined)return it[ITERATOR]
1676 + || it['@@iterator']
1677 + || Iterators[classof(it)];
1678 + };
1679 +
1680 +/***/ }),
1681 +/* 59 */
1682 +/***/ (function(module, exports, __webpack_require__) {
1683 +
1684 + // getting tag from 19.1.3.6 Object.prototype.toString()
1685 + var cof = __webpack_require__(34)
1686 + , TAG = __webpack_require__(29)('toStringTag')
1687 + // ES3 wrong here
1688 + , ARG = cof(function(){ return arguments; }()) == 'Arguments';
1689 +
1690 + module.exports = function(it){
1691 + var O, T, B;
1692 + return it === undefined ? 'Undefined' : it === null ? 'Null'
1693 + // @@toStringTag case
1694 + : typeof (T = (O = Object(it))[TAG]) == 'string' ? T
1695 + // builtinTag case
1696 + : ARG ? cof(O)
1697 + // ES3 arguments fallback
1698 + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
1699 + };
1700 +
1701 +/***/ }),
1702 +/* 60 */
1703 +/***/ (function(module, exports, __webpack_require__) {
1704 +
1705 + module.exports = { "default": __webpack_require__(61), __esModule: true };
1706 +
1707 +/***/ }),
1708 +/* 61 */
1709 +/***/ (function(module, exports, __webpack_require__) {
1710 +
1711 + __webpack_require__(62);
1712 + module.exports = __webpack_require__(21).Object.keys;
1713 +
1714 +/***/ }),
1715 +/* 62 */
1716 +/***/ (function(module, exports, __webpack_require__) {
1717 +
1718 + // 19.1.2.14 Object.keys(O)
1719 + var toObject = __webpack_require__(63);
1720 +
1721 + __webpack_require__(64)('keys', function($keys){
1722 + return function keys(it){
1723 + return $keys(toObject(it));
1724 + };
1725 + });
1726 +
1727 +/***/ }),
1728 +/* 63 */
1729 +/***/ (function(module, exports, __webpack_require__) {
1730 +
1731 + // 7.1.13 ToObject(argument)
1732 + var defined = __webpack_require__(35);
1733 + module.exports = function(it){
1734 + return Object(defined(it));
1735 + };
1736 +
1737 +/***/ }),
1738 +/* 64 */
1739 +/***/ (function(module, exports, __webpack_require__) {
1740 +
1741 + // most Object methods by ES6 should accept primitives
1742 + var $export = __webpack_require__(20)
1743 + , core = __webpack_require__(21)
1744 + , fails = __webpack_require__(19);
1745 + module.exports = function(KEY, exec){
1746 + var fn = (core.Object || {})[KEY] || Object[KEY]
1747 + , exp = {};
1748 + exp[KEY] = exec(fn);
1749 + $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
1750 + };
1751 +
1752 +/***/ }),
1753 +/* 65 */
1754 +/***/ (function(module, exports, __webpack_require__) {
1755 +
1756 + 'use strict';
1757 +
996 1758 var _interopRequireDefault = __webpack_require__(1)['default'];
997 1759
998 1760 exports.__esModule = true;
999 1761
@@ -1015,9 +1777,9 @@
1015 1777
1016 1778 module.exports = exports['default'];
1017 1779
1018 1780 /***/ }),
1019 -/* 26 */
1781 +/* 66 */
1020 1782 /***/ (function(module, exports, __webpack_require__) {
1021 1783
1022 1784 'use strict';
1023 1785
@@ -1064,9 +1826,9 @@
1064 1826
1065 1827 module.exports = exports['default'];
1066 1828
1067 1829 /***/ }),
1068 -/* 27 */
1830 +/* 67 */
1069 1831 /***/ (function(module, exports) {
1070 1832
1071 1833 'use strict';
1072 1834
@@ -1094,9 +1856,9 @@
1094 1856
1095 1857 module.exports = exports['default'];
1096 1858
1097 1859 /***/ }),
1098 -/* 28 */
1860 +/* 68 */
1099 1861 /***/ (function(module, exports) {
1100 1862
1101 1863 'use strict';
1102 1864
@@ -1114,9 +1876,9 @@
1114 1876
1115 1877 module.exports = exports['default'];
1116 1878
1117 1879 /***/ }),
1118 -/* 29 */
1880 +/* 69 */
1119 1881 /***/ (function(module, exports, __webpack_require__) {
1120 1882
1121 1883 'use strict';
1122 1884
@@ -1160,9 +1922,9 @@
1160 1922
1161 1923 module.exports = exports['default'];
1162 1924
1163 1925 /***/ }),
1164 -/* 30 */
1926 +/* 70 */
1165 1927 /***/ (function(module, exports, __webpack_require__) {
1166 1928
1167 1929 'use strict';
1168 1930
@@ -1170,9 +1932,9 @@
1170 1932
1171 1933 exports.__esModule = true;
1172 1934 exports.registerDefaultDecorators = registerDefaultDecorators;
1173 1935
1174 - var _decoratorsInline = __webpack_require__(31);
1936 + var _decoratorsInline = __webpack_require__(71);
1175 1937
1176 1938 var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);
1177 1939
1178 1940 function registerDefaultDecorators(instance) {
@@ -1179,9 +1941,9 @@
1179 1941 _decoratorsInline2['default'](instance);
1180 1942 }
1181 1943
1182 1944 /***/ }),
1183 -/* 31 */
1945 +/* 71 */
1184 1946 /***/ (function(module, exports, __webpack_require__) {
1185 1947
1186 1948 'use strict';
1187 1949
@@ -1212,9 +1974,9 @@
1212 1974
1213 1975 module.exports = exports['default'];
1214 1976
1215 1977 /***/ }),
1216 -/* 32 */
1978 +/* 72 */
1217 1979 /***/ (function(module, exports, __webpack_require__) {
1218 1980
1219 1981 'use strict';
1220 1982
@@ -1263,18 +2025,18 @@
1263 2025 exports['default'] = logger;
1264 2026 module.exports = exports['default'];
1265 2027
1266 2028 /***/ }),
1267 -/* 33 */
2029 +/* 73 */
1268 2030 /***/ (function(module, exports, __webpack_require__) {
1269 2031
1270 2032 'use strict';
1271 2033
1272 - var _Object$create = __webpack_require__(34)['default'];
2034 + var _Object$create = __webpack_require__(74)['default'];
1273 2035
1274 - var _Object$keys = __webpack_require__(13)['default'];
2036 + var _Object$keys = __webpack_require__(60)['default'];
1275 2037
1276 - var _interopRequireWildcard = __webpack_require__(3)['default'];
2038 + var _interopRequireDefault = __webpack_require__(1)['default'];
1277 2039
1278 2040 exports.__esModule = true;
1279 2041 exports.createProtoAccessControl = createProtoAccessControl;
1280 2042 exports.resultIsAllowed = resultIsAllowed;
@@ -1279,34 +2041,39 @@
1279 2041 exports.createProtoAccessControl = createProtoAccessControl;
1280 2042 exports.resultIsAllowed = resultIsAllowed;
1281 2043 exports.resetLoggedProperties = resetLoggedProperties;
1282 2044
1283 - var _createNewLookupObject = __webpack_require__(36);
2045 + var _utils = __webpack_require__(5);
1284 2046
1285 - var _logger = __webpack_require__(32);
2047 + var _logger = __webpack_require__(72);
1286 2048
1287 - var logger = _interopRequireWildcard(_logger);
2049 + var _logger2 = _interopRequireDefault(_logger);
1288 2050
1289 2051 var loggedProperties = _Object$create(null);
1290 2052
1291 2053 function createProtoAccessControl(runtimeOptions) {
1292 - var defaultMethodWhiteList = _Object$create(null);
1293 - defaultMethodWhiteList['constructor'] = false;
1294 - defaultMethodWhiteList['__defineGetter__'] = false;
1295 - defaultMethodWhiteList['__defineSetter__'] = false;
1296 - defaultMethodWhiteList['__lookupGetter__'] = false;
2054 + // Create an object with "null"-prototype to avoid truthy results on
2055 + // prototype properties.
2056 + var propertyWhiteList = _Object$create(null);
2057 + // eslint-disable-next-line no-proto
2058 + propertyWhiteList['__proto__'] = false;
2059 + _utils.extend(propertyWhiteList, runtimeOptions.allowedProtoProperties);
1297 2060
1298 - var defaultPropertyWhiteList = _Object$create(null);
1299 - // eslint-disable-next-line no-proto
1300 - defaultPropertyWhiteList['__proto__'] = false;
2061 + var methodWhiteList = _Object$create(null);
2062 + methodWhiteList['constructor'] = false;
2063 + methodWhiteList['__defineGetter__'] = false;
2064 + methodWhiteList['__defineSetter__'] = false;
2065 + methodWhiteList['__lookupGetter__'] = false;
2066 + methodWhiteList['__lookupSetter__'] = false;
2067 + _utils.extend(methodWhiteList, runtimeOptions.allowedProtoMethods);
1301 2068
1302 2069 return {
1303 2070 properties: {
1304 - whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
2071 + whitelist: propertyWhiteList,
1305 2072 defaultValue: runtimeOptions.allowProtoPropertiesByDefault
1306 2073 },
1307 2074 methods: {
1308 - whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
2075 + whitelist: methodWhiteList,
1309 2076 defaultValue: runtimeOptions.allowProtoMethodsByDefault
1310 2077 }
1311 2078 };
1312 2079 }
@@ -1332,9 +2099,9 @@
1332 2099
1333 2100 function logUnexpecedPropertyAccessOnce(propertyName) {
1334 2101 if (loggedProperties[propertyName] !== true) {
1335 2102 loggedProperties[propertyName] = true;
1336 - 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');
2103 + _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');
1337 2104 }
1338 2105 }
1339 2106
1340 2107 function resetLoggedProperties() {
@@ -1343,15 +2110,15 @@
1343 2110 });
1344 2111 }
1345 2112
1346 2113 /***/ }),
1347 -/* 34 */
2114 +/* 74 */
1348 2115 /***/ (function(module, exports, __webpack_require__) {
1349 2116
1350 - module.exports = { "default": __webpack_require__(35), __esModule: true };
2117 + module.exports = { "default": __webpack_require__(75), __esModule: true };
1351 2118
1352 2119 /***/ }),
1353 -/* 35 */
2120 +/* 75 */
1354 2121 /***/ (function(module, exports, __webpack_require__) {
1355 2122
1356 2123 var $ = __webpack_require__(9);
1357 2124 module.exports = function create(P, D){
@@ -1358,37 +2125,9 @@
1358 2125 return $.create(P, D);
1359 2126 };
1360 2127
1361 2128 /***/ }),
1362 -/* 36 */
1363 -/***/ (function(module, exports, __webpack_require__) {
1364 -
1365 - 'use strict';
1366 -
1367 - var _Object$create = __webpack_require__(34)['default'];
1368 -
1369 - exports.__esModule = true;
1370 - exports.createNewLookupObject = createNewLookupObject;
1371 -
1372 - var _utils = __webpack_require__(5);
1373 -
1374 - /**
1375 - * Create a new object with "null"-prototype to avoid truthy results on prototype properties.
1376 - * The resulting object can be used with "object[property]" to check if a property exists
1377 - * @param {...object} sources a varargs parameter of source objects that will be merged
1378 - * @returns {object}
1379 - */
1380 -
1381 - function createNewLookupObject() {
1382 - for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
1383 - sources[_key] = arguments[_key];
1384 - }
1385 -
1386 - return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
1387 - }
1388 -
1389 -/***/ }),
1390 -/* 37 */
2129 +/* 76 */
1391 2130 /***/ (function(module, exports) {
1392 2131
1393 2132 // Build out our basic SafeString type
1394 2133 'use strict';
@@ -1405,16 +2144,16 @@
1405 2144 exports['default'] = SafeString;
1406 2145 module.exports = exports['default'];
1407 2146
1408 2147 /***/ }),
1409 -/* 38 */
2148 +/* 77 */
1410 2149 /***/ (function(module, exports, __webpack_require__) {
1411 2150
1412 2151 'use strict';
1413 2152
1414 - var _Object$seal = __webpack_require__(39)['default'];
2153 + var _Object$seal = __webpack_require__(78)['default'];
1415 2154
1416 - var _Object$keys = __webpack_require__(13)['default'];
2155 + var _Object$keys = __webpack_require__(60)['default'];
1417 2156
1418 2157 var _interopRequireWildcard = __webpack_require__(3)['default'];
1419 2158
1420 2159 var _interopRequireDefault = __webpack_require__(1)['default'];
@@ -1438,11 +2177,11 @@
1438 2177 var _base = __webpack_require__(4);
1439 2178
1440 2179 var _helpers = __webpack_require__(10);
1441 2180
1442 - var _internalWrapHelper = __webpack_require__(43);
2181 + var _internalWrapHelper = __webpack_require__(81);
1443 2182
1444 - var _internalProtoAccess = __webpack_require__(33);
2183 + var _internalProtoAccess = __webpack_require__(73);
1445 2184
1446 2185 function checkRevision(compilerInfo) {
1447 2186 var compilerRevision = compilerInfo && compilerInfo[0] || 1,
1448 2187 currentRevision = _base.COMPILER_REVISION;
@@ -1487,18 +2226,16 @@
1487 2226 }
1488 2227 }
1489 2228 partial = env.VM.resolvePartial.call(this, partial, context, options);
1490 2229
1491 - var extendedOptions = Utils.extend({}, options, {
1492 - hooks: this.hooks,
1493 - protoAccessControl: this.protoAccessControl
1494 - });
2230 + options.hooks = this.hooks;
2231 + options.protoAccessControl = this.protoAccessControl;
1495 2232
1496 - var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
2233 + var result = env.VM.invokePartial.call(this, partial, context, options);
1497 2234
1498 2235 if (result == null && env.compile) {
1499 2236 options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
1500 - result = options.partials[options.name](context, extendedOptions);
2237 + result = options.partials[options.name](context, options);
1501 2238 }
1502 2239 if (result != null) {
1503 2240 if (options.indent) {
1504 2241 var lines = result.split('\n');
@@ -1545,9 +2282,9 @@
1545 2282 var len = depths.length;
1546 2283 for (var i = 0; i < len; i++) {
1547 2284 var result = depths[i] && container.lookupProperty(depths[i], name);
1548 2285 if (result != null) {
1549 - return depths[i][name];
2286 + return result;
1550 2287 }
1551 2288 }
1552 2289 },
1553 2290 lambda: function lambda(current, context) {
@@ -1627,10 +2364,11 @@
1627 2364 ret.isTop = true;
1628 2365
1629 2366 ret._setup = function (options) {
1630 2367 if (!options.partial) {
1631 - var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
1632 - wrapHelpersToPassLookupProperty(mergedHelpers, container);
2368 + var mergedHelpers = {};
2369 + addHelpers(mergedHelpers, env.helpers, container);
2370 + addHelpers(mergedHelpers, options.helpers, container);
1633 2371 container.helpers = mergedHelpers;
1634 2372
1635 2373 if (templateSpec.usePartial) {
1636 2374 // Use mergeIfNeeded here to prevent compiling global partials multiple times
@@ -1694,16 +2432,16 @@
1694 2432
1695 2433 function resolvePartial(partial, context, options) {
1696 2434 if (!partial) {
1697 2435 if (options.name === '@partial-block') {
1698 - partial = options.data['partial-block'];
2436 + partial = lookupOwnProperty(options.data, 'partial-block');
1699 2437 } else {
1700 - partial = options.partials[options.name];
2438 + partial = lookupOwnProperty(options.partials, options.name);
1701 2439 }
1702 2440 } else if (!partial.call && !options.name) {
1703 2441 // This is a dynamic partial that returned a string
1704 2442 options.name = partial;
1705 - partial = options.partials[partial];
2443 + partial = lookupOwnProperty(options.partials, partial);
1706 2444 }
1707 2445 return partial;
1708 2446 }
1709 2447
@@ -1708,9 +2446,9 @@
1708 2446 }
1709 2447
1710 2448 function invokePartial(partial, context, options) {
1711 2449 // Use the current closure context to save the partial-block if this partial
1712 - var currentPartialBlock = options.data && options.data['partial-block'];
2450 + var currentPartialBlock = lookupOwnProperty(options.data, 'partial-block');
1713 2451 options.partial = true;
1714 2452 if (options.ids) {
1715 2453 options.data.contextPath = options.ids[0] || options.data.contextPath;
1716 2454 }
@@ -1750,8 +2488,14 @@
1750 2488 function noop() {
1751 2489 return '';
1752 2490 }
1753 2491
2492 + function lookupOwnProperty(obj, name) {
2493 + if (obj && Object.prototype.hasOwnProperty.call(obj, name)) {
2494 + return obj[name];
2495 + }
2496 + }
2497 +
1754 2498 function initData(context, data) {
1755 2499 if (!data || !('root' in data)) {
1756 2500 data = data ? _base.createFrame(data) : {};
1757 2501 data.root = context;
@@ -1767,11 +2511,12 @@
1767 2511 }
1768 2512 return prog;
1769 2513 }
1770 2514
1771 - function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
1772 - _Object$keys(mergedHelpers).forEach(function (helperName) {
1773 - var helper = mergedHelpers[helperName];
2515 + function addHelpers(mergedHelpers, helpers, container) {
2516 + if (!helpers) return;
2517 + _Object$keys(helpers).forEach(function (helperName) {
2518 + var helper = helpers[helperName];
1774 2519 mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
1775 2520 });
1776 2521 }
1777 2522
@@ -1777,33 +2522,34 @@
1777 2522
1778 2523 function passLookupPropertyOption(helper, container) {
1779 2524 var lookupProperty = container.lookupProperty;
1780 2525 return _internalWrapHelper.wrapHelper(helper, function (options) {
1781 - return Utils.extend({ lookupProperty: lookupProperty }, options);
2526 + options.lookupProperty = lookupProperty;
2527 + return options;
1782 2528 });
1783 2529 }
1784 2530
1785 2531 /***/ }),
1786 -/* 39 */
2532 +/* 78 */
1787 2533 /***/ (function(module, exports, __webpack_require__) {
1788 2534
1789 - module.exports = { "default": __webpack_require__(40), __esModule: true };
2535 + module.exports = { "default": __webpack_require__(79), __esModule: true };
1790 2536
1791 2537 /***/ }),
1792 -/* 40 */
2538 +/* 79 */
1793 2539 /***/ (function(module, exports, __webpack_require__) {
1794 2540
1795 - __webpack_require__(41);
2541 + __webpack_require__(80);
1796 2542 module.exports = __webpack_require__(21).Object.seal;
1797 2543
1798 2544 /***/ }),
1799 -/* 41 */
2545 +/* 80 */
1800 2546 /***/ (function(module, exports, __webpack_require__) {
1801 2547
1802 2548 // 19.1.2.17 Object.seal(O)
1803 - var isObject = __webpack_require__(42);
2549 + var isObject = __webpack_require__(40);
1804 2550
1805 - __webpack_require__(18)('seal', function($seal){
2551 + __webpack_require__(64)('seal', function($seal){
1806 2552 return function seal(it){
1807 2553 return $seal && isObject(it) ? $seal(it) : it;
1808 2554 };
1809 2555 });
@@ -1808,19 +2554,11 @@
1808 2554 };
1809 2555 });
1810 2556
1811 2557 /***/ }),
1812 -/* 42 */
2558 +/* 81 */
1813 2559 /***/ (function(module, exports) {
1814 2560
1815 - module.exports = function(it){
1816 - return typeof it === 'object' ? it !== null : typeof it === 'function';
1817 - };
1818 -
1819 -/***/ }),
1820 -/* 43 */
1821 -/***/ (function(module, exports) {
1822 -
1823 2561 'use strict';
1824 2562
1825 2563 exports.__esModule = true;
1826 2564 exports.wrapHelper = wrapHelper;
@@ -1839,23 +2577,34 @@
1839 2577 return wrapper;
1840 2578 }
1841 2579
1842 2580 /***/ }),
1843 -/* 44 */
2581 +/* 82 */
1844 2582 /***/ (function(module, exports) {
1845 2583
1846 - /* WEBPACK VAR INJECTION */(function(global) {'use strict';
2584 + /* global globalThis */
2585 + 'use strict';
1847 2586
1848 2587 exports.__esModule = true;
1849 2588
1850 2589 exports['default'] = function (Handlebars) {
1851 2590 /* istanbul ignore next */
1852 - var root = typeof global !== 'undefined' ? global : window,
1853 - $Handlebars = root.Handlebars;
2591 + // https://mathiasbynens.be/notes/globalthis
2592 + (function () {
2593 + if (typeof globalThis === 'object') return;
2594 + Object.prototype.__defineGetter__('__magic__', function () {
2595 + return this;
2596 + });
2597 + __magic__.globalThis = __magic__; // eslint-disable-line no-undef
2598 + delete Object.prototype.__magic__;
2599 + })();
2600 +
2601 + var $Handlebars = globalThis.Handlebars;
2602 +
1854 2603 /* istanbul ignore next */
1855 2604 Handlebars.noConflict = function () {
1856 - if (root.Handlebars === Handlebars) {
1857 - root.Handlebars = $Handlebars;
2605 + if (globalThis.Handlebars === Handlebars) {
2606 + globalThis.Handlebars = $Handlebars;
1858 2607 }
1859 2608 return Handlebars;
1860 2609 };
1861 2610 };
@@ -1860,12 +2609,11 @@
1860 2609 };
1861 2610 };
1862 2611
1863 2612 module.exports = exports['default'];
1864 - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1865 2613
1866 2614 /***/ }),
1867 -/* 45 */
2615 +/* 83 */
1868 2616 /***/ (function(module, exports) {
1869 2617
1870 2618 'use strict';
1871 2619
@@ -1898,13 +2646,15 @@
1898 2646 exports['default'] = AST;
1899 2647 module.exports = exports['default'];
1900 2648
1901 2649 /***/ }),
1902 -/* 46 */
2650 +/* 84 */
1903 2651 /***/ (function(module, exports, __webpack_require__) {
1904 2652
1905 2653 'use strict';
1906 2654
2655 + var _Object$keys = __webpack_require__(60)['default'];
2656 +
1907 2657 var _interopRequireDefault = __webpack_require__(1)['default'];
1908 2658
1909 2659 var _interopRequireWildcard = __webpack_require__(3)['default'];
1910 2660
@@ -1911,20 +2661,24 @@
1911 2661 exports.__esModule = true;
1912 2662 exports.parseWithoutProcessing = parseWithoutProcessing;
1913 2663 exports.parse = parse;
1914 2664
1915 - var _parser = __webpack_require__(47);
2665 + var _parser = __webpack_require__(85);
1916 2666
1917 2667 var _parser2 = _interopRequireDefault(_parser);
1918 2668
1919 - var _whitespaceControl = __webpack_require__(48);
2669 + var _whitespaceControl = __webpack_require__(86);
1920 2670
1921 2671 var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
1922 2672
1923 - var _helpers = __webpack_require__(50);
2673 + var _helpers = __webpack_require__(88);
1924 2674
1925 2675 var Helpers = _interopRequireWildcard(_helpers);
1926 2676
2677 + var _exception = __webpack_require__(6);
2678 +
2679 + var _exception2 = _interopRequireDefault(_exception);
2680 +
1927 2681 var _utils = __webpack_require__(5);
1928 2682
1929 2683 exports.parser = _parser2['default'];
1930 2684
@@ -1933,8 +2687,11 @@
1933 2687
1934 2688 function parseWithoutProcessing(input, options) {
1935 2689 // Just return if an already-compiled AST was passed in.
1936 2690 if (input.type === 'Program') {
2691 + // When a pre-parsed AST is passed in, validate all node values to prevent
2692 + // code injection via type-confused literals.
2693 + validateInputAst(input);
1937 2694 return input;
1938 2695 }
1939 2696
1940 2697 _parser2['default'].yy = yy;
@@ -1955,10 +2712,62 @@
1955 2712
1956 2713 return strip.accept(ast);
1957 2714 }
1958 2715
2716 + function validateInputAst(ast) {
2717 + validateAstNode(ast);
2718 + }
2719 +
2720 + function validateAstNode(node) {
2721 + if (node == null) {
2722 + return;
2723 + }
2724 +
2725 + if (Array.isArray(node)) {
2726 + node.forEach(validateAstNode);
2727 + return;
2728 + }
2729 +
2730 + if (typeof node !== 'object') {
2731 + return;
2732 + }
2733 +
2734 + if (node.type === 'PathExpression') {
2735 + if (!isValidDepth(node.depth)) {
2736 + throw new _exception2['default']('Invalid AST: PathExpression.depth must be an integer');
2737 + }
2738 + if (!Array.isArray(node.parts)) {
2739 + throw new _exception2['default']('Invalid AST: PathExpression.parts must be an array');
2740 + }
2741 + for (var i = 0; i < node.parts.length; i++) {
2742 + if (typeof node.parts[i] !== 'string') {
2743 + throw new _exception2['default']('Invalid AST: PathExpression.parts must only contain strings');
2744 + }
2745 + }
2746 + } else if (node.type === 'NumberLiteral') {
2747 + if (typeof node.value !== 'number' || !isFinite(node.value)) {
2748 + throw new _exception2['default']('Invalid AST: NumberLiteral.value must be a number');
2749 + }
2750 + } else if (node.type === 'BooleanLiteral') {
2751 + if (typeof node.value !== 'boolean') {
2752 + throw new _exception2['default']('Invalid AST: BooleanLiteral.value must be a boolean');
2753 + }
2754 + }
2755 +
2756 + _Object$keys(node).forEach(function (propertyName) {
2757 + if (propertyName === 'loc') {
2758 + return;
2759 + }
2760 + validateAstNode(node[propertyName]);
2761 + });
2762 + }
2763 +
2764 + function isValidDepth(depth) {
2765 + return typeof depth === 'number' && isFinite(depth) && Math.floor(depth) === depth && depth >= 0;
2766 + }
2767 +
1959 2768 /***/ }),
1960 -/* 47 */
2769 +/* 85 */
1961 2770 /***/ (function(module, exports) {
1962 2771
1963 2772 // File ignored in coverage tests via setting in .istanbul.yml
1964 2773 /* Jison generated parser */
@@ -2697,9 +3506,9 @@
2697 3506 })();exports["default"] = handlebars;
2698 3507 module.exports = exports["default"];
2699 3508
2700 3509 /***/ }),
2701 -/* 48 */
3510 +/* 86 */
2702 3511 /***/ (function(module, exports, __webpack_require__) {
2703 3512
2704 3513 'use strict';
2705 3514
@@ -2706,9 +3515,9 @@
2706 3515 var _interopRequireDefault = __webpack_require__(1)['default'];
2707 3516
2708 3517 exports.__esModule = true;
2709 3518
2710 - var _visitor = __webpack_require__(49);
3519 + var _visitor = __webpack_require__(87);
2711 3520
2712 3521 var _visitor2 = _interopRequireDefault(_visitor);
2713 3522
2714 3523 function WhitespaceControl() {
@@ -2921,9 +3730,9 @@
2921 3730 exports['default'] = WhitespaceControl;
2922 3731 module.exports = exports['default'];
2923 3732
2924 3733 /***/ }),
2925 -/* 49 */
3734 +/* 87 */
2926 3735 /***/ (function(module, exports, __webpack_require__) {
2927 3736
2928 3737 'use strict';
2929 3738
@@ -3064,9 +3873,9 @@
3064 3873 exports['default'] = Visitor;
3065 3874 module.exports = exports['default'];
3066 3875
3067 3876 /***/ }),
3068 -/* 50 */
3877 +/* 88 */
3069 3878 /***/ (function(module, exports, __webpack_require__) {
3070 3879
3071 3880 'use strict';
3072 3881
@@ -3295,9 +4104,9 @@
3295 4104 };
3296 4105 }
3297 4106
3298 4107 /***/ }),
3299 -/* 51 */
4108 +/* 89 */
3300 4109 /***/ (function(module, exports, __webpack_require__) {
3301 4110
3302 4111 /* eslint-disable new-cap */
3303 4112
@@ -3302,9 +4111,9 @@
3302 4111 /* eslint-disable new-cap */
3303 4112
3304 4113 'use strict';
3305 4114
3306 - var _Object$create = __webpack_require__(34)['default'];
4115 + var _Object$create = __webpack_require__(74)['default'];
3307 4116
3308 4117 var _interopRequireDefault = __webpack_require__(1)['default'];
3309 4118
3310 4119 exports.__esModule = true;
@@ -3317,9 +4126,9 @@
3317 4126 var _exception2 = _interopRequireDefault(_exception);
3318 4127
3319 4128 var _utils = __webpack_require__(5);
3320 4129
3321 - var _ast = __webpack_require__(45);
4130 + var _ast = __webpack_require__(83);
3322 4131
3323 4132 var _ast2 = _interopRequireDefault(_ast);
3324 4133
3325 4134 var slice = [].slice;
@@ -3866,14 +4675,14 @@
3866 4675 }
3867 4676 }
3868 4677
3869 4678 /***/ }),
3870 -/* 52 */
4679 +/* 90 */
3871 4680 /***/ (function(module, exports, __webpack_require__) {
3872 4681
3873 4682 'use strict';
3874 4683
3875 - var _Object$keys = __webpack_require__(13)['default'];
4684 + var _Object$keys = __webpack_require__(60)['default'];
3876 4685
3877 4686 var _interopRequireDefault = __webpack_require__(1)['default'];
3878 4687
3879 4688 exports.__esModule = true;
@@ -3885,9 +4694,9 @@
3885 4694 var _exception2 = _interopRequireDefault(_exception);
3886 4695
3887 4696 var _utils = __webpack_require__(5);
3888 4697
3889 - var _codeGen = __webpack_require__(53);
4698 + var _codeGen = __webpack_require__(91);
3890 4699
3891 4700 var _codeGen2 = _interopRequireDefault(_codeGen);
3892 4701
3893 4702 function Literal(value) {
@@ -4030,14 +4839,12 @@
4030 4839 var programs = _context.programs;
4031 4840 var decorators = _context.decorators;
4032 4841
4033 4842 for (i = 0, l = programs.length; i < l; i++) {
4034 - if (programs[i]) {
4035 - ret[i] = programs[i];
4036 - if (decorators[i]) {
4037 - ret[i + '_d'] = decorators[i];
4038 - ret.useDecorators = true;
4039 - }
4843 + ret[i] = programs[i];
4844 + if (decorators[i]) {
4845 + ret[i + '_d'] = decorators[i];
4846 + ret.useDecorators = true;
4040 4847 }
4041 4848 }
4042 4849
4043 4850 if (this.environment.usePartial) {
@@ -4361,22 +5168,23 @@
4361 5168
4362 5169 this.resolvePath('data', parts, 0, true, strict);
4363 5170 },
4364 5171
4365 - resolvePath: function resolvePath(type, parts, i, falsy, strict) {
5172 + resolvePath: function resolvePath(type, parts, startPartIndex, falsy, strict) {
4366 5173 // istanbul ignore next
4367 5174
4368 5175 var _this2 = this;
4369 5176
4370 5177 if (this.options.strict || this.options.assumeObjects) {
4371 - this.push(strictLookup(this.options.strict && strict, this, parts, type));
5178 + this.push(strictLookup(this.options.strict && strict, this, parts, startPartIndex, type));
4372 5179 return;
4373 5180 }
4374 5181
4375 5182 var len = parts.length;
4376 - for (; i < len; i++) {
5183 +
5184 + var _loop = function (i) {
4377 5185 /* eslint-disable no-loop-func */
4378 - this.replaceStack(function (current) {
5186 + _this2.replaceStack(function (current) {
4379 5187 var lookup = _this2.nameLookup(current, parts[i], type);
4380 5188 // We want to ensure that zero and false are handled properly if the context (falsy flag)
4381 5189 // needs to have the special handling for these values.
4382 5190 if (!falsy) {
@@ -4386,8 +5194,12 @@
4386 5194 return [' && ', lookup];
4387 5195 }
4388 5196 });
4389 5197 /* eslint-enable no-loop-func */
5198 + };
5199 +
5200 + for (var i = startPartIndex; i < len; i++) {
5201 + _loop(i);
4390 5202 }
4391 5203 },
4392 5204
4393 5205 // [resolvePossibleLambda]
@@ -4503,9 +5315,14 @@
4503 5315 registerDecorator: function registerDecorator(paramSize, name) {
4504 5316 var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
4505 5317 options = this.setupHelperArgs(name, paramSize);
4506 5318
4507 - this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']);
5319 + // Store the resolved decorator in a variable and verify it is a function before
5320 + // calling it. Without this, unregistered decorators can cause an unhandled TypeError
5321 + // (calling undefined), which crashes the process — enabling Denial of Service.
5322 + this.decorators.push(['var decorator = ', foundDecorator, ';']);
5323 + this.decorators.push(['if (typeof decorator !== "function") { throw new Error(', this.quotedString('Missing decorator: "' + name + '"'), '); }']);
5324 + this.decorators.push(['fn = ', this.decorators.functionCall('decorator', '', ['fn', 'props', 'container', options]), ' || fn;']);
4508 5325 },
4509 5326
4510 5327 // [invokeHelper]
4511 5328 //
@@ -4686,10 +5503,10 @@
4686 5503
4687 5504 var existing = this.matchExistingProgram(child);
4688 5505
4689 5506 if (existing == null) {
4690 - this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children
4691 - var index = this.context.programs.length;
5507 + // Placeholder to prevent name conflicts for nested children
5508 + var index = this.context.programs.push('') - 1;
4692 5509 child.index = index;
4693 5510 child.name = 'program' + index;
4694 5511 this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
4695 5512 this.context.decorators[index] = compiler.decorators;
@@ -5007,22 +5824,21 @@
5007 5824 JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
5008 5825 return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
5009 5826 };
5010 5827
5011 - function strictLookup(requireTerminal, compiler, parts, type) {
5828 + function strictLookup(requireTerminal, compiler, parts, startPartIndex, type) {
5012 5829 var stack = compiler.popStack(),
5013 - i = 0,
5014 5830 len = parts.length;
5015 5831 if (requireTerminal) {
5016 5832 len--;
5017 5833 }
5018 5834
5019 - for (; i < len; i++) {
5835 + for (var i = startPartIndex; i < len; i++) {
5020 5836 stack = compiler.nameLookup(stack, parts[i], type);
5021 5837 }
5022 5838
5023 5839 if (requireTerminal) {
5024 - return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ', ', JSON.stringify(compiler.source.currentLocation), ' )'];
5840 + return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[len]), ', ', JSON.stringify(compiler.source.currentLocation), ' )'];
5025 5841 } else {
5026 5842 return stack;
5027 5843 }
5028 5844 }
@@ -5030,15 +5846,15 @@
5030 5846 exports['default'] = JavaScriptCompiler;
5031 5847 module.exports = exports['default'];
5032 5848
5033 5849 /***/ }),
5034 -/* 53 */
5850 +/* 91 */
5035 5851 /***/ (function(module, exports, __webpack_require__) {
5036 5852
5037 - /* global define */
5853 + /* global define, require */
5038 5854 'use strict';
5039 5855
5040 - var _Object$keys = __webpack_require__(13)['default'];
5856 + var _Object$keys = __webpack_require__(60)['default'];
5041 5857
5042 5858 exports.__esModule = true;
5043 5859
5044 5860 var _utils = __webpack_require__(5);
@@ -5047,9 +5863,9 @@
5047 5863
5048 5864 try {
5049 5865 /* istanbul ignore next */
5050 5866 if (false) {
5051 - // We don't support this in AMD environments. For these environments, we asusme that
5867 + // We don't support this in AMD environments. For these environments, we assume that
5052 5868 // they are running on the browser and thus have no need for the source-map library.
5053 5869 var SourceMap = require('source-map');
5054 5870 SourceNode = SourceMap.SourceNode;
5055 5871 }