parse-server 5.2.1 → 5.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -78,6 +78,16 @@ class FilesRouter {
78
78
  getHandler(req, res) {
79
79
  const config = _Config.default.get(req.params.appId);
80
80
 
81
+ if (!config) {
82
+ res.status(403);
83
+ const err = new _node.default.Error(_node.default.Error.OPERATION_FORBIDDEN, 'Invalid application ID.');
84
+ res.json({
85
+ code: err.code,
86
+ error: err.message
87
+ });
88
+ return;
89
+ }
90
+
81
91
  const filesController = config.filesController;
82
92
  const filename = req.params.filename;
83
93
 
@@ -258,16 +268,15 @@ class FilesRouter {
258
268
  }
259
269
 
260
270
  async metadataHandler(req, res) {
261
- const config = _Config.default.get(req.params.appId);
262
-
263
- const {
264
- filesController
265
- } = config;
266
- const {
267
- filename
268
- } = req.params;
269
-
270
271
  try {
272
+ const config = _Config.default.get(req.params.appId);
273
+
274
+ const {
275
+ filesController
276
+ } = config;
277
+ const {
278
+ filename
279
+ } = req.params;
271
280
  const data = await filesController.getMetadata(filename);
272
281
  res.status(200);
273
282
  res.json(data);
@@ -284,4 +293,4 @@ exports.FilesRouter = FilesRouter;
284
293
  function isFileStreamable(req, filesController) {
285
294
  return req.get('Range') && typeof filesController.adapter.handleFileStream === 'function';
286
295
  }
287
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0ZpbGVzUm91dGVyLmpzIl0sIm5hbWVzIjpbInRyaWdnZXJzIiwicmVxdWlyZSIsImh0dHAiLCJkb3dubG9hZEZpbGVGcm9tVVJJIiwidXJpIiwiUHJvbWlzZSIsInJlcyIsInJlaiIsImdldCIsInJlc3BvbnNlIiwic2V0RGVmYXVsdEVuY29kaW5nIiwiYm9keSIsImhlYWRlcnMiLCJvbiIsImRhdGEiLCJlIiwibWVzc2FnZSIsImFkZEZpbGVEYXRhSWZOZWVkZWQiLCJmaWxlIiwiX3NvdXJjZSIsImZvcm1hdCIsImJhc2U2NCIsIl9wcmV2aW91c1NhdmUiLCJfZGF0YSIsIl9yZXF1ZXN0VGFzayIsIkZpbGVzUm91dGVyIiwiZXhwcmVzc1JvdXRlciIsIm1heFVwbG9hZFNpemUiLCJyb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwiZ2V0SGFuZGxlciIsIm1ldGFkYXRhSGFuZGxlciIsInBvc3QiLCJyZXEiLCJuZXh0IiwiUGFyc2UiLCJFcnJvciIsIklOVkFMSURfRklMRV9OQU1FIiwiQm9keVBhcnNlciIsInJhdyIsInR5cGUiLCJsaW1pdCIsIk1pZGRsZXdhcmVzIiwiaGFuZGxlUGFyc2VIZWFkZXJzIiwiY3JlYXRlSGFuZGxlciIsImRlbGV0ZSIsImVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJkZWxldGVIYW5kbGVyIiwiY29uZmlnIiwiQ29uZmlnIiwicGFyYW1zIiwiYXBwSWQiLCJmaWxlc0NvbnRyb2xsZXIiLCJmaWxlbmFtZSIsImNvbnRlbnRUeXBlIiwibWltZSIsImdldFR5cGUiLCJpc0ZpbGVTdHJlYW1hYmxlIiwiaGFuZGxlRmlsZVN0cmVhbSIsImNhdGNoIiwic3RhdHVzIiwic2V0IiwiZW5kIiwiZ2V0RmlsZURhdGEiLCJ0aGVuIiwibGVuZ3RoIiwidXNlciIsImF1dGgiLCJpc01hc3RlciIsImlzTGlua2VkIiwiQW5vbnltb3VzVXRpbHMiLCJmaWxlVXBsb2FkIiwiZW5hYmxlRm9yQW5vbnltb3VzVXNlciIsIkZJTEVfU0FWRV9FUlJPUiIsImVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyIiwiZW5hYmxlRm9yUHVibGljIiwiZXJyb3IiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwidG9TdHJpbmciLCJGaWxlIiwibWV0YWRhdGEiLCJ0YWdzIiwiZmlsZURhdGEiLCJzZXRUYWdzIiwic2V0TWV0YWRhdGEiLCJmaWxlU2l6ZSIsIkJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJmaWxlT2JqZWN0IiwidHJpZ2dlclJlc3VsdCIsIm1heWJlUnVuRmlsZVRyaWdnZXIiLCJUeXBlcyIsImJlZm9yZVNhdmVGaWxlIiwic2F2ZVJlc3VsdCIsInVybCIsIm5hbWUiLCJfbmFtZSIsImJ1ZmZlckRhdGEiLCJmcm9tIiwiZmlsZU9wdGlvbnMiLCJfbWV0YWRhdGEiLCJmaWxlVGFncyIsIk9iamVjdCIsImtleXMiLCJfdGFncyIsImFzc2lnbiIsImNyZWF0ZUZpbGVSZXN1bHQiLCJjcmVhdGVGaWxlIiwiX3VybCIsInJlc29sdmUiLCJhZnRlclNhdmVGaWxlIiwianNvbiIsImxvZ2dlciIsInJlc29sdmVFcnJvciIsImNvZGUiLCJhZGFwdGVyIiwiZ2V0RmlsZUxvY2F0aW9uIiwiYmVmb3JlRGVsZXRlRmlsZSIsImRlbGV0ZUZpbGUiLCJhZnRlckRlbGV0ZUZpbGUiLCJGSUxFX0RFTEVURV9FUlJPUiIsImdldE1ldGFkYXRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBQ0EsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUVBLE1BQU1FLG1CQUFtQixHQUFHQyxHQUFHLElBQUk7QUFDakMsU0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDL0JMLElBQUFBLElBQUksQ0FDRE0sR0FESCxDQUNPSixHQURQLEVB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QUFHLE1BQU11QyxlQUFlLENBQUNxRSxXQUFoQixDQUE0QnBFLFFBQTVCLENBQW5CO0FBQ0FoRCxNQUFBQSxHQUFHLENBQUN1RCxNQUFKLENBQVcsR0FBWDtBQUNBdkQsTUFBQUEsR0FBRyxDQUFDMEcsSUFBSixDQUFTbEcsSUFBVDtBQUNELEtBSkQsQ0FJRSxPQUFPQyxDQUFQLEVBQVU7QUFDVlQsTUFBQUEsR0FBRyxDQUFDdUQsTUFBSixDQUFXLEdBQVg7QUFDQXZELE1BQUFBLEdBQUcsQ0FBQzBHLElBQUosQ0FBUyxFQUFUO0FBQ0Q7QUFDRjs7QUFwT3NCOzs7O0FBdU96QixTQUFTdEQsZ0JBQVQsQ0FBMEJ4QixHQUExQixFQUErQm1CLGVBQS9CLEVBQWdEO0FBQzlDLFNBQU9uQixHQUFHLENBQUMxQixHQUFKLENBQVEsT0FBUixLQUFvQixPQUFPNkMsZUFBZSxDQUFDK0QsT0FBaEIsQ0FBd0J6RCxnQkFBL0IsS0FBb0QsVUFBL0U7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IEJvZHlQYXJzZXIgZnJvbSAnYm9keS1wYXJzZXInO1xuaW1wb3J0ICogYXMgTWlkZGxld2FyZXMgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IENvbmZpZyBmcm9tICcuLi9Db25maWcnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5jb25zdCB0cmlnZ2VycyA9IHJlcXVpcmUoJy4uL3RyaWdnZXJzJyk7XG5jb25zdCBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xuXG5jb25zdCBkb3dubG9hZEZpbGVGcm9tVVJJID0gdXJpID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgIGh0dHBcbiAgICAgIC5nZXQodXJpLCByZXNwb25zZSA9PiB7XG4gICAgICAgIHJlc3BvbnNlLnNldERlZmF1bHRFbmNvZGluZygnYmFzZTY0Jyk7XG4gICAgICAgIGxldCBib2R5ID0gYGRhdGE6JHtyZXNwb25zZS5oZWFkZXJzWydjb250ZW50LXR5cGUnXX07YmFzZTY0LGA7XG4gICAgICAgIHJlc3BvbnNlLm9uKCdkYXRhJywgZGF0YSA9PiAoYm9keSArPSBkYXRhKSk7XG4gICAgICAgIHJlc3BvbnNlLm9uKCdlbmQnLCAoKSA9PiByZXMoYm9keSkpO1xuICAgICAgfSlcbiAgICAgIC5vbignZXJyb3InLCBlID0+IHtcbiAgICAgICAgcmVqKGBFcnJvciBkb3dubG9hZGluZyBmaWxlIGZyb20gJHt1cml9OiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH0pO1xuICB9KTtcbn07XG5cbmNvbnN0IGFkZEZpbGVEYXRhSWZOZWVkZWQgPSBhc3luYyBmaWxlID0+IHtcbiAgaWYgKGZpbGUuX3NvdXJjZS5mb3JtYXQgPT09ICd1cmknKSB7XG4gICAgY29uc3QgYmFzZTY0ID0gYXdhaXQgZG93bmxvYWRGaWxlRnJvbVVSSShmaWxlLl9zb3VyY2UudXJpKTtcbiAgICBmaWxlLl9wcmV2aW91c1NhdmUgPSBmaWxlO1xuICAgIGZpbGUuX2RhdGEgPSBiYXNlNjQ7XG4gICAgZmlsZS5fcmVxdWVzdFRhc2sgPSBudWxsO1xuICB9XG4gIHJldHVybiBmaWxlO1xufTtcblxuZXhwb3J0IGNsYXNzIEZpbGVzUm91dGVyIHtcbiAgZXhwcmVzc1JvdXRlcih7IG1heFVwbG9hZFNpemUgPSAnMjBNYicgfSA9IHt9KSB7XG4gICAgdmFyIHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG4gICAgcm91dGVyLmdldCgnL2ZpbGVzLzphcHBJZC86ZmlsZW5hbWUnLCB0aGlzLmdldEhhbmRsZXIpO1xuICAgIHJvdXRlci5nZXQoJy9maWxlcy86YXBwSWQvbWV0YWRhdGEvOmZpbGVuYW1lJywgdGhpcy5tZXRhZGF0YUhhbmRsZXIpO1xuXG4gICAgcm91dGVyLnBvc3QoJy9maWxlcycsIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xuICAgICAgbmV4dChuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9GSUxFX05BTUUsICdGaWxlbmFtZSBub3QgcHJvdmlkZWQuJykpO1xuICAgIH0pO1xuXG4gICAgcm91dGVyLnBvc3QoXG4gICAgICAnL2ZpbGVzLzpmaWxlbmFtZScsXG4gICAgICBCb2R5UGFyc2VyLnJhdyh7XG4gICAgICAgIHR5cGU6ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgbGltaXQ6IG1heFVwbG9hZFNpemUsXG4gICAgICB9KSwgLy8gQWxsb3cgdXBsb2FkcyB3aXRob3V0IENvbnRlbnQtVHlwZSwgb3Igd2l0aCBhbnkgQ29udGVudC1UeXBlLlxuICAgICAgTWlkZGxld2FyZXMuaGFuZGxlUGFyc2VIZWFkZXJzLFxuICAgICAgdGhpcy5jcmVhdGVIYW5kbGVyXG4gICAgKTtcblxuICAgIHJvdXRlci5kZWxldGUoXG4gICAgICAnL2ZpbGVzLzpmaWxlbmFtZScsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMsXG4gICAgICBNaWRkbGV3YXJlcy5lbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5kZWxldGVIYW5kbGVyXG4gICAgKTtcbiAgICByZXR1cm4gcm91dGVyO1xuICB9XG5cbiAgZ2V0SGFuZGxlcihyZXEsIHJlcykge1xuICAgIGNvbnN0IGNvbmZpZyA9IENvbmZpZy5nZXQocmVxLnBhcmFtcy5hcHBJZCk7XG4gICAgY29uc3QgZmlsZXNDb250cm9sbGVyID0gY29uZmlnLmZpbGVzQ29udHJvbGxlcjtcbiAgICBjb25zdCBmaWxlbmFtZSA9IHJlcS5wYXJhbXMuZmlsZW5hbWU7XG4gICAgY29uc3QgY29udGVudFR5cGUgPSBtaW1lLmdldFR5cGUoZmlsZW5hbWUpO1xuICAgIGlmIChpc0ZpbGVTdHJlYW1hYmxlKHJlcSwgZmlsZXNDb250cm9sbGVyKSkge1xuICAgICAgZmlsZXNDb250cm9sbGVyLmhhbmRsZUZpbGVTdHJlYW0oY29uZmlnLCBmaWxlbmFtZSwgcmVxLCByZXMsIGNvbnRlbnRUeXBlKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgcmVzLmVuZCgnRmlsZSBub3QgZm91bmQuJyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZXNDb250cm9sbGVyXG4gICAgICAgIC5nZXRGaWxlRGF0YShjb25maWcsIGZpbGVuYW1lKVxuICAgICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgY29udGVudFR5cGUpO1xuICAgICAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtTGVuZ3RoJywgZGF0YS5sZW5ndGgpO1xuICAgICAgICAgIHJlcy5lbmQoZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XG4gICAgICAgICAgcmVzLmVuZCgnRmlsZSBub3QgZm91bmQuJyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUhhbmRsZXIocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBjb25maWcgPSByZXEuY29uZmlnO1xuICAgIGNvbnN0IHVzZXIgPSByZXEuYXV0aC51c2VyO1xuICAgIGNvbnN0IGlzTWFzdGVyID0gcmVxLmF1dGguaXNNYXN0ZXI7XG4gICAgY29uc3QgaXNMaW5rZWQgPSB1c2VyICYmIFBhcnNlLkFub255bW91c1V0aWxzLmlzTGlua2VkKHVzZXIpO1xuICAgIGlmICghaXNNYXN0ZXIgJiYgIWNvbmZpZy5maWxlVXBsb2FkLmVuYWJsZUZvckFub255bW91c1VzZXIgJiYgaXNMaW5rZWQpIHtcbiAgICAgIG5leHQoXG4gICAgICAgIG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsICdGaWxlIHVwbG9hZCBieSBhbm9ueW1vdXMgdXNlciBpcyBkaXNhYmxlZC4nKVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFpc01hc3RlciAmJiAhY29uZmlnLmZpbGVVcGxvYWQuZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXIgJiYgIWlzTGlua2VkICYmIHVzZXIpIHtcbiAgICAgIG5leHQoXG4gICAgICAgIG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICBQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsXG4gICAgICAgICAgJ0ZpbGUgdXBsb2FkIGJ5IGF1dGhlbnRpY2F0ZWQgdXNlciBpcyBkaXNhYmxlZC4nXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNNYXN0ZXIgJiYgIWNvbmZpZy5maWxlVXBsb2FkLmVuYWJsZUZvclB1YmxpYyAmJiAhdXNlcikge1xuICAgICAgbmV4dChuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCAnRmlsZSB1cGxvYWQgYnkgcHVibGljIGlzIGRpc2FibGVkLicpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlsZXNDb250cm9sbGVyID0gY29uZmlnLmZpbGVzQ29udHJvbGxlcjtcbiAgICBjb25zdCB7IGZpbGVuYW1lIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVxLmdldCgnQ29udGVudC10eXBlJyk7XG5cbiAgICBpZiAoIXJlcS5ib2R5IHx8ICFyZXEuYm9keS5sZW5ndGgpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ludmFsaWQgZmlsZSB1cGxvYWQuJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmlsZXNDb250cm9sbGVyLnZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgbmV4dChlcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZTY0ID0gcmVxLmJvZHkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIGNvbnN0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSwgeyBiYXNlNjQgfSwgY29udGVudFR5cGUpO1xuICAgIGNvbnN0IHsgbWV0YWRhdGEgPSB7fSwgdGFncyA9IHt9IH0gPSByZXEuZmlsZURhdGEgfHwge307XG4gICAgZmlsZS5zZXRUYWdzKHRhZ3MpO1xuICAgIGZpbGUuc2V0TWV0YWRhdGEobWV0YWRhdGEpO1xuICAgIGNvbnN0IGZpbGVTaXplID0gQnVmZmVyLmJ5dGVMZW5ndGgocmVxLmJvZHkpO1xuICAgIGNvbnN0IGZpbGVPYmplY3QgPSB7IGZpbGUsIGZpbGVTaXplIH07XG4gICAgdHJ5IHtcbiAgICAgIC8vIHJ1biBiZWZvcmVTYXZlRmlsZSB0cmlnZ2VyXG4gICAgICBjb25zdCB0cmlnZ2VyUmVzdWx0ID0gYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcihcbiAgICAgICAgdHJpZ2dlcnMuVHlwZXMuYmVmb3JlU2F2ZUZpbGUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICBsZXQgc2F2ZVJlc3VsdDtcbiAgICAgIC8vIGlmIGEgbmV3IFBhcnNlRmlsZSBpcyByZXR1cm5lZCBjaGVjayBpZiBpdCdzIGFuIGFscmVhZHkgc2F2ZWQgZmlsZVxuICAgICAgaWYgKHRyaWdnZXJSZXN1bHQgaW5zdGFuY2VvZiBQYXJzZS5GaWxlKSB7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZSA9IHRyaWdnZXJSZXN1bHQ7XG4gICAgICAgIGlmICh0cmlnZ2VyUmVzdWx0LnVybCgpKSB7XG4gICAgICAgICAgLy8gc2V0IGZpbGVTaXplIHRvIG51bGwgYmVjYXVzZSB3ZSB3b250IGtub3cgaG93IGJpZyBpdCBpcyBoZXJlXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlU2l6ZSA9IG51bGw7XG4gICAgICAgICAgc2F2ZVJlc3VsdCA9IHtcbiAgICAgICAgICAgIHVybDogdHJpZ2dlclJlc3VsdC51cmwoKSxcbiAgICAgICAgICAgIG5hbWU6IHRyaWdnZXJSZXN1bHQuX25hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIGZpbGUgcmV0dXJuZWQgYnkgdGhlIHRyaWdnZXIgaGFzIGFscmVhZHkgYmVlbiBzYXZlZCBza2lwIHNhdmluZyBhbnl0aGluZ1xuICAgICAgaWYgKCFzYXZlUmVzdWx0KSB7XG4gICAgICAgIC8vIGlmIHRoZSBQYXJzZUZpbGUgcmV0dXJuZWQgaXMgdHlwZSB1cmksIGRvd25sb2FkIHRoZSBmaWxlIGJlZm9yZSBzYXZpbmcgaXRcbiAgICAgICAgYXdhaXQgYWRkRmlsZURhdGFJZk5lZWRlZChmaWxlT2JqZWN0LmZpbGUpO1xuICAgICAgICAvLyB1cGRhdGUgZmlsZVNpemVcbiAgICAgICAgY29uc3QgYnVmZmVyRGF0YSA9IEJ1ZmZlci5mcm9tKGZpbGVPYmplY3QuZmlsZS5fZGF0YSwgJ2Jhc2U2NCcpO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGVTaXplID0gQnVmZmVyLmJ5dGVMZW5ndGgoYnVmZmVyRGF0YSk7XG4gICAgICAgIC8vIHByZXBhcmUgZmlsZSBvcHRpb25zXG4gICAgICAgIGNvbnN0IGZpbGVPcHRpb25zID0ge1xuICAgICAgICAgIG1ldGFkYXRhOiBmaWxlT2JqZWN0LmZpbGUuX21ldGFkYXRhLFxuICAgICAgICB9O1xuICAgICAgICAvLyBzb21lIHMzLWNvbXBhdGlibGUgcHJvdmlkZXJzIChEaWdpdGFsT2NlYW4sIExpbm9kZSkgZG8gbm90IGFjY2VwdCB0YWdzXG4gICAgICAgIC8vIHNvIHdlIGRvIG5vdCBpbmNsdWRlIHRoZSB0YWdzIG9wdGlvbiBpZiBpdCBpcyBlbXB0eS5cbiAgICAgICAgY29uc3QgZmlsZVRhZ3MgPVxuICAgICAgICAgIE9iamVjdC5rZXlzKGZpbGVPYmplY3QuZmlsZS5fdGFncykubGVuZ3RoID4gMCA/IHsgdGFnczogZmlsZU9iamVjdC5maWxlLl90YWdzIH0gOiB7fTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihmaWxlT3B0aW9ucywgZmlsZVRhZ3MpO1xuICAgICAgICAvLyBzYXZlIGZpbGVcbiAgICAgICAgY29uc3QgY3JlYXRlRmlsZVJlc3VsdCA9IGF3YWl0IGZpbGVzQ29udHJvbGxlci5jcmVhdGVGaWxlKFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX25hbWUsXG4gICAgICAgICAgYnVmZmVyRGF0YSxcbiAgICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3NvdXJjZS50eXBlLFxuICAgICAgICAgIGZpbGVPcHRpb25zXG4gICAgICAgICk7XG4gICAgICAgIC8vIHVwZGF0ZSBmaWxlIHdpdGggbmV3IGRhdGFcbiAgICAgICAgZmlsZU9iamVjdC5maWxlLl9uYW1lID0gY3JlYXRlRmlsZVJlc3VsdC5uYW1lO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3VybCA9IGNyZWF0ZUZpbGVSZXN1bHQudXJsO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3JlcXVlc3RUYXNrID0gbnVsbDtcbiAgICAgICAgZmlsZU9iamVjdC5maWxlLl9wcmV2aW91c1NhdmUgPSBQcm9taXNlLnJlc29sdmUoZmlsZU9iamVjdC5maWxlKTtcbiAgICAgICAgc2F2ZVJlc3VsdCA9IHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUZpbGVSZXN1bHQudXJsLFxuICAgICAgICAgIG5hbWU6IGNyZWF0ZUZpbGVSZXN1bHQubmFtZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIHJ1biBhZnRlclNhdmVGaWxlIHRyaWdnZXJcbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyU2F2ZUZpbGUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICByZXMuc3RhdHVzKDIwMSk7XG4gICAgICByZXMuc2V0KCdMb2NhdGlvbicsIHNhdmVSZXN1bHQudXJsKTtcbiAgICAgIHJlcy5qc29uKHNhdmVSZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignRXJyb3IgY3JlYXRpbmcgYSBmaWxlOiAnLCBlKTtcbiAgICAgIGNvbnN0IGVycm9yID0gdHJpZ2dlcnMucmVzb2x2ZUVycm9yKGUsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiBgQ291bGQgbm90IHN0b3JlIGZpbGU6ICR7ZmlsZU9iamVjdC5maWxlLl9uYW1lfS5gLFxuICAgICAgfSk7XG4gICAgICBuZXh0KGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVIYW5kbGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZmlsZXNDb250cm9sbGVyIH0gPSByZXEuY29uZmlnO1xuICAgICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIC8vIHJ1biBiZWZvcmVEZWxldGVGaWxlIHRyaWdnZXJcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSk7XG4gICAgICBmaWxlLl91cmwgPSBmaWxlc0NvbnRyb2xsZXIuYWRhcHRlci5nZXRGaWxlTG9jYXRpb24ocmVxLmNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgY29uc3QgZmlsZU9iamVjdCA9IHsgZmlsZSwgZmlsZVNpemU6IG51bGwgfTtcbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZURlbGV0ZUZpbGUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIHJlcS5hdXRoXG4gICAgICApO1xuICAgICAgLy8gZGVsZXRlIGZpbGVcbiAgICAgIGF3YWl0IGZpbGVzQ29udHJvbGxlci5kZWxldGVGaWxlKHJlcS5jb25maWcsIGZpbGVuYW1lKTtcbiAgICAgIC8vIHJ1biBhZnRlckRlbGV0ZUZpbGUgdHJpZ2dlclxuICAgICAgYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcihcbiAgICAgICAgdHJpZ2dlcnMuVHlwZXMuYWZ0ZXJEZWxldGVGaWxlLFxuICAgICAgICBmaWxlT2JqZWN0LFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICByZXEuYXV0aFxuICAgICAgKTtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgIC8vIFRPRE86IHJldHVybiB1c2VmdWwgSlNPTiBoZXJlP1xuICAgICAgcmVzLmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignRXJyb3IgZGVsZXRpbmcgYSBmaWxlOiAnLCBlKTtcbiAgICAgIGNvbnN0IGVycm9yID0gdHJpZ2dlcnMucmVzb2x2ZUVycm9yKGUsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuRklMRV9ERUxFVEVfRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgZGVsZXRlIGZpbGUuJyxcbiAgICAgIH0pO1xuICAgICAgbmV4dChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWV0YWRhdGFIYW5kbGVyKHJlcSwgcmVzKSB7XG4gICAgY29uc3QgY29uZmlnID0gQ29uZmlnLmdldChyZXEucGFyYW1zLmFwcElkKTtcbiAgICBjb25zdCB7IGZpbGVzQ29udHJvbGxlciB9ID0gY29uZmlnO1xuICAgIGNvbnN0IHsgZmlsZW5hbWUgfSA9IHJlcS5wYXJhbXM7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoZmlsZW5hbWUpO1xuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgcmVzLmpzb24oZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgcmVzLmpzb24oe30pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0ZpbGVTdHJlYW1hYmxlKHJlcSwgZmlsZXNDb250cm9sbGVyKSB7XG4gIHJldHVybiByZXEuZ2V0KCdSYW5nZScpICYmIHR5cGVvZiBmaWxlc0NvbnRyb2xsZXIuYWRhcHRlci5oYW5kbGVGaWxlU3RyZWFtID09PSAnZnVuY3Rpb24nO1xufVxuIl19
296
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0ZpbGVzUm91dGVyLmpzIl0sIm5hbWVzIjpbInRyaWdnZXJzIiwicmVxdWlyZSIsImh0dHAiLCJkb3dubG9hZEZpbGVGcm9tVVJJIiwidXJpIiwiUHJvbWlzZSIsInJlcyIsInJlaiIsImdldCIsInJlc3BvbnNlIiwic2V0RGVmYXVsdEVuY29kaW5nIiwiYm9keSIsImhlYWRlcnMiLCJvbiIsImRhdGEiLCJlIiwibWVzc2FnZSIsImFkZEZpbGVEYXRhSWZOZWVkZWQiLCJmaWxlIiwiX3NvdXJjZSIsImZvcm1hdCIsImJhc2U2NCIsIl9wcmV2aW91c1NhdmUiLCJfZGF0YSIsIl9yZXF1ZXN0VGFzayIsIkZpbGVzUm91dGVyIiwiZXhwcmVzc1JvdXRlciIsIm1heFVwbG9hZFNpemUiLCJyb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwiZ2V0SGFuZGxlciIsIm1ldGFkYXRhSGFuZGxlciIsInBvc3QiLCJyZXEiLCJuZXh0IiwiUGFyc2UiLCJFcnJvciIsIklOVkFMSURfRklMRV9OQU1FIiwiQm9keVBhcnNlciIsInJhdyIsInR5cGUiLCJsaW1pdCIsIk1pZGRsZXdhcmVzIiwiaGFuZGxlUGFyc2VIZWFkZXJzIiwiY3JlYXRlSGFuZGxlciIsImRlbGV0ZSIsImVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJkZWxldGVIYW5kbGVyIiwiY29uZmlnIiwiQ29uZmlnIiwicGFyYW1zIiwiYXBwSWQiLCJzdGF0dXMiLCJlcnIiLCJPUEVSQVRJT05fRk9SQklEREVOIiwianNvbiIsImNvZGUiLCJlcnJvciIsImZpbGVzQ29udHJvbGxlciIsImZpbGVuYW1lIiwiY29udGVudFR5cGUiLCJtaW1lIiwiZ2V0VHlwZSIsImlzRmlsZVN0cmVhbWFibGUiLCJoYW5kbGVGaWxlU3RyZWFtIiwiY2F0Y2giLCJzZXQiLCJlbmQiLCJnZXRGaWxlRGF0YSIsInRoZW4iLCJsZW5ndGgiLCJ1c2VyIiwiYXV0aCIsImlzTWFzdGVyIiwiaXNMaW5rZWQiLCJBbm9ueW1vdXNVdGlscyIsImZpbGVVcGxvYWQiLCJlbmFibGVGb3JBbm9ueW1vdXNVc2VyIiwiRklMRV9TQVZFX0VSUk9SIiwiZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXIiLCJlbmFibGVGb3JQdWJsaWMiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwidG9TdHJpbmciLCJGaWxlIiwibWV0YWRhdGEiLCJ0YWdzIiwiZmlsZURhdGEiLCJzZXRUYWdzIiwic2V0TWV0YWRhdGEiLCJmaWxlU2l6ZSIsIkJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJmaWxlT2JqZWN0IiwidHJpZ2dlclJlc3VsdCIsIm1heWJlUnVuRmlsZVRyaWdnZXIiLCJUeXBlcyIsImJlZm9yZVNhdmVGaWxlIiwic2F2ZVJlc3VsdCIsInVybCIsIm5hbWUiLCJfbmFtZSIsImJ1ZmZlckRhdGEiLCJmcm9tIiwiZmlsZU9wdGlvbnMiLCJfbWV0YWRhdGEiLCJmaWxlVGFncyIsIk9iamVjdCIsImtleXMiLCJfdGFncyIsImFzc2lnbiIsImNyZWF0ZUZpbGVSZXN1bHQiLCJjcmVhdGVGaWxlIiwiX3VybCIsInJlc29sdmUiLCJhZnRlclNhdmVGaWxlIiwibG9nZ2VyIiwicmVzb2x2ZUVycm9yIiwiYWRhcHRlciIsImdldEZpbGVMb2NhdGlvbiIsImJlZm9yZURlbGV0ZUZpbGUiLCJkZWxldGVGaWxlIiwiYWZ0ZXJEZWxldGVGaWxlIiwiRklMRV9ERUxFVEVfRVJST1IiLCJnZXRNZXRhZGF0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUNBLE1BQU1BLFFBQVEsR0FBR0MsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNRSxtQkFBbUIsR0FBR0MsR0FBRyxJQUFJO0FBQ2pDLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQy9CTCxJQUFBQSxJ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LEVBQUU7QUFGNEIsT0FBekIsQ0FBZDtBQUlBbUIsTUFBQUEsSUFBSSxDQUFDdUIsS0FBRCxDQUFKO0FBQ0Q7QUFDRjs7QUFFb0IsUUFBZjFCLGVBQWUsQ0FBQ0UsR0FBRCxFQUFNNUIsR0FBTixFQUFXO0FBQzlCLFFBQUk7QUFDRixZQUFNMkMsTUFBTSxHQUFHQyxnQkFBTzFDLEdBQVAsQ0FBVzBCLEdBQUcsQ0FBQ2lCLE1BQUosQ0FBV0MsS0FBdEIsQ0FBZjs7QUFDQSxZQUFNO0FBQUVPLFFBQUFBO0FBQUYsVUFBc0JWLE1BQTVCO0FBQ0EsWUFBTTtBQUFFVyxRQUFBQTtBQUFGLFVBQWUxQixHQUFHLENBQUNpQixNQUF6QjtBQUNBLFlBQU1yQyxJQUFJLEdBQUcsTUFBTTZDLGVBQWUsQ0FBQ2lFLFdBQWhCLENBQTRCaEUsUUFBNUIsQ0FBbkI7QUFDQXRELE1BQUFBLEdBQUcsQ0FBQytDLE1BQUosQ0FBVyxHQUFYO0FBQ0EvQyxNQUFBQSxHQUFHLENBQUNrRCxJQUFKLENBQVMxQyxJQUFUO0FBQ0QsS0FQRCxDQU9FLE9BQU9DLENBQVAsRUFBVTtBQUNWVCxNQUFBQSxHQUFHLENBQUMrQyxNQUFKLENBQVcsR0FBWDtBQUNBL0MsTUFBQUEsR0FBRyxDQUFDa0QsSUFBSixDQUFTLEVBQVQ7QUFDRDtBQUNGOztBQTFPc0I7Ozs7QUE2T3pCLFNBQVNRLGdCQUFULENBQTBCOUIsR0FBMUIsRUFBK0J5QixlQUEvQixFQUFnRDtBQUM5QyxTQUFPekIsR0FBRyxDQUFDMUIsR0FBSixDQUFRLE9BQVIsS0FBb0IsT0FBT21ELGVBQWUsQ0FBQzJELE9BQWhCLENBQXdCckQsZ0JBQS9CLEtBQW9ELFVBQS9FO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCBCb2R5UGFyc2VyIGZyb20gJ2JvZHktcGFyc2VyJztcbmltcG9ydCAqIGFzIE1pZGRsZXdhcmVzIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi4vQ29uZmlnJztcbmltcG9ydCBtaW1lIGZyb20gJ21pbWUnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuY29uc3QgdHJpZ2dlcnMgPSByZXF1aXJlKCcuLi90cmlnZ2VycycpO1xuY29uc3QgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcblxuY29uc3QgZG93bmxvYWRGaWxlRnJvbVVSSSA9IHVyaSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICBodHRwXG4gICAgICAuZ2V0KHVyaSwgcmVzcG9uc2UgPT4ge1xuICAgICAgICByZXNwb25zZS5zZXREZWZhdWx0RW5jb2RpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICBsZXQgYm9keSA9IGBkYXRhOiR7cmVzcG9uc2UuaGVhZGVyc1snY29udGVudC10eXBlJ119O2Jhc2U2NCxgO1xuICAgICAgICByZXNwb25zZS5vbignZGF0YScsIGRhdGEgPT4gKGJvZHkgKz0gZGF0YSkpO1xuICAgICAgICByZXNwb25zZS5vbignZW5kJywgKCkgPT4gcmVzKGJvZHkpKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2Vycm9yJywgZSA9PiB7XG4gICAgICAgIHJlaihgRXJyb3IgZG93bmxvYWRpbmcgZmlsZSBmcm9tICR7dXJpfTogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9KTtcbiAgfSk7XG59O1xuXG5jb25zdCBhZGRGaWxlRGF0YUlmTmVlZGVkID0gYXN5bmMgZmlsZSA9PiB7XG4gIGlmIChmaWxlLl9zb3VyY2UuZm9ybWF0ID09PSAndXJpJykge1xuICAgIGNvbnN0IGJhc2U2NCA9IGF3YWl0IGRvd25sb2FkRmlsZUZyb21VUkkoZmlsZS5fc291cmNlLnVyaSk7XG4gICAgZmlsZS5fcHJldmlvdXNTYXZlID0gZmlsZTtcbiAgICBmaWxlLl9kYXRhID0gYmFzZTY0O1xuICAgIGZpbGUuX3JlcXVlc3RUYXNrID0gbnVsbDtcbiAgfVxuICByZXR1cm4gZmlsZTtcbn07XG5cbmV4cG9ydCBjbGFzcyBGaWxlc1JvdXRlciB7XG4gIGV4cHJlc3NSb3V0ZXIoeyBtYXhVcGxvYWRTaXplID0gJzIwTWInIH0gPSB7fSkge1xuICAgIHZhciByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuICAgIHJvdXRlci5nZXQoJy9maWxlcy86YXBwSWQvOmZpbGVuYW1lJywgdGhpcy5nZXRIYW5kbGVyKTtcbiAgICByb3V0ZXIuZ2V0KCcvZmlsZXMvOmFwcElkL21ldGFkYXRhLzpmaWxlbmFtZScsIHRoaXMubWV0YWRhdGFIYW5kbGVyKTtcblxuICAgIHJvdXRlci5wb3N0KCcvZmlsZXMnLCBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfRklMRV9OQU1FLCAnRmlsZW5hbWUgbm90IHByb3ZpZGVkLicpKTtcbiAgICB9KTtcblxuICAgIHJvdXRlci5wb3N0KFxuICAgICAgJy9maWxlcy86ZmlsZW5hbWUnLFxuICAgICAgQm9keVBhcnNlci5yYXcoe1xuICAgICAgICB0eXBlOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGxpbWl0OiBtYXhVcGxvYWRTaXplLFxuICAgICAgfSksIC8vIEFsbG93IHVwbG9hZHMgd2l0aG91dCBDb250ZW50LVR5cGUsIG9yIHdpdGggYW55IENvbnRlbnQtVHlwZS5cbiAgICAgIE1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlSGVhZGVycyxcbiAgICAgIHRoaXMuY3JlYXRlSGFuZGxlclxuICAgICk7XG5cbiAgICByb3V0ZXIuZGVsZXRlKFxuICAgICAgJy9maWxlcy86ZmlsZW5hbWUnLFxuICAgICAgTWlkZGxld2FyZXMuaGFuZGxlUGFyc2VIZWFkZXJzLFxuICAgICAgTWlkZGxld2FyZXMuZW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuZGVsZXRlSGFuZGxlclxuICAgICk7XG4gICAgcmV0dXJuIHJvdXRlcjtcbiAgfVxuXG4gIGdldEhhbmRsZXIocmVxLCByZXMpIHtcbiAgICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KHJlcS5wYXJhbXMuYXBwSWQpO1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICByZXMuc3RhdHVzKDQwMyk7XG4gICAgICBjb25zdCBlcnIgPSBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT1BFUkFUSU9OX0ZPUkJJRERFTiwgJ0ludmFsaWQgYXBwbGljYXRpb24gSUQuJyk7XG4gICAgICByZXMuanNvbih7IGNvZGU6IGVyci5jb2RlLCBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbGVzQ29udHJvbGxlciA9IGNvbmZpZy5maWxlc0NvbnRyb2xsZXI7XG4gICAgY29uc3QgZmlsZW5hbWUgPSByZXEucGFyYW1zLmZpbGVuYW1lO1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWltZS5nZXRUeXBlKGZpbGVuYW1lKTtcbiAgICBpZiAoaXNGaWxlU3RyZWFtYWJsZShyZXEsIGZpbGVzQ29udHJvbGxlcikpIHtcbiAgICAgIGZpbGVzQ29udHJvbGxlci5oYW5kbGVGaWxlU3RyZWFtKGNvbmZpZywgZmlsZW5hbWUsIHJlcSwgcmVzLCBjb250ZW50VHlwZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XG4gICAgICAgIHJlcy5lbmQoJ0ZpbGUgbm90IGZvdW5kLicpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGVzQ29udHJvbGxlclxuICAgICAgICAuZ2V0RmlsZURhdGEoY29uZmlnLCBmaWxlbmFtZSlcbiAgICAgICAgLnRoZW4oZGF0YSA9PiB7XG4gICAgICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIGNvbnRlbnRUeXBlKTtcbiAgICAgICAgICByZXMuc2V0KCdDb250ZW50LUxlbmd0aCcsIGRhdGEubGVuZ3RoKTtcbiAgICAgICAgICByZXMuZW5kKGRhdGEpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgICAgICByZXMuc2V0KCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xuICAgICAgICAgIHJlcy5lbmQoJ0ZpbGUgbm90IGZvdW5kLicpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjcmVhdGVIYW5kbGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBjb25zdCB1c2VyID0gcmVxLmF1dGgudXNlcjtcbiAgICBjb25zdCBpc01hc3RlciA9IHJlcS5hdXRoLmlzTWFzdGVyO1xuICAgIGNvbnN0IGlzTGlua2VkID0gdXNlciAmJiBQYXJzZS5Bbm9ueW1vdXNVdGlscy5pc0xpbmtlZCh1c2VyKTtcbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JBbm9ueW1vdXNVc2VyICYmIGlzTGlua2VkKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCAnRmlsZSB1cGxvYWQgYnkgYW5vbnltb3VzIHVzZXIgaXMgZGlzYWJsZWQuJylcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNNYXN0ZXIgJiYgIWNvbmZpZy5maWxlVXBsb2FkLmVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyICYmICFpc0xpbmtlZCAmJiB1c2VyKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICdGaWxlIHVwbG9hZCBieSBhdXRoZW50aWNhdGVkIHVzZXIgaXMgZGlzYWJsZWQuJ1xuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JQdWJsaWMgJiYgIXVzZXIpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ZpbGUgdXBsb2FkIGJ5IHB1YmxpYyBpcyBkaXNhYmxlZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbGVzQ29udHJvbGxlciA9IGNvbmZpZy5maWxlc0NvbnRyb2xsZXI7XG4gICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlcS5nZXQoJ0NvbnRlbnQtdHlwZScpO1xuXG4gICAgaWYgKCFyZXEuYm9keSB8fCAhcmVxLmJvZHkubGVuZ3RoKSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsICdJbnZhbGlkIGZpbGUgdXBsb2FkLicpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpbGVzQ29udHJvbGxlci52YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKTtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2U2NCA9IHJlcS5ib2R5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IFBhcnNlLkZpbGUoZmlsZW5hbWUsIHsgYmFzZTY0IH0sIGNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCB7IG1ldGFkYXRhID0ge30sIHRhZ3MgPSB7fSB9ID0gcmVxLmZpbGVEYXRhIHx8IHt9O1xuICAgIGZpbGUuc2V0VGFncyh0YWdzKTtcbiAgICBmaWxlLnNldE1ldGFkYXRhKG1ldGFkYXRhKTtcbiAgICBjb25zdCBmaWxlU2l6ZSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlcS5ib2R5KTtcbiAgICBjb25zdCBmaWxlT2JqZWN0ID0geyBmaWxlLCBmaWxlU2l6ZSB9O1xuICAgIHRyeSB7XG4gICAgICAvLyBydW4gYmVmb3JlU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZVNhdmVGaWxlLFxuICAgICAgICBmaWxlT2JqZWN0LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcS5hdXRoXG4gICAgICApO1xuICAgICAgbGV0IHNhdmVSZXN1bHQ7XG4gICAgICAvLyBpZiBhIG5ldyBQYXJzZUZpbGUgaXMgcmV0dXJuZWQgY2hlY2sgaWYgaXQncyBhbiBhbHJlYWR5IHNhdmVkIGZpbGVcbiAgICAgIGlmICh0cmlnZ2VyUmVzdWx0IGluc3RhbmNlb2YgUGFyc2UuRmlsZSkge1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUgPSB0cmlnZ2VyUmVzdWx0O1xuICAgICAgICBpZiAodHJpZ2dlclJlc3VsdC51cmwoKSkge1xuICAgICAgICAgIC8vIHNldCBmaWxlU2l6ZSB0byBudWxsIGJlY2F1c2Ugd2Ugd29udCBrbm93IGhvdyBiaWcgaXQgaXMgaGVyZVxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZVNpemUgPSBudWxsO1xuICAgICAgICAgIHNhdmVSZXN1bHQgPSB7XG4gICAgICAgICAgICB1cmw6IHRyaWdnZXJSZXN1bHQudXJsKCksXG4gICAgICAgICAgICBuYW1lOiB0cmlnZ2VyUmVzdWx0Ll9uYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSBmaWxlIHJldHVybmVkIGJ5IHRoZSB0cmlnZ2VyIGhhcyBhbHJlYWR5IGJlZW4gc2F2ZWQgc2tpcCBzYXZpbmcgYW55dGhpbmdcbiAgICAgIGlmICghc2F2ZVJlc3VsdCkge1xuICAgICAgICAvLyBpZiB0aGUgUGFyc2VGaWxlIHJldHVybmVkIGlzIHR5cGUgdXJpLCBkb3dubG9hZCB0aGUgZmlsZSBiZWZvcmUgc2F2aW5nIGl0XG4gICAgICAgIGF3YWl0IGFkZEZpbGVEYXRhSWZOZWVkZWQoZmlsZU9iamVjdC5maWxlKTtcbiAgICAgICAgLy8gdXBkYXRlIGZpbGVTaXplXG4gICAgICAgIGNvbnN0IGJ1ZmZlckRhdGEgPSBCdWZmZXIuZnJvbShmaWxlT2JqZWN0LmZpbGUuX2RhdGEsICdiYXNlNjQnKTtcbiAgICAgICAgZmlsZU9iamVjdC5maWxlU2l6ZSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKGJ1ZmZlckRhdGEpO1xuICAgICAgICAvLyBwcmVwYXJlIGZpbGUgb3B0aW9uc1xuICAgICAgICBjb25zdCBmaWxlT3B0aW9ucyA9IHtcbiAgICAgICAgICBtZXRhZGF0YTogZmlsZU9iamVjdC5maWxlLl9tZXRhZGF0YSxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gc29tZSBzMy1jb21wYXRpYmxlIHByb3ZpZGVycyAoRGlnaXRhbE9jZWFuLCBMaW5vZGUpIGRvIG5vdCBhY2NlcHQgdGFnc1xuICAgICAgICAvLyBzbyB3ZSBkbyBub3QgaW5jbHVkZSB0aGUgdGFncyBvcHRpb24gaWYgaXQgaXMgZW1wdHkuXG4gICAgICAgIGNvbnN0IGZpbGVUYWdzID1cbiAgICAgICAgICBPYmplY3Qua2V5cyhmaWxlT2JqZWN0LmZpbGUuX3RhZ3MpLmxlbmd0aCA+IDAgPyB7IHRhZ3M6IGZpbGVPYmplY3QuZmlsZS5fdGFncyB9IDoge307XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZmlsZU9wdGlvbnMsIGZpbGVUYWdzKTtcbiAgICAgICAgLy8gc2F2ZSBmaWxlXG4gICAgICAgIGNvbnN0IGNyZWF0ZUZpbGVSZXN1bHQgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuY3JlYXRlRmlsZShcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlLl9uYW1lLFxuICAgICAgICAgIGJ1ZmZlckRhdGEsXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlLl9zb3VyY2UudHlwZSxcbiAgICAgICAgICBmaWxlT3B0aW9uc1xuICAgICAgICApO1xuICAgICAgICAvLyB1cGRhdGUgZmlsZSB3aXRoIG5ldyBkYXRhXG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fbmFtZSA9IGNyZWF0ZUZpbGVSZXN1bHQubmFtZTtcbiAgICAgICAgZmlsZU9iamVjdC5maWxlLl91cmwgPSBjcmVhdGVGaWxlUmVzdWx0LnVybDtcbiAgICAgICAgZmlsZU9iamVjdC5maWxlLl9yZXF1ZXN0VGFzayA9IG51bGw7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fcHJldmlvdXNTYXZlID0gUHJvbWlzZS5yZXNvbHZlKGZpbGVPYmplY3QuZmlsZSk7XG4gICAgICAgIHNhdmVSZXN1bHQgPSB7XG4gICAgICAgICAgdXJsOiBjcmVhdGVGaWxlUmVzdWx0LnVybCxcbiAgICAgICAgICBuYW1lOiBjcmVhdGVGaWxlUmVzdWx0Lm5hbWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBydW4gYWZ0ZXJTYXZlRmlsZSB0cmlnZ2VyXG4gICAgICBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5hZnRlclNhdmVGaWxlLFxuICAgICAgICBmaWxlT2JqZWN0LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcS5hdXRoXG4gICAgICApO1xuICAgICAgcmVzLnN0YXR1cygyMDEpO1xuICAgICAgcmVzLnNldCgnTG9jYXRpb24nLCBzYXZlUmVzdWx0LnVybCk7XG4gICAgICByZXMuanNvbihzYXZlUmVzdWx0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUixcbiAgICAgICAgbWVzc2FnZTogYENvdWxkIG5vdCBzdG9yZSBmaWxlOiAke2ZpbGVPYmplY3QuZmlsZS5fbmFtZX0uYCxcbiAgICAgIH0pO1xuICAgICAgbmV4dChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGZpbGVzQ29udHJvbGxlciB9ID0gcmVxLmNvbmZpZztcbiAgICAgIGNvbnN0IHsgZmlsZW5hbWUgfSA9IHJlcS5wYXJhbXM7XG4gICAgICAvLyBydW4gYmVmb3JlRGVsZXRlRmlsZSB0cmlnZ2VyXG4gICAgICBjb25zdCBmaWxlID0gbmV3IFBhcnNlLkZpbGUoZmlsZW5hbWUpO1xuICAgICAgZmlsZS5fdXJsID0gZmlsZXNDb250cm9sbGVyLmFkYXB0ZXIuZ2V0RmlsZUxvY2F0aW9uKHJlcS5jb25maWcsIGZpbGVuYW1lKTtcbiAgICAgIGNvbnN0IGZpbGVPYmplY3QgPSB7IGZpbGUsIGZpbGVTaXplOiBudWxsIH07XG4gICAgICBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVEZWxldGVGaWxlLFxuICAgICAgICBmaWxlT2JqZWN0LFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICByZXEuYXV0aFxuICAgICAgKTtcbiAgICAgIC8vIGRlbGV0ZSBmaWxlXG4gICAgICBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuZGVsZXRlRmlsZShyZXEuY29uZmlnLCBmaWxlbmFtZSk7XG4gICAgICAvLyBydW4gYWZ0ZXJEZWxldGVGaWxlIHRyaWdnZXJcbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyRGVsZXRlRmlsZSxcbiAgICAgICAgZmlsZU9iamVjdCxcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICAvLyBUT0RPOiByZXR1cm4gdXNlZnVsIEpTT04gaGVyZT9cbiAgICAgIHJlcy5lbmQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGRlbGV0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfREVMRVRFX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGRlbGV0ZSBmaWxlLicsXG4gICAgICB9KTtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1ldGFkYXRhSGFuZGxlcihyZXEsIHJlcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KHJlcS5wYXJhbXMuYXBwSWQpO1xuICAgICAgY29uc3QgeyBmaWxlc0NvbnRyb2xsZXIgfSA9IGNvbmZpZztcbiAgICAgIGNvbnN0IHsgZmlsZW5hbWUgfSA9IHJlcS5wYXJhbXM7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlsZXNDb250cm9sbGVyLmdldE1ldGFkYXRhKGZpbGVuYW1lKTtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgIHJlcy5qc29uKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgIHJlcy5qc29uKHt9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNGaWxlU3RyZWFtYWJsZShyZXEsIGZpbGVzQ29udHJvbGxlcikge1xuICByZXR1cm4gcmVxLmdldCgnUmFuZ2UnKSAmJiB0eXBlb2YgZmlsZXNDb250cm9sbGVyLmFkYXB0ZXIuaGFuZGxlRmlsZVN0cmVhbSA9PT0gJ2Z1bmN0aW9uJztcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-server",
3
- "version": "5.2.1",
3
+ "version": "5.2.4",
4
4
  "description": "An express module providing a Parse-compatible API server",
5
5
  "main": "lib/index.js",
6
6
  "repository": {