serverless-webpack-layers
Advanced tools
+1
-0
@@ -18,2 +18,3 @@ import { Layer, TransformedLayerResources } from './types'; | ||
| clean: boolean; | ||
| minify: boolean; | ||
| backupFileType: 'js' | 'ts' | 'cjs'; | ||
@@ -20,0 +21,0 @@ configPath: string; |
+14
-8
@@ -45,2 +45,3 @@ "use strict"; | ||
| clean: true, | ||
| minify: false, | ||
| backupFileType: 'js', | ||
@@ -222,3 +223,4 @@ configPath: './webpack.config.js', | ||
| const { | ||
| clean | ||
| clean, | ||
| minify | ||
| } = this.config.webpack; | ||
@@ -230,8 +232,12 @@ if (!clean) return; | ||
| const filesDeleted = await (0, _del.default)(exclude.map(rule => _path.default.join(nodeLayerPath, rule))); | ||
| await (0, _minifyAllJs.default)(nodeLayerPath, { | ||
| compress_json: true, | ||
| module: true, | ||
| mangle: true, | ||
| packagejson: true | ||
| }); | ||
| if (_fs.default.existsSync(nodeLayerPath) && minify) { | ||
| await (0, _minifyAllJs.default)(nodeLayerPath, { | ||
| compress_json: true, | ||
| module: true, | ||
| mangle: true, | ||
| packagejson: true | ||
| }); | ||
| } | ||
| info(this, `Cleaned ${filesDeleted.length} files at ${nodeLayerPath}`); | ||
@@ -330,2 +336,2 @@ } | ||
| module.exports = exports.default; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJleGVjIiwidXRpbCIsInByb21pc2lmeSIsImNvbW1hbmQiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJMT0dfTEVWRUwiLCJwcm9jZXNzIiwiZW52IiwiREVGQVVMVF9DT05GSUciLCJpbnN0YWxsTGF5ZXJzIiwiZXhwb3J0TGF5ZXJzIiwiYnVsa0luc3RhbGwiLCJ1cGdyYWRlTGF5ZXJSZWZlcmVuY2VzIiwiZXhwb3J0UHJlZml4IiwibWFuYWdlTm9kZUZvbGRlciIsInBhY2thZ2VyIiwid2VicGFjayIsImNsZWFuIiwiYmFja3VwRmlsZVR5cGUiLCJjb25maWdQYXRoIiwiZGlzY292ZXJNb2R1bGVzIiwicHJvZHVjdGlvbk1vZGUiLCJMRVZFTFMiLCJub25lIiwiaW5mbyIsInZlcmJvc2UiLCJkZWJ1ZyIsImxvZyIsInMiLCJjb25zb2xlIiwibGV2ZWwiLCJnZXRMYXllcnMiLCJzZXJ2ZXJsZXNzIiwic2VydmljZSIsImxheWVycyIsImdldENvbmZpZyIsImN1c3RvbSIsImxheWVyQ29uZmlnIiwiTGF5ZXJNYW5hZ2VyUGx1Z2luIiwiY29uc3RydWN0b3IiLCJzbHMiLCJ2IiwiaW5pdCIsImhvb2tzIiwidHJhbnNmb3JtTGF5ZXJSZXNvdXJjZXMiLCJjb25maWciLCJpbnN0YWxsTGF5ZXIiLCJsYXllciIsImxheWVyTmFtZSIsInBhdGgiLCJsb2NhbFBhdGgiLCJsYXllclJlZk5hbWUiLCJyZXBsYWNlIiwieCIsInRvVXBwZXJDYXNlIiwibm9kZUxheWVyUGF0aCIsImZzIiwiZXhpc3RzU3luYyIsInByb21pc2VzIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJjb3B5RmlsZSIsImpvaW4iLCJjd2QiLCJ3cml0ZUZpbGUiLCJwcm9kdWN0aW9uTW9kZUZsYWciLCJwYWNrYWdlcyIsImxlbmd0aCIsInRyaW0iLCJlbmNvZGluZyIsImluc3RhbGxlZExheWVycyIsImF0dGVtcHRlZEluc3RhbGxMYXllcnMiLCJQcm9taXNlIiwiYWxsIiwiT2JqZWN0IiwiZW50cmllcyIsIm1hcCIsImluc3RhbGxlZCIsImRlbGV0ZSIsImZpbHRlciIsIm5vdEVtcHR5IiwicHVzaCIsImZvbGRlciIsImV4Y2x1ZGUiLCJwYWNrYWdlIiwicGF0dGVybnMiLCJwIiwic3RhcnRzV2l0aCIsInJ1bGUiLCJmaWxlc0RlbGV0ZWQiLCJjb21wcmVzc19qc29uIiwibW9kdWxlIiwibWFuZ2xlIiwicGFja2FnZWpzb24iLCJleHBvcnRlZExheWVycyIsInVwZ3JhZGVkTGF5ZXJSZWZlcmVuY2VzIiwiY29tcGlsZWRDbG91ZEZvcm1hdGlvblRlbXBsYXRlIiwiY2YiLCJwcm92aWRlciIsImxheWVyc0tleXMiLCJrZXlzIiwidHJhbnNmb3JtZWRSZXNvdXJjZXMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJpZCIsIm5hbWUiLCJleHBvcnROYW1lIiwib3V0cHV0IiwiT3V0cHV0cyIsIkV4cG9ydCIsIk5hbWUiLCJyZXNvdXJjZVJlZiIsInZlcnNpb25lZFJlc291cmNlUmVmIiwiVmFsdWUiLCJSZWYiLCJyZXNvdXJjZXMiLCJSZXNvdXJjZXMiLCJyZXNvdXJjZSIsIlR5cGUiLCJ0eXBlIiwiUHJvcGVydGllcyIsIkxheWVycyIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7Ozs7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxjQUFLQyxTQUFMLENBQ1gsQ0FDRUMsT0FERixFQUVFQyxPQUZGLEVBS0VDLFFBTEYsS0FNSyx5QkFBZUYsT0FBZixFQUF3QkMsT0FBeEIsRUFBaUNDLFFBQWpDLENBUE0sQ0FBYjs7QUFVQSxNQUFNO0FBQUVDLEVBQUFBLFNBQVMsR0FBRztBQUFkLElBQXlCQyxPQUFPLENBQUNDLEdBQXZDO0FBRUEsTUFBTUMsY0FBYyxHQUFHO0FBQ3JCQyxFQUFBQSxhQUFhLEVBQUUsSUFETTtBQUVyQkMsRUFBQUEsWUFBWSxFQUFF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SkksY0FBQUEsTUFBTSxFQUFFdkYsTUFBTSxHQUFHO0FBRGIsZ0JBRW9Gc0YsVUFGMUY7O0FBR0EsZ0JBQUlELElBQUksS0FBSyx1QkFBYixFQUFzQztBQUNwQyxtQkFBSyxNQUFNeEUsS0FBWCxJQUFvQmIsTUFBcEIsRUFBNEI7QUFDMUIsb0JBQUlhLEtBQUssQ0FBQ21FLEdBQU4sS0FBY0gsV0FBbEIsRUFBK0I7QUFDN0J0RixrQkFBQUEsT0FBTyxDQUFDLElBQUQsRUFBUSxHQUFFK0UsRUFBRyx5Q0FBd0NRLG9CQUFxQixFQUExRSxDQUFQO0FBQ0FqRSxrQkFBQUEsS0FBSyxDQUFDbUUsR0FBTixHQUFZRixvQkFBWjtBQUNBVCxrQkFBQUEsTUFBTSxDQUFDUix1QkFBUCxDQUErQmQsSUFBL0IsQ0FBb0NsQyxLQUFwQztBQUNEO0FBQ0Y7QUFDRjtBQUNGO0FBQ0Y7QUFDRjs7QUFFRHRCLE1BQUFBLE9BQU8sQ0FBQyxJQUFELEVBQU8sNEJBQVAsRUFBcUNpRyxJQUFJLENBQUNDLFNBQUwsQ0FBZTFCLEVBQWYsRUFBbUIsSUFBbkIsRUFBeUIsQ0FBekIsQ0FBckMsQ0FBUDtBQUVBLGFBQU9NLE1BQVA7QUFDRCxLQXJEMEIsRUFzRDNCO0FBQ0VULE1BQUFBLGNBQWMsRUFBRSxFQURsQjtBQUVFQyxNQUFBQSx1QkFBdUIsRUFBRTtBQUYzQixLQXREMkIsQ0FBN0I7QUEyREEsV0FDRU0sb0JBQW9CLElBQUk7QUFDdEJQLE1BQUFBLGNBQWMsRUFBRSxFQURNO0FBRXRCQyxNQUFBQSx1QkFBdUIsRUFBRTtBQUZILEtBRDFCO0FBTUQ7O0FBL05xQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgYXMgZXhlY05vblByb21pc2UsIEV4ZWNPcHRpb25zLCBFeGVjRXhjZXB0aW9uIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgdXRpbCBmcm9tICd1dGlsJztcbmltcG9ydCBwYXNjYWxjYXNlIGZyb20gJ3Bhc2NhbGNhc2UnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGRlbCBmcm9tICdkZWwnO1xuaW1wb3J0IHsgZ2V0RXh0ZXJuYWxNb2R1bGVzIH0gZnJvbSAnLi9leHRlcm5hbCc7XG5pbXBvcnQgeyBNYXliZSwgTGF5ZXIsIEZ1bmN0aW9uTGF5ZXJSZWZlcmVuY2UsIFRyYW5zZm9ybWVkTGF5ZXJSZXNvdXJjZXMsIG5vdEVtcHR5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgU2VydmVybGVzcyBmcm9tICdzZXJ2ZXJsZXNzJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uUmVzb3VyY2UsIE91dHB1dCB9IGZyb20gJ3NlcnZlcmxlc3MvYXdzJztcbmltcG9ydCBtaW5pZnlBbGwgZnJvbSAnbWluaWZ5LWFsbC1qcyc7XG5cbmNvbnN0IGV4ZWMgPSB1dGlsLnByb21pc2lmeShcbiAgKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBlbmNvZGluZzogJ2J1ZmZlcicgfCBudWxsO1xuICAgIH0gJiBFeGVjT3B0aW9ucyxcbiAgICBjYWxsYmFjazogKGVycm9yOiBFeGVjRXhjZXB0aW9uIHwgbnVsbCwgc3Rkb3V0OiBCdWZmZXIsIHN0ZGVycjogQnVmZmVyKSA9PiB2b2lkXG4gICkgPT4gZXhlY05vblByb21pc2UoY29tbWFuZCwgb3B0aW9ucywgY2FsbGJhY2spXG4pO1xuXG5jb25zdCB7IExPR19MRVZFTCA9ICdpbmZvJyB9ID0gcHJvY2Vzcy5lbnY7XG5cbmNvbnN0IERFRkFVTFRfQ09ORklHID0ge1xuICBpbnN0YWxsTGF5ZXJzOiB0cnVlLFxuICBleHBvcnRMYXllcnM6IHRydWUsXG4gIGJ1bGtJbnN0YWxsOiBmYWxzZSxcbiAgdXBncmFkZUxheWVyUmVmZXJlbmNlczogdHJ1ZSxcbiAgZXhwb3J0UHJlZml4OiAnJHtBV1M6OlN0YWNrTmFtZX0tJyxcbiAgbWFuYWdlTm9kZUZvbGRlcjogZmFsc2UsXG4gIHBhY2thZ2VyOiAnbnBtJyxcbiAgd2VicGFjazoge1xuICAgIGNsZWFuOiB0cnVlLFxuICAgIGJhY2t1cEZpbGVUeXBlOiAnanMnLFxuICAgIGNvbmZpZ1BhdGg6ICcuL3dlYnBhY2suY29uZmlnLmpzJyxcbiAgICBkaXNjb3Zlck1vZHVsZXM6IHRydWUsXG4gIH0sXG4gIHByb2R1Y3Rpb25Nb2RlOiB0cnVlLFxufTtcblxuY29uc3QgTEVWRUxTID0ge1xuICBub25lOiAwLFxuICBpbmZvOiAxLFxuICB2ZXJib3NlOiAyLFxuICBkZWJ1ZzogMyxcbn07XG5cbmZ1bmN0aW9uIGxvZyguLi5zOiB1bmtub3duW10pIHtcbiAgY29uc29sZS5sb2coJ1t3ZWJwYWNrLWxheWVyc10nLCAuLi5zKTtcbn1cblxuZnVuY3Rpb24gdmVyYm9zZSh7IGxldmVsIH0sIC4uLnM6IHVua25vd25bXSkge1xuICBMRVZFTFNbbGV2ZWxdID49IExFVkVMUy52ZXJib3NlICYmIGxvZyguLi5zKTtcbn1cblxuZnVuY3Rpb24gaW5mbyh7IGxldmVsIH0sIC4uLnM6IHVua25vd25bXSkge1xuICBMRVZFTFNbbGV2ZWxdID49IExFVkVMUy5pbmZvICYmIGxvZyguLi5zKTtcbn1cblxuZnVuY3Rpb24gZGVidWcoeyBsZXZlbCB9LCAuLi5zOiB1bmtub3duW10pIHtcbiAgTEVWRUxTW2xldmVsXSA+PSBMRVZFTFMuZGVidWcgJiYgbG9nKC4uLnMpO1xufVxuXG5mdW5jdGlvbiBnZXRMYXllcnMoc2VydmVybGVzczogU2VydmVybGVzcyk6IHsgW2tleTogc3RyaW5nXTogTGF5ZXIgfSB7XG4gIHJldHVybiBzZXJ2ZXJsZXNzLnNlcnZpY2UubGF5ZXJzIHx8IHt9O1xufVxuXG5mdW5jdGlvbiBnZXRDb25maWcoc2VydmVybGVzczogU2VydmVybGVzcykge1xuICBjb25zdCBjdXN0b20gPSBzZXJ2ZXJsZXNzLnNlcnZpY2UuY3VzdG9tIHx8IHt9O1xuXG4gIHJldHVybiB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jdXN0b20ubGF5ZXJDb25maWcgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF5ZXJNYW5hZ2VyUGx1Z2luIHtcbiAgbGV2ZWw6IHN0cmluZztcbiAgaG9va3M6IHtcbiAgICBba2V5OiBzdHJpbmddOiAoKSA9PiBQcm9taXNlPHVua25vd24+O1xuICB9O1xuICBjb25maWc6IHtcbiAgICBpbnN0YWxsTGF5ZXJzPzogYm9vbGVhbjtcbiAgICBidWxrSW5zdGFsbD86IGJvb2xlYW47XG4gICAgZXhwb3J0TGF5ZXJzPzogYm9vbGVhbjtcbiAgICB1cGdyYWRlTGF5ZXJSZWZlcmVuY2VzPzogYm9vbGVhbjtcbiAgICBleHBvcnRQcmVmaXg/OiBzdHJpbmc7XG4gICAgbWFuYWdlTm9kZUZvbGRlcj86IGJvb2xlYW47XG4gICAgcGFja2FnZXI/OiAnbnBtJyB8ICd5YXJuJztcbiAgICB3ZWJwYWNrOiBQYXJ0aWFsPHtcbiAgICAgIGNsZWFuOiBib29sZWFuO1xuICAgICAgYmFja3VwRmlsZVR5cGU6ICdqcycgfCAndHMnIHwgJ2Nqcyc7XG4gICAgICBjb25maWdQYXRoOiBzdHJpbmc7XG4gICAgICBkaXNjb3Zlck1vZHVsZXM6IGJvb2xlYW47XG4gICAgfT47XG4gICAgcHJvZHVjdGlvbk1vZGU/OiBib29sZWFuO1xuICB9ID0geyB3ZWJwYWNrOiB7fSB9O1xuICBjb25zdHJ1Y3RvcihzbHM6IFNlcnZlcmxlc3MsIG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30pIHtcbiAgICB0aGlzLmxldmVsID0gb3B0aW9ucy52IHx8IG9wdGlvbnMudmVyYm9zZSA/ICd2ZXJib3NlJyA6IExPR19MRVZFTDtcblxuICAgIGRlYnVnKHRoaXMsIGBJbnZva2luZyB3ZWJwYWNrLWxheWVycyBwbHVnaW5gKTtcbiAgICB0aGlzLmluaXQoc2xzKTtcblxuICAgIHRoaXMuaG9va3MgPSB7XG4gICAgICAncGFja2FnZTppbml0aWFsaXplJzogKCkgPT4gdGhpcy5pbnN0YWxsTGF5ZXJzKHNscyksXG4gICAgICAnYmVmb3JlOmRlcGxveTpkZXBsb3knOiAoKSA9PiB0aGlzLnRyYW5zZm9ybUxheWVyUmVzb3VyY2VzKHNscyksXG4gICAgfTtcbiAgfVxuXG4gIGluaXQoc2xzOiBTZXJ2ZXJsZXNzKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSBnZXRDb25maWcoc2xzKTtcbiAgICB2ZXJib3NlKHRoaXMsIGBDb25maWc6IGAsIHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGxMYXllcihzbHM6IFNlcnZlcmxlc3MsIGxheWVyOiBMYXllciwgbGF5ZXJOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHBhdGg6IGxvY2FsUGF0aCB9ID0gbGF5ZXI7XG4gICAgY29uc3QgbGF5ZXJSZWZOYW1lID0gYCR7bGF5ZXJOYW1lLnJlcGxhY2UoL14uLywgeCA9PiB4LnRvVXBwZXJDYXNlKCkpfUxhbWJkYUxheWVyYDtcbiAgICBjb25zdCBub2RlTGF5ZXJQYXRoID0gYCR7bG9jYWxQYXRofS9ub2RlanNgO1xuICAgIGlmICghdGhpcy5jb25maWcubWFuYWdlTm9kZUZvbGRlciAmJiAhZnMuZXhpc3RzU3luYyhub2RlTGF5ZXJQYXRoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcubWFuYWdlTm9kZUZvbGRlcikge1xuICAgICAgYXdhaXQgZGVsKGAke25vZGVMYXllclBhdGh9LyoqYCk7XG4gICAgfVxuXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKG5vZGVMYXllclBhdGgpICYmIHRoaXMuY29uZmlnLm1hbmFnZU5vZGVGb2xkZXIpIHtcbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKG5vZGVMYXllclBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY29uZmlnLndlYnBhY2spIHtcbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLmNvcHlGaWxlKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS5qc29uJyksIHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCAncGFja2FnZS5qc29uJykpO1xuICAgICAgaWYgKHRoaXMuY29uZmlnLnBhY2thZ2VyID09PSAnbnBtJykge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5jb3B5RmlsZShcbiAgICAgICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3BhY2thZ2UtbG9jay5qc29uJyksXG4gICAgICAgICAgcGF0aC5qb2luKG5vZGVMYXllclBhdGgsICdwYWNrYWdlLWxvY2suanNvbicpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLnBhY2thZ2VyID09PSAneWFybicpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMuY29weUZpbGUocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd5YXJuLmxvY2snKSwgcGF0aC5qb2luKG5vZGVMYXllclBhdGgsICd5YXJuLmxvY2snKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5tYW5hZ2VOb2RlRm9sZGVyKSB7XG4gICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUocGF0aC5qb2luKG5vZGVMYXllclBhdGgsICdwYWNrYWdlLmpzb24nKSwgJ3t9Jyk7XG4gICAgfVxuICAgIHZlcmJvc2UodGhpcywgYEluc3RhbGxpbmcgbm9kZWpzIGxheWVyICR7bG9jYWxQYXRofSB3aXRoICR7dGhpcy5jb25maWcucGFja2FnZXJ9YCk7XG4gICAgY29uc3QgcHJvZHVjdGlvbk1vZGVGbGFnID0gdGhpcy5jb25maWcucHJvZHVjdGlvbk1vZGUgPyAnTk9ERV9FTlY9cHJvZHVjdGlvbicgOiAnJztcbiAgICBsZXQgY29tbWFuZCA9IHByb2R1Y3Rpb25Nb2RlRmxhZyArIHRoaXMuY29uZmlnLnBhY2thZ2VyID09PSAnbnBtJyA/ICducG0gaW5zdGFsbCcgOiAneWFybiBpbnN0YWxsJztcbiAgICBpZiAodGhpcy5jb25maWcud2VicGFjaykge1xuICAgICAgY29uc3QgcGFja2FnZXMgPSBhd2FpdCBnZXRFeHRlcm5hbE1vZHVsZXMoc2xzLCBsYXllclJlZk5hbWUpO1xuICAgICAgaWYgKHBhY2thZ2VzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBjb21tYW5kID1cbiAgICAgICAgICB0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ25wbSdcbiAgICAgICAgICAgID8gYCR7cHJvZHVjdGlvbk1vZGVGbGFnfSBucG0gaW5zdGFsbCAke3BhY2thZ2VzLmpvaW4oJyAnKS50cmltKCl9YFxuICAgICAgICAgICAgOiBgJHtwcm9kdWN0aW9uTW9kZUZsYWd9IHlhcm4gYWRkICR7cGFja2FnZXMuam9pbignICcpLnRyaW0oKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tbWFuZCA9ICdscyc7XG4gICAgICB9XG4gICAgfVxuICAgIGluZm8odGhpcywgYFJ1bm5pbmcgY29tbWFuZCAke2NvbW1hbmR9YCk7XG4gICAgYXdhaXQgZXhlYyhjb21tYW5kLCB7XG4gICAgICBjd2Q6IG5vZGVMYXllclBhdGgsXG4gICAgICBlbmNvZGluZzogbnVsbCxcbiAgICB9KTtcbiAgICBpZiAodGhpcy5jb25maWcucGFja2FnZXIgPT09ICd5YXJuJykge1xuICAgICAgYXdhaXQgZXhlYyhgeWFybiBhdXRvY2xlYW4gLS1pbml0YCwgeyBjd2Q6IG5vZGVMYXllclBhdGgsIGVuY29kaW5nOiBudWxsIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGxMYXllcnMoc2xzOiBTZXJ2ZXJsZXNzKTogUHJvbWlzZTx7IGluc3RhbGxlZExheWVyczogTGF5ZXJbXSB9PiB7XG4gICAgY29uc3QgeyBpbnN0YWxsTGF5ZXJzLCBidWxrSW5zdGFsbCA9IGZhbHNlIH0gPSB0aGlzLmNvbmZpZztcblxuICAgIGlmICghaW5zdGFsbExheWVycykge1xuICAgICAgdmVyYm9zZSh0aGlzLCBgU2tpcHBpbmcgaW5zdGFsbGF0aW9uIG9mIGxheWVycyBhcyBwZXIgY29uZmlnYCk7XG4gICAgICByZXR1cm4geyBpbnN0YWxsZWRMYXllcnM6IFtdIH07XG4gICAgfVxuXG4gICAgY29uc3QgbGF5ZXJzID0gZ2V0TGF5ZXJzKHNscyk7XG4gICAgbGV0IGluc3RhbGxlZExheWVyczogTGF5ZXJbXSA9IFtdO1xuICAgIGlmIChidWxrSW5zdGFsbCkge1xuICAgICAgY29uc3QgYXR0ZW1wdGVkSW5zdGFsbExheWVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBPYmplY3QuZW50cmllcyhsYXllcnMpLm1hcChhc3luYyAoW2xheWVyTmFtZSwgbGF5ZXJdKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gJ29iamVjdCcpIHJldHVybjtcbiAgICAgICAgICBjb25zdCBpbnN0YWxsZWQgPSBhd2FpdCB0aGlzLmluc3RhbGxMYXllcihzbHMsIGxheWVyLCBsYXllck5hbWUpO1xuICAgICAgICAgIGlmICghaW5zdGFsbGVkKSByZXR1cm47XG4gICAgICAgICAgYXdhaXQgdGhpcy5kZWxldGUoc2xzLCBsYXllci5wYXRoKTtcbiAgICAgICAgICByZXR1cm4gbGF5ZXI7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgaW5zdGFsbGVkTGF5ZXJzID0gYXR0ZW1wdGVkSW5zdGFsbExheWVycy5maWx0ZXIobm90RW1wdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IFtsYXllck5hbWUsIGxheWVyXSBvZiBPYmplY3QuZW50cmllcyhsYXllcnMpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09ICdvYmplY3QnKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgaW5zdGFsbGVkID0gYXdhaXQgdGhpcy5pbnN0YWxsTGF5ZXIoc2xzLCBsYXllciwgbGF5ZXJOYW1lKTtcbiAgICAgICAgaWYgKCFpbnN0YWxsZWQpIGNvbnRpbnVlO1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZShzbHMsIGxheWVyLnBhdGgpO1xuICAgICAgICBpbnN0YWxsZWRMYXllcnMucHVzaChsYXllcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW5mbyh0aGlzLCBgSW5zdGFsbGVkICR7aW5zdGFsbGVkTGF5ZXJzLmxlbmd0aH0gbGF5ZXIke2luc3RhbGxlZExheWVycy5sZW5ndGggPiAxID8gJ3MnIDogJyd9YCk7XG4gICAgcmV0dXJuIHsgaW5zdGFsbGVkTGF5ZXJzIH07XG4gIH1cblxuICBhc3luYyBkZWxldGUoc2xzOiBTZXJ2ZXJsZXNzLCBmb2xkZXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgY2xlYW4gfSA9IHRoaXMuY29uZmlnLndlYnBhY2s7XG4gICAgaWYgKCFjbGVhbikgcmV0dXJuO1xuICAgIGNvbnN0IG5vZGVMYXllclBhdGggPSBgJHtmb2xkZXJ9L25vZGVqc2A7XG4gICAgY29uc3QgZXhjbHVkZTogc3RyaW5nW10gPVxuICAgICAgc2xzLnNlcnZpY2U/LnBhY2thZ2U/LmV4Y2x1ZGUgPz9cbiAgICAgIHNscy5zZXJ2aWNlPy5wYWNrYWdlPy5wYXR0ZXJucz8uZmlsdGVyKHAgPT4gcC5zdGFydHNXaXRoKCchJykpPy5tYXAocCA9PiBwLnJlcGxhY2UoL14hLywgJycpKSA/P1xuICAgICAgW107XG4gICAgaW5mbyh0aGlzLCBgQ2xlYW5pbmcgJHtleGNsdWRlLm1hcChydWxlID0+IHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCBydWxlKSkuam9pbignLCAnKX1gKTtcbiAgICBjb25zdCBmaWxlc0RlbGV0ZWQgPSBhd2FpdCBkZWwoZXhjbHVkZS5tYXAocnVsZSA9PiBwYXRoLmpvaW4obm9kZUxheWVyUGF0aCwgcnVsZSkpKTtcbiAgICBhd2FpdCBtaW5pZnlBbGwobm9kZUxheWVyUGF0aCwge1xuICAgICAgY29tcHJlc3NfanNvbjogdHJ1ZSxcbiAgICAgIG1vZHVsZTogdHJ1ZSxcbiAgICAgIG1hbmdsZTogdHJ1ZSxcbiAgICAgIHBhY2thZ2Vqc29uOiB0cnVlLFxuICAgIH0pO1xuICAgIGluZm8odGhpcywgYENsZWFuZWQgJHtmaWxlc0RlbGV0ZWQubGVuZ3RofSBmaWxlcyBhdCAke25vZGVMYXllclBhdGh9YCk7XG4gIH1cblxuICBhc3luYyB0cmFuc2Zvcm1MYXllclJlc291cmNlcyhzbHM6IFNlcnZlcmxlc3MpOiBQcm9taXNlPFRyYW5zZm9ybWVkTGF5ZXJSZXNvdXJjZXM+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSB7XG4gICAgICBsb2codGhpcywgJ1VuYWJsZSB0byBhZGQgbGF5ZXJzIGN1cnJlbnRseSBhcyBjb25maWcgdW5hdmFpbGFibGUnKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV4cG9ydGVkTGF5ZXJzOiBbXSxcbiAgICAgICAgdXBncmFkZWRMYXllclJlZmVyZW5jZXM6IFtdLFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgeyBleHBvcnRMYXllcnMsIGV4cG9ydFByZWZpeCwgdXBncmFkZUxheWVyUmVmZXJlbmNlcyB9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgbGF5ZXJzID0gZ2V0TGF5ZXJzKHNscyk7XG4gICAgY29uc3QgeyBjb21waWxlZENsb3VkRm9ybWF0aW9uVGVtcGxhdGU6IGNmIH0gPSBzbHMuc2VydmljZS5wcm92aWRlcjtcblxuICAgIGNvbnN0IGxheWVyc0tleXMgPSBPYmplY3Qua2V5cyhsYXllcnMpO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRSZXNvdXJjZXMgPSBsYXllcnNLZXlzLnJlZHVjZShcbiAgICAgIChyZXN1bHQ6IE1heWJlPFRyYW5zZm9ybWVkTGF5ZXJSZXNvdXJjZXM+LCBpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgZXhwb3J0ZWRMYXllcnM6IFtdLFxuICAgICAgICAgICAgdXBncmFkZWRMYXllclJlZmVyZW5jZXM6IFtdLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZSA9IHBhc2NhbGNhc2UoaWQpO1xuICAgICAgICBjb25zdCBleHBvcnROYW1lID0gYCR7bmFtZX1MYW1iZGFMYXllclF1YWxpZmllZEFybmA7XG4gICAgICAgIGNvbnN0IG91dHB1dDogTWF5YmU8T3V0cHV0PiA9IChjZi5PdXRwdXRzID8/IHt9KVtleHBvcnROYW1lXTtcblxuICAgICAgICBpZiAoIW91dHB1dCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhwb3J0TGF5ZXJzKSB7XG4gICAgICAgICAgb3V0cHV0LkV4cG9ydCA9IHtcbiAgICAgICAgICAgIE5hbWU6IHtcbiAgICAgICAgICAgICAgJ0ZuOjpTdWInOiBleHBvcnRQcmVmaXggKyBleHBvcnROYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJlc3VsdC5leHBvcnRlZExheWVycy5wdXNoKG91dHB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBncmFkZUxheWVyUmVmZXJlbmNlcykge1xuICAgICAgICAgIGNvbnN0IHJlc291cmNlUmVmID0gYCR7bmFtZX1MYW1iZGFMYXllcmA7XG4gICAgICAgICAgY29uc3QgdmVyc2lvbmVkUmVzb3VyY2VSZWYgPSBvdXRwdXQuVmFsdWUuUmVmO1xuXG4gICAgICAgICAgaWYgKHJlc291cmNlUmVmICE9PSB2ZXJzaW9uZWRSZXNvdXJjZVJlZikge1xuICAgICAgICAgICAgaW5mbyh0aGlzLCBgUmVwbGFjaW5nIHJlZmVyZW5jZXMgdG8gJHtyZXNvdXJjZVJlZn0gd2l0aCAke3ZlcnNpb25lZFJlc291cmNlUmVmfWApO1xuICAgICAgICAgICAgY29uc3QgcmVzb3VyY2VzID0gY2YuUmVzb3VyY2VzIGFzIHsgW2tleTogc3RyaW5nXTogQ2xvdWRGb3JtYXRpb25SZXNvdXJjZSB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXNvdXJjZSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZXMpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IFtpZCwgeyBUeXBlOiB0eXBlLCBQcm9wZXJ0aWVzID0ge30gfV0gPSByZXNvdXJjZTtcbiAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIExheWVyczogbGF5ZXJzID0gW10sXG4gICAgICAgICAgICAgIH06IFBhcnRpYWw8Q2xvdWRGb3JtYXRpb25SZXNvdXJjZVsnUHJvcGVydGllcyddICYgeyBMYXllcnM6IEZ1bmN0aW9uTGF5ZXJSZWZlcmVuY2VbXSB9PiA9IFByb3BlcnRpZXM7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobGF5ZXIuUmVmID09PSByZXNvdXJjZVJlZikge1xuICAgICAgICAgICAgICAgICAgICB2ZXJib3NlKHRoaXMsIGAke2lkfTogVXBkYXRpbmcgcmVmZXJlbmNlIHRvIGxheWVyIHZlcnNpb24gJHt2ZXJzaW9uZWRSZXNvdXJjZVJlZn1gKTtcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXIuUmVmID0gdmVyc2lvbmVkUmVzb3VyY2VSZWY7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC51cGdyYWRlZExheWVyUmVmZXJlbmNlcy5wdXNoKGxheWVyKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2ZXJib3NlKHRoaXMsICdDRiBhZnRlciB0cmFuc2Zvcm1hdGlvbjpcXG4nLCBKU09OLnN0cmluZ2lmeShjZiwgbnVsbCwgMikpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBleHBvcnRlZExheWVyczogW10sXG4gICAgICAgIHVwZ3JhZGVkTGF5ZXJSZWZlcmVuY2VzOiBbXSxcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiAoXG4gICAgICB0cmFuc2Zvcm1lZFJlc291cmNlcyA/PyB7XG4gICAgICAgIGV4cG9ydGVkTGF5ZXJzOiBbXSxcbiAgICAgICAgdXBncmFkZWRMYXllclJlZmVyZW5jZXM6IFtdLFxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJleGVjIiwidXRpbCIsInByb21pc2lmeSIsImNvbW1hbmQiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJMT0dfTEVWRUwiLCJwcm9jZXNzIiwiZW52IiwiREVGQVVMVF9DT05GSUciLCJpbnN0YWxsTGF5ZXJzIiwiZXhwb3J0TGF5ZXJzIiwiYnVsa0luc3RhbGwiLCJ1cGdyYWRlTGF5ZXJSZWZlcmVuY2VzIiwiZXhwb3J0UHJlZml4IiwibWFuYWdlTm9kZUZvbGRlciIsInBhY2thZ2VyIiwid2VicGFjayIsImNsZWFuIiwibWluaWZ5IiwiYmFja3VwRmlsZVR5cGUiLCJjb25maWdQYXRoIiwiZGlzY292ZXJNb2R1bGVzIiwicHJvZHVjdGlvbk1vZGUiLCJMRVZFTFMiLCJub25lIiwiaW5mbyIsInZlcmJvc2UiLCJkZWJ1ZyIsImxvZyIsInMiLCJjb25zb2xlIiwibGV2ZWwiLCJnZXRMYXllcnMiLCJzZXJ2ZXJsZXNzIiwic2VydmljZSIsImxheWVycyIsImdldENvbmZpZyIsImN1c3RvbSIsImxheWVyQ29uZmlnIiwiTGF5ZXJNYW5hZ2VyUGx1Z2luIiwiY29uc3RydWN0b3IiLCJzbHMiLCJ2IiwiaW5pdCIsImhvb2tzIiwidHJhbnNmb3JtTGF5ZXJSZXNvdXJjZXMiLCJjb25maWciLCJpbnN0YWxsTGF5ZXIiLCJsYXllciIsImxheWVyTmFtZSIsInBhdGgiLCJsb2NhbFBhdGgiLCJsYXllclJlZk5hbWUiLCJyZXBsYWNlIiwieCIsInRvVXBwZXJDYXNlIiwibm9kZUxheWVyUGF0aCIsImZzIiwiZXhpc3RzU3luYyIsInByb21pc2VzIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJjb3B5RmlsZSIsImpvaW4iLCJjd2QiLCJ3cml0ZUZpbGUiLCJwcm9kdWN0aW9uTW9kZUZsYWciLCJwYWNrYWdlcyIsImxlbmd0aCIsInRyaW0iLCJlbmNvZGluZyIsImluc3RhbGxlZExheWVycyIsImF0dGVtcHRlZEluc3RhbGxMYXllcnMiLCJQcm9taXNlIiwiYWxsIiwiT2JqZWN0IiwiZW50cmllcyIsIm1hcCIsImluc3RhbGxlZCIsImRlbGV0ZSIsImZpbHRlciIsIm5vdEVtcHR5IiwicHVzaCIsImZvbGRlciIsImV4Y2x1ZGUiLCJwYWNrYWdlIiwicGF0dGVybnMiLCJwIiwic3RhcnRzV2l0aCIsInJ1bGUiLCJmaWxlc0RlbGV0ZWQiLCJjb21wcmVzc19qc29uIiwibW9kdWxlIiwibWFuZ2xlIiwicGFja2FnZWpzb24iLCJleHBvcnRlZExheWVycyIsInVwZ3JhZGVkTGF5ZXJSZWZlcmVuY2VzIiwiY29tcGlsZWRDbG91ZEZvcm1hdGlvblRlbXBsYXRlIiwiY2YiLCJwcm92aWRlciIsImxheWVyc0tleXMiLCJrZXlzIiwidHJhbnNmb3JtZWRSZXNvdXJjZXMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJpZCIsIm5hbWUiLCJleHBvcnROYW1lIiwib3V0cHV0IiwiT3V0cHV0cyIsIkV4cG9ydCIsIk5hbWUiLCJyZXNvdXJjZVJlZiIsInZlcnNpb25lZFJlc291cmNlUmVmIiwiVmFsdWUiLCJSZWYiLCJyZXNvdXJjZXMiLCJSZXNvdXJjZXMiLCJyZXNvdXJjZSIsIlR5cGUiLCJ0eXBlIiwiUHJvcGVydGllcyIsIkxheWVycyIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7Ozs7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxjQUFLQyxTQUFMLENBQ1gsQ0FDRUMsT0FERixFQUVFQyxPQUZGLEVBS0VDLFFBTEYsS0FNSyx5QkFBZUYsT0FBZixFQUF3QkMsT0FBeEIsRUFBaUNDLFFBQWpDLENBUE0sQ0FBYjs7QUFVQSxNQUFNO0FBQUVDLEVBQUFBLFNBQVMsR0FBRztBQUFkLElBQXlCQyxPQUFPLENBQUNDLEdBQXZDO0FBRUEsTUFBTUMsY0FBYyxHQUFHO0FBQ3JCQyxFQUFBQSxhQUFhLEVBQUUsSUFETTtBQUVyQkMsRUFBQUEs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QUFDaEQsa0JBQU0sQ0FBQ1gsRUFBRCxFQUFLO0FBQUVjLGNBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxjQUFBQSxVQUFVLEdBQUc7QUFBM0IsYUFBTCxJQUF3Q0gsUUFBOUM7QUFDQSxrQkFBTTtBQUNKSSxjQUFBQSxNQUFNLEVBQUV2RixNQUFNLEdBQUc7QUFEYixnQkFFb0ZzRixVQUYxRjs7QUFHQSxnQkFBSUQsSUFBSSxLQUFLLHVCQUFiLEVBQXNDO0FBQ3BDLG1CQUFLLE1BQU14RSxLQUFYLElBQW9CYixNQUFwQixFQUE0QjtBQUMxQixvQkFBSWEsS0FBSyxDQUFDbUUsR0FBTixLQUFjSCxXQUFsQixFQUErQjtBQUM3QnRGLGtCQUFBQSxPQUFPLENBQUMsSUFBRCxFQUFRLEdBQUUrRSxFQUFHLHlDQUF3Q1Esb0JBQXFCLEVBQTFFLENBQVA7QUFDQWpFLGtCQUFBQSxLQUFLLENBQUNtRSxHQUFOLEdBQVlGLG9CQUFaO0FBQ0FULGtCQUFBQSxNQUFNLENBQUNSLHVCQUFQLENBQStCZCxJQUEvQixDQUFvQ2xDLEtBQXBDO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7QUFDRjtBQUNGOztBQUVEdEIsTUFBQUEsT0FBTyxDQUFDLElBQUQsRUFBTyw0QkFBUCxFQUFxQ2lHLElBQUksQ0FBQ0MsU0FBTCxDQUFlMUIsRUFBZixFQUFtQixJQUFuQixFQUF5QixDQUF6QixDQUFyQyxDQUFQO0FBRUEsYUFBT00sTUFBUDtBQUNELEtBckQwQixFQXNEM0I7QUFDRVQsTUFBQUEsY0FBYyxFQUFFLEVBRGxCO0FBRUVDLE1BQUFBLHVCQUF1QixFQUFFO0FBRjNCLEtBdEQyQixDQUE3QjtBQTJEQSxXQUNFTSxvQkFBb0IsSUFBSTtBQUN0QlAsTUFBQUEsY0FBYyxFQUFFLEVBRE07QUFFdEJDLE1BQUFBLHVCQUF1QixFQUFFO0FBRkgsS0FEMUI7QUFNRDs7QUFsT3FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlYyBhcyBleGVjTm9uUHJvbWlzZSwgRXhlY09wdGlvbnMsIEV4ZWNFeGNlcHRpb24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB1dGlsIGZyb20gJ3V0aWwnO1xuaW1wb3J0IHBhc2NhbGNhc2UgZnJvbSAncGFzY2FsY2FzZSc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZGVsIGZyb20gJ2RlbCc7XG5pbXBvcnQgeyBnZXRFeHRlcm5hbE1vZHVsZXMgfSBmcm9tICcuL2V4dGVybmFsJztcbmltcG9ydCB7IE1heWJlLCBMYXllciwgRnVuY3Rpb25MYXllclJlZmVyZW5jZSwgVHJhbnNmb3JtZWRMYXllclJlc291cmNlcywgbm90RW1wdHkgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBTZXJ2ZXJsZXNzIGZyb20gJ3NlcnZlcmxlc3MnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25SZXNvdXJjZSwgT3V0cHV0IH0gZnJvbSAnc2VydmVybGVzcy9hd3MnO1xuaW1wb3J0IG1pbmlmeUFsbCBmcm9tICdtaW5pZnktYWxsLWpzJztcblxuY29uc3QgZXhlYyA9IHV0aWwucHJvbWlzaWZ5KFxuICAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGVuY29kaW5nOiAnYnVmZmVyJyB8IG51bGw7XG4gICAgfSAmIEV4ZWNPcHRpb25zLFxuICAgIGNhbGxiYWNrOiAoZXJyb3I6IEV4ZWNFeGNlcHRpb24gfCBudWxsLCBzdGRvdXQ6IEJ1ZmZlciwgc3RkZXJyOiBCdWZmZXIpID0+IHZvaWRcbiAgKSA9PiBleGVjTm9uUHJvbWlzZShjb21tYW5kLCBvcHRpb25zLCBjYWxsYmFjaylcbik7XG5cbmNvbnN0IHsgTE9HX0xFVkVMID0gJ2luZm8nIH0gPSBwcm9jZXNzLmVudjtcblxuY29uc3QgREVGQVVMVF9DT05GSUcgPSB7XG4gIGluc3RhbGxMYXllcnM6IHRydWUsXG4gIGV4cG9ydExheWVyczogdHJ1ZSxcbiAgYnVsa0luc3RhbGw6IGZhbHNlLFxuICB1cGdyYWRlTGF5ZXJSZWZlcmVuY2VzOiB0cnVlLFxuICBleHBvcnRQcmVmaXg6ICcke0FXUzo6U3RhY2tOYW1lfS0nLFxuICBtYW5hZ2VOb2RlRm9sZGVyOiBmYWxzZSxcbiAgcGFja2FnZXI6ICducG0nLFxuICB3ZWJwYWNrOiB7XG4gICAgY2xlYW46IHRydWUsXG4gICAgbWluaWZ5OiBmYWxzZSxcbiAgICBiYWNrdXBGaWxlVHlwZTogJ2pzJyxcbiAgICBjb25maWdQYXRoOiAnLi93ZWJwYWNrLmNvbmZpZy5qcycsXG4gICAgZGlzY292ZXJNb2R1bGVzOiB0cnVlLFxuICB9LFxuICBwcm9kdWN0aW9uTW9kZTogdHJ1ZSxcbn07XG5cbmNvbnN0IExFVkVMUyA9IHtcbiAgbm9uZTogMCxcbiAgaW5mbzogMSxcbiAgdmVyYm9zZTogMixcbiAgZGVidWc6IDMsXG59O1xuXG5mdW5jdGlvbiBsb2coLi4uczogdW5rbm93bltdKSB7XG4gIGNvbnNvbGUubG9nKCdbd2VicGFjay1sYXllcnNdJywgLi4ucyk7XG59XG5cbmZ1bmN0aW9uIHZlcmJvc2UoeyBsZXZlbCB9LCAuLi5zOiB1bmtub3duW10pIHtcbiAgTEVWRUxTW2xldmVsXSA+PSBMRVZFTFMudmVyYm9zZSAmJiBsb2coLi4ucyk7XG59XG5cbmZ1bmN0aW9uIGluZm8oeyBsZXZlbCB9LCAuLi5zOiB1bmtub3duW10pIHtcbiAgTEVWRUxTW2xldmVsXSA+PSBMRVZFTFMuaW5mbyAmJiBsb2coLi4ucyk7XG59XG5cbmZ1bmN0aW9uIGRlYnVnKHsgbGV2ZWwgfSwgLi4uczogdW5rbm93bltdKSB7XG4gIExFVkVMU1tsZXZlbF0gPj0gTEVWRUxTLmRlYnVnICYmIGxvZyguLi5zKTtcbn1cblxuZnVuY3Rpb24gZ2V0TGF5ZXJzKHNlcnZlcmxlc3M6IFNlcnZlcmxlc3MpOiB7IFtrZXk6IHN0cmluZ106IExheWVyIH0ge1xuICByZXR1cm4gc2VydmVybGVzcy5zZXJ2aWNlLmxheWVycyB8fCB7fTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29uZmlnKHNlcnZlcmxlc3M6IFNlcnZlcmxlc3MpIHtcbiAgY29uc3QgY3VzdG9tID0gc2VydmVybGVzcy5zZXJ2aWNlLmN1c3RvbSB8fCB7fTtcblxuICByZXR1cm4geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4uY3VzdG9tLmxheWVyQ29uZmlnIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExheWVyTWFuYWdlclBsdWdpbiB7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGhvb2tzOiB7XG4gICAgW2tleTogc3RyaW5nXTogKCkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgfTtcbiAgY29uZmlnOiB7XG4gICAgaW5zdGFsbExheWVycz86IGJvb2xlYW47XG4gICAgYnVsa0luc3RhbGw/OiBib29sZWFuO1xuICAgIGV4cG9ydExheWVycz86IGJvb2xlYW47XG4gICAgdXBncmFkZUxheWVyUmVmZXJlbmNlcz86IGJvb2xlYW47XG4gICAgZXhwb3J0UHJlZml4Pzogc3RyaW5nO1xuICAgIG1hbmFnZU5vZGVGb2xkZXI/OiBib29sZWFuO1xuICAgIHBhY2thZ2VyPzogJ25wbScgfCAneWFybic7XG4gICAgd2VicGFjazogUGFydGlhbDx7XG4gICAgICBjbGVhbjogYm9vbGVhbjtcbiAgICAgIG1pbmlmeTogYm9vbGVhbjtcbiAgICAgIGJhY2t1cEZpbGVUeXBlOiAnanMnIHwgJ3RzJyB8ICdjanMnO1xuICAgICAgY29uZmlnUGF0aDogc3RyaW5nO1xuICAgICAgZGlzY292ZXJNb2R1bGVzOiBib29sZWFuO1xuICAgIH0+O1xuICAgIHByb2R1Y3Rpb25Nb2RlPzogYm9vbGVhbjtcbiAgfSA9IHsgd2VicGFjazoge30gfTtcbiAgY29uc3RydWN0b3Ioc2xzOiBTZXJ2ZXJsZXNzLCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9KSB7XG4gICAgdGhpcy5sZXZlbCA9IG9wdGlvbnMudiB8fCBvcHRpb25zLnZlcmJvc2UgPyAndmVyYm9zZScgOiBMT0dfTEVWRUw7XG5cbiAgICBkZWJ1Zyh0aGlzLCBgSW52b2tpbmcgd2VicGFjay1sYXllcnMgcGx1Z2luYCk7XG4gICAgdGhpcy5pbml0KHNscyk7XG5cbiAgICB0aGlzLmhvb2tzID0ge1xuICAgICAgJ3BhY2thZ2U6aW5pdGlhbGl6ZSc6ICgpID0+IHRoaXMuaW5zdGFsbExheWVycyhzbHMpLFxuICAgICAgJ2JlZm9yZTpkZXBsb3k6ZGVwbG95JzogKCkgPT4gdGhpcy50cmFuc2Zvcm1MYXllclJlc291cmNlcyhzbHMpLFxuICAgIH07XG4gIH1cblxuICBpbml0KHNsczogU2VydmVybGVzcyk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0gZ2V0Q29uZmlnKHNscyk7XG4gICAgdmVyYm9zZSh0aGlzLCBgQ29uZmlnOiBgLCB0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsTGF5ZXIoc2xzOiBTZXJ2ZXJsZXNzLCBsYXllcjogTGF5ZXIsIGxheWVyTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBwYXRoOiBsb2NhbFBhdGggfSA9IGxheWVyO1xuICAgIGNvbnN0IGxheWVyUmVmTmFtZSA9IGAke2xheWVyTmFtZS5yZXBsYWNlKC9eLi8sIHggPT4geC50b1VwcGVyQ2FzZSgpKX1MYW1iZGFMYXllcmA7XG4gICAgY29uc3Qgbm9kZUxheWVyUGF0aCA9IGAke2xvY2FsUGF0aH0vbm9kZWpzYDtcbiAgICBpZiAoIXRoaXMuY29uZmlnLm1hbmFnZU5vZGVGb2xkZXIgJiYgIWZzLmV4aXN0c1N5bmMobm9kZUxheWVyUGF0aCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnLm1hbmFnZU5vZGVGb2xkZXIpIHtcbiAgICAgIGF3YWl0IGRlbChgJHtub2RlTGF5ZXJQYXRofS8qKmApO1xuICAgIH1cblxuICAgIGlmICghZnMuZXhpc3RzU3luYyhub2RlTGF5ZXJQYXRoKSAmJiB0aGlzLmNvbmZpZy5tYW5hZ2VOb2RlRm9sZGVyKSB7XG4gICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2Rpcihub2RlTGF5ZXJQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmNvbmZpZy53ZWJwYWNrKSB7XG4gICAgICBhd2FpdCBmcy5wcm9taXNlcy5jb3B5RmlsZShwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3BhY2thZ2UuanNvbicpLCBwYXRoLmpvaW4obm9kZUxheWVyUGF0aCwgJ3BhY2thZ2UuanNvbicpKTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ25wbScpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMuY29weUZpbGUoXG4gICAgICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdwYWNrYWdlLWxvY2suanNvbicpLFxuICAgICAgICAgIHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCAncGFja2FnZS1sb2NrLmpzb24nKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ3lhcm4nKSB7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLmNvcHlGaWxlKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAneWFybi5sb2NrJyksIHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCAneWFybi5sb2NrJykpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcubWFuYWdlTm9kZUZvbGRlcikge1xuICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCAncGFja2FnZS5qc29uJyksICd7fScpO1xuICAgIH1cbiAgICB2ZXJib3NlKHRoaXMsIGBJbnN0YWxsaW5nIG5vZGVqcyBsYXllciAke2xvY2FsUGF0aH0gd2l0aCAke3RoaXMuY29uZmlnLnBhY2thZ2VyfWApO1xuICAgIGNvbnN0IHByb2R1Y3Rpb25Nb2RlRmxhZyA9IHRoaXMuY29uZmlnLnByb2R1Y3Rpb25Nb2RlID8gJ05PREVfRU5WPXByb2R1Y3Rpb24nIDogJyc7XG4gICAgbGV0IGNvbW1hbmQgPSBwcm9kdWN0aW9uTW9kZUZsYWcgKyB0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ25wbScgPyAnbnBtIGluc3RhbGwnIDogJ3lhcm4gaW5zdGFsbCc7XG4gICAgaWYgKHRoaXMuY29uZmlnLndlYnBhY2spIHtcbiAgICAgIGNvbnN0IHBhY2thZ2VzID0gYXdhaXQgZ2V0RXh0ZXJuYWxNb2R1bGVzKHNscywgbGF5ZXJSZWZOYW1lKTtcbiAgICAgIGlmIChwYWNrYWdlcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgY29tbWFuZCA9XG4gICAgICAgICAgdGhpcy5jb25maWcucGFja2FnZXIgPT09ICducG0nXG4gICAgICAgICAgICA/IGAke3Byb2R1Y3Rpb25Nb2RlRmxhZ30gbnBtIGluc3RhbGwgJHtwYWNrYWdlcy5qb2luKCcgJykudHJpbSgpfWBcbiAgICAgICAgICAgIDogYCR7cHJvZHVjdGlvbk1vZGVGbGFnfSB5YXJuIGFkZCAke3BhY2thZ2VzLmpvaW4oJyAnKS50cmltKCl9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbW1hbmQgPSAnbHMnO1xuICAgICAgfVxuICAgIH1cbiAgICBpbmZvKHRoaXMsIGBSdW5uaW5nIGNvbW1hbmQgJHtjb21tYW5kfWApO1xuICAgIGF3YWl0IGV4ZWMoY29tbWFuZCwge1xuICAgICAgY3dkOiBub2RlTGF5ZXJQYXRoLFxuICAgICAgZW5jb2Rpbmc6IG51bGwsXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhY2thZ2VyID09PSAneWFybicpIHtcbiAgICAgIGF3YWl0IGV4ZWMoYHlhcm4gYXV0b2NsZWFuIC0taW5pdGAsIHsgY3dkOiBub2RlTGF5ZXJQYXRoLCBlbmNvZGluZzogbnVsbCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsTGF5ZXJzKHNsczogU2VydmVybGVzcyk6IFByb21pc2U8eyBpbnN0YWxsZWRMYXllcnM6IExheWVyW10gfT4ge1xuICAgIGNvbnN0IHsgaW5zdGFsbExheWVycywgYnVsa0luc3RhbGwgPSBmYWxzZSB9ID0gdGhpcy5jb25maWc7XG5cbiAgICBpZiAoIWluc3RhbGxMYXllcnMpIHtcbiAgICAgIHZlcmJvc2UodGhpcywgYFNraXBwaW5nIGluc3RhbGxhdGlvbiBvZiBsYXllcnMgYXMgcGVyIGNvbmZpZ2ApO1xuICAgICAgcmV0dXJuIHsgaW5zdGFsbGVkTGF5ZXJzOiBbXSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGxheWVycyA9IGdldExheWVycyhzbHMpO1xuICAgIGxldCBpbnN0YWxsZWRMYXllcnM6IExheWVyW10gPSBbXTtcbiAgICBpZiAoYnVsa0luc3RhbGwpIHtcbiAgICAgIGNvbnN0IGF0dGVtcHRlZEluc3RhbGxMYXllcnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgT2JqZWN0LmVudHJpZXMobGF5ZXJzKS5tYXAoYXN5bmMgKFtsYXllck5hbWUsIGxheWVyXSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09ICdvYmplY3QnKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgaW5zdGFsbGVkID0gYXdhaXQgdGhpcy5pbnN0YWxsTGF5ZXIoc2xzLCBsYXllciwgbGF5ZXJOYW1lKTtcbiAgICAgICAgICBpZiAoIWluc3RhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlKHNscywgbGF5ZXIucGF0aCk7XG4gICAgICAgICAgcmV0dXJuIGxheWVyO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIGluc3RhbGxlZExheWVycyA9IGF0dGVtcHRlZEluc3RhbGxMYXllcnMuZmlsdGVyKG5vdEVtcHR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBbbGF5ZXJOYW1lLCBsYXllcl0gb2YgT2JqZWN0LmVudHJpZXMobGF5ZXJzKSkge1xuICAgICAgICBpZiAodHlwZW9mIGxheWVyICE9PSAnb2JqZWN0JykgY29udGludWU7XG4gICAgICAgIGNvbnN0IGluc3RhbGxlZCA9IGF3YWl0IHRoaXMuaW5zdGFsbExheWVyKHNscywgbGF5ZXIsIGxheWVyTmFtZSk7XG4gICAgICAgIGlmICghaW5zdGFsbGVkKSBjb250aW51ZTtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGUoc2xzLCBsYXllci5wYXRoKTtcbiAgICAgICAgaW5zdGFsbGVkTGF5ZXJzLnB1c2gobGF5ZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluZm8odGhpcywgYEluc3RhbGxlZCAke2luc3RhbGxlZExheWVycy5sZW5ndGh9IGxheWVyJHtpbnN0YWxsZWRMYXllcnMubGVuZ3RoID4gMSA/ICdzJyA6ICcnfWApO1xuICAgIHJldHVybiB7IGluc3RhbGxlZExheWVycyB9O1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKHNsczogU2VydmVybGVzcywgZm9sZGVyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGNsZWFuLCBtaW5pZnkgfSA9IHRoaXMuY29uZmlnLndlYnBhY2s7XG4gICAgaWYgKCFjbGVhbikgcmV0dXJuO1xuICAgIGNvbnN0IG5vZGVMYXllclBhdGggPSBgJHtmb2xkZXJ9L25vZGVqc2A7XG4gICAgY29uc3QgZXhjbHVkZTogc3RyaW5nW10gPVxuICAgICAgc2xzLnNlcnZpY2U/LnBhY2thZ2U/LmV4Y2x1ZGUgPz9cbiAgICAgIHNscy5zZXJ2aWNlPy5wYWNrYWdlPy5wYXR0ZXJucz8uZmlsdGVyKHAgPT4gcC5zdGFydHNXaXRoKCchJykpPy5tYXAocCA9PiBwLnJlcGxhY2UoL14hLywgJycpKSA/P1xuICAgICAgW107XG4gICAgaW5mbyh0aGlzLCBgQ2xlYW5pbmcgJHtleGNsdWRlLm1hcChydWxlID0+IHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCBydWxlKSkuam9pbignLCAnKX1gKTtcbiAgICBjb25zdCBmaWxlc0RlbGV0ZWQgPSBhd2FpdCBkZWwoZXhjbHVkZS5tYXAocnVsZSA9PiBwYXRoLmpvaW4obm9kZUxheWVyUGF0aCwgcnVsZSkpKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhub2RlTGF5ZXJQYXRoKSAmJiBtaW5pZnkpIHtcbiAgICAgIGF3YWl0IG1pbmlmeUFsbChub2RlTGF5ZXJQYXRoLCB7XG4gICAgICAgIGNvbXByZXNzX2pzb246IHRydWUsXG4gICAgICAgIG1vZHVsZTogdHJ1ZSxcbiAgICAgICAgbWFuZ2xlOiB0cnVlLFxuICAgICAgICBwYWNrYWdlanNvbjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpbmZvKHRoaXMsIGBDbGVhbmVkICR7ZmlsZXNEZWxldGVkLmxlbmd0aH0gZmlsZXMgYXQgJHtub2RlTGF5ZXJQYXRofWApO1xuICB9XG5cbiAgYXN5bmMgdHJhbnNmb3JtTGF5ZXJSZXNvdXJjZXMoc2xzOiBTZXJ2ZXJsZXNzKTogUHJvbWlzZTxUcmFuc2Zvcm1lZExheWVyUmVzb3VyY2VzPiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgbG9nKHRoaXMsICdVbmFibGUgdG8gYWRkIGxheWVycyBjdXJyZW50bHkgYXMgY29uZmlnIHVuYXZhaWxhYmxlJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBleHBvcnRlZExheWVyczogW10sXG4gICAgICAgIHVwZ3JhZGVkTGF5ZXJSZWZlcmVuY2VzOiBbXSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHsgZXhwb3J0TGF5ZXJzLCBleHBvcnRQcmVmaXgsIHVwZ3JhZGVMYXllclJlZmVyZW5jZXMgfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IGxheWVycyA9IGdldExheWVycyhzbHMpO1xuICAgIGNvbnN0IHsgY29tcGlsZWRDbG91ZEZvcm1hdGlvblRlbXBsYXRlOiBjZiB9ID0gc2xzLnNlcnZpY2UucHJvdmlkZXI7XG5cbiAgICBjb25zdCBsYXllcnNLZXlzID0gT2JqZWN0LmtleXMobGF5ZXJzKTtcblxuICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzb3VyY2VzID0gbGF5ZXJzS2V5cy5yZWR1Y2UoXG4gICAgICAocmVzdWx0OiBNYXliZTxUcmFuc2Zvcm1lZExheWVyUmVzb3VyY2VzPiwgaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIGV4cG9ydGVkTGF5ZXJzOiBbXSxcbiAgICAgICAgICAgIHVwZ3JhZGVkTGF5ZXJSZWZlcmVuY2VzOiBbXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hbWUgPSBwYXNjYWxjYXNlKGlkKTtcbiAgICAgICAgY29uc3QgZXhwb3J0TmFtZSA9IGAke25hbWV9TGFtYmRhTGF5ZXJRdWFsaWZpZWRBcm5gO1xuICAgICAgICBjb25zdCBvdXRwdXQ6IE1heWJlPE91dHB1dD4gPSAoY2YuT3V0cHV0cyA/PyB7fSlbZXhwb3J0TmFtZV07XG5cbiAgICAgICAgaWYgKCFvdXRwdXQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV4cG9ydExheWVycykge1xuICAgICAgICAgIG91dHB1dC5FeHBvcnQgPSB7XG4gICAgICAgICAgICBOYW1lOiB7XG4gICAgICAgICAgICAgICdGbjo6U3ViJzogZXhwb3J0UHJlZml4ICsgZXhwb3J0TmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXN1bHQuZXhwb3J0ZWRMYXllcnMucHVzaChvdXRwdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVwZ3JhZGVMYXllclJlZmVyZW5jZXMpIHtcbiAgICAgICAgICBjb25zdCByZXNvdXJjZVJlZiA9IGAke25hbWV9TGFtYmRhTGF5ZXJgO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb25lZFJlc291cmNlUmVmID0gb3V0cHV0LlZhbHVlLlJlZjtcblxuICAgICAgICAgIGlmIChyZXNvdXJjZVJlZiAhPT0gdmVyc2lvbmVkUmVzb3VyY2VSZWYpIHtcbiAgICAgICAgICAgIGluZm8odGhpcywgYFJlcGxhY2luZyByZWZlcmVuY2VzIHRvICR7cmVzb3VyY2VSZWZ9IHdpdGggJHt2ZXJzaW9uZWRSZXNvdXJjZVJlZn1gKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc291cmNlcyA9IGNmLlJlc291cmNlcyBhcyB7IFtrZXk6IHN0cmluZ106IENsb3VkRm9ybWF0aW9uUmVzb3VyY2UgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVzb3VyY2Ugb2YgT2JqZWN0LmVudHJpZXMocmVzb3VyY2VzKSkge1xuICAgICAgICAgICAgICBjb25zdCBbaWQsIHsgVHlwZTogdHlwZSwgUHJvcGVydGllcyA9IHt9IH1dID0gcmVzb3VyY2U7XG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBMYXllcnM6IGxheWVycyA9IFtdLFxuICAgICAgICAgICAgICB9OiBQYXJ0aWFsPENsb3VkRm9ybWF0aW9uUmVzb3VyY2VbJ1Byb3BlcnRpZXMnXSAmIHsgTGF5ZXJzOiBGdW5jdGlvbkxheWVyUmVmZXJlbmNlW10gfT4gPSBQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xuICAgICAgICAgICAgICAgICAgaWYgKGxheWVyLlJlZiA9PT0gcmVzb3VyY2VSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSh0aGlzLCBgJHtpZH06IFVwZGF0aW5nIHJlZmVyZW5jZSB0byBsYXllciB2ZXJzaW9uICR7dmVyc2lvbmVkUmVzb3VyY2VSZWZ9YCk7XG4gICAgICAgICAgICAgICAgICAgIGxheWVyLlJlZiA9IHZlcnNpb25lZFJlc291cmNlUmVmO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQudXBncmFkZWRMYXllclJlZmVyZW5jZXMucHVzaChsYXllcik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmVyYm9zZSh0aGlzLCAnQ0YgYWZ0ZXIgdHJhbnNmb3JtYXRpb246XFxuJywgSlNPTi5zdHJpbmdpZnkoY2YsIG51bGwsIDIpKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZXhwb3J0ZWRMYXllcnM6IFtdLFxuICAgICAgICB1cGdyYWRlZExheWVyUmVmZXJlbmNlczogW10sXG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gKFxuICAgICAgdHJhbnNmb3JtZWRSZXNvdXJjZXMgPz8ge1xuICAgICAgICBleHBvcnRlZExheWVyczogW10sXG4gICAgICAgIHVwZ3JhZGVkTGF5ZXJSZWZlcmVuY2VzOiBbXSxcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iXX0= |
+1
-1
| { | ||
| "name": "serverless-webpack-layers", | ||
| "version": "2.0.3", | ||
| "version": "2.0.4", | ||
| "description": "Plugin for the Serverless framework that offers AWS Lambda layer management using webpack", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
76948
0.6%509
0.99%