verdaccio 6.0.5 → 6.1.0

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.
@@ -33,10 +33,10 @@ function _default(route, auth, storage) {
33
33
  };
34
34
 
35
35
  // tagging a package
36
- route.put('/:package/:tag', can('publish'), (0, _middleware.media)(_mime.default.getType('json')), tag_package_version);
37
- route.post('/-/package/:package/dist-tags/:tag', can('publish'), (0, _middleware.media)(_mime.default.getType('json')), tag_package_version);
38
- route.put('/-/package/:package/dist-tags/:tag', can('publish'), (0, _middleware.media)(_mime.default.getType('json')), tag_package_version);
39
- route.delete('/-/package/:package/dist-tags/:tag', can('publish'), function (req, res, next) {
36
+ route.put(_middleware.DIST_TAGS_API_ENDPOINTS.tagging, can('publish'), (0, _middleware.media)(_mime.default.getType('json')), tag_package_version);
37
+ route.post(_middleware.DIST_TAGS_API_ENDPOINTS.tagging_package, can('publish'), (0, _middleware.media)(_mime.default.getType('json')), tag_package_version);
38
+ route.put(_middleware.DIST_TAGS_API_ENDPOINTS.tagging_package, can('publish'), (0, _middleware.media)(_mime.default.getType('json')), tag_package_version);
39
+ route.delete(_middleware.DIST_TAGS_API_ENDPOINTS.tagging_package, can('publish'), function (req, res, next) {
40
40
  const tags = {};
41
41
  tags[req.params.tag] = null;
42
42
  storage.mergeTags(req.params.package, tags, function (err) {
@@ -49,7 +49,7 @@ function _default(route, auth, storage) {
49
49
  });
50
50
  });
51
51
  });
52
- route.get('/-/package/:package/dist-tags', can('access'), function (req, res, next) {
52
+ route.get(_middleware.DIST_TAGS_API_ENDPOINTS.get_dist_tags, can('access'), function (req, res, next) {
53
53
  storage.getPackage({
54
54
  name: req.params.package,
55
55
  uplinksLook: true,
@@ -62,7 +62,7 @@ function _default(route, auth, storage) {
62
62
  }
63
63
  });
64
64
  });
65
- route.post('/-/package/:package/dist-tags', can('publish'), function (req, res, next) {
65
+ route.post(_middleware.DIST_TAGS_API_ENDPOINTS.get_dist_tags, can('publish'), function (req, res, next) {
66
66
  storage.mergeTags(req.params.package, req.body, function (err) {
67
67
  if (err) {
68
68
  return next(err);
@@ -74,4 +74,4 @@ function _default(route, auth, storage) {
74
74
  });
75
75
  });
76
76
  }
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWltZSIsIl9taWRkbGV3YXJlIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsInN0b3JhZ2UiLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwidGFnX3BhY2thZ2VfdmVyc2lvbiIsInJlcSIsInJlcyIsIm5leHQiLCJfIiwiaXNTdHJpbmciLCJib2R5IiwidGFncyIsInRhZyIsIm1lcmdlVGFncyIsInBhY2thZ2UiLCJlcnIiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsIkFQSV9NRVNTQUdFIiwiVEFHX0FEREVEIiwicHV0IiwibWVkaWEiLCJtaW1lIiwiZ2V0VHlwZSIsInBvc3QiLCJkZWxldGUiLCJUQUdfUkVNT1ZFRCIsImdldCIsImdldFBhY2thZ2UiLCJuYW1lIiwidXBsaW5rc0xvb2siLCJjYWxsYmFjayIsImluZm8iLCJESVNUX1RBR1MiLCJUQUdfVVBEQVRFRCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL2Rpc3QtdGFncy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcblxuaW1wb3J0IHsgYWxsb3csIG1lZGlhIH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgQVBJX01FU1NBR0UsIERJU1RfVEFHUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IEF1dGgsIHN0b3JhZ2U6IFN0b3JhZ2UpOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gICAgYWZ0ZXJBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICB9KTtcbiAgY29uc3QgdGFnX3BhY2thZ2VfdmVyc2lvbiA9IGZ1bmN0aW9uIChcbiAgICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICAgIHJlczogJFJlc3BvbnNlRXh0ZW5kLFxuICAgIG5leHQ6ICROZXh0RnVuY3Rpb25WZXJcbiAgKTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgaWYgKF8uaXNTdHJpbmcocmVxLmJvZHkpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIG5leHQoJ3JvdXRlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFncyA9IHt9O1xuICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gcmVxLmJvZHk7XG4gICAgc3RvcmFnZS5tZXJnZVRhZ3MocmVxLnBhcmFtcy5wYWNrYWdlLCB0YWdzLCBmdW5jdGlvbiAoZXJyOiBFcnJvcik6ICROZXh0RnVuY3Rpb25WZXIge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlRBR19BRERFRCB9KTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyB0YWdnaW5nIGEgcGFja2FnZVxuICByb3V0ZS5wdXQoJy86cGFja2FnZS86dGFnJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgdGFnX3BhY2thZ2VfdmVyc2lvbik7XG5cbiAgcm91dGUucG9zdChcbiAgICAnLy0vcGFja2FnZS86cGFja2FnZS9kaXN0LXRhZ3MvOnRhZycsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgIHRhZ19wYWNrYWdlX3ZlcnNpb25cbiAgKTtcblxuICByb3V0ZS5wdXQoXG4gICAgJy8tL3BhY2thZ2UvOnBhY2thZ2UvZGlzdC10YWdzLzp0YWcnLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICB0YWdfcGFja2FnZV92ZXJzaW9uXG4gICk7XG5cbiAgcm91dGUuZGVsZXRlKFxuICAgICcvLS9wYWNrYWdlLzpwYWNrYWdlL2Rpc3QtdGFncy86dGFnJyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gbnVsbDtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHJlcS5wYXJhbXMucGFja2FnZSwgdGFncywgZnVuY3Rpb24gKGVycjogYW55KTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogQVBJX01FU1NBR0UuVEFHX1JFTU9WRUQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLmdldChcbiAgICAnLy0vcGFja2FnZS86cGFja2FnZS9kaXN0LXRhZ3MnLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoZXJyOiBhbnksIGluZm86IFBhY2thZ2UpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQoaW5mb1tESVNUX1RBR1NdKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5wb3N0KFxuICAgICcvLS9wYWNrYWdlLzpwYWNrYWdlL2Rpc3QtdGFncycsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLm1lcmdlVGFncyhyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5ib2R5LCBmdW5jdGlvbiAoZXJyOiBhbnkpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQUdfVVBEQVRFRCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUlBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUE2QyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUk5QixTQUFBRyxTQUFVQyxLQUFhLEVBQUVDLElBQVUsRUFBRUMsT0FBZ0IsRUFBUTtFQUMxRSxNQUFNQyxHQUFHLEdBQUcsSUFBQUMsaUJBQUssRUFBQ0gsSUFBSSxFQUFFO0lBQ3RCSSxTQUFTLEVBQUVBLENBQUNDLE1BQU0sRUFBRUMsT0FBTyxLQUFLQyxjQUFNLENBQUNDLEtBQUssQ0FBQ0gsTUFBTSxFQUFFQyxPQUFPLENBQUM7SUFDN0RHLFFBQVEsRUFBRUEsQ0FBQ0osTUFBTSxFQUFFQyxPQUFPLEtBQUtDLGNBQU0sQ0FBQ0MsS0FBSyxDQUFDSCxNQUFNLEVBQUVDLE9BQU87RUFDN0QsQ0FBQyxDQUFDO0VBQ0YsTUFBTUksbUJBQW1CLEdBQUcsU0FBQUEsQ0FDMUJDLEdBQW1CLEVBQ25CQyxHQUFvQixFQUNwQkMsSUFBc0IsRUFDSjtJQUNsQixJQUFJQyxlQUFDLENBQUNDLFFBQVEsQ0FBQ0osR0FBRyxDQUFDSyxJQUFJLENBQUMsS0FBSyxL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
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWltZSIsIl9taWRkbGV3YXJlIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsInN0b3JhZ2UiLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwidGFnX3BhY2thZ2VfdmVyc2lvbiIsInJlcSIsInJlcyIsIm5leHQiLCJfIiwiaXNTdHJpbmciLCJib2R5IiwidGFncyIsInRhZyIsIm1lcmdlVGFncyIsInBhY2thZ2UiLCJlcnIiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsIkFQSV9NRVNTQUdFIiwiVEFHX0FEREVEIiwicHV0IiwiRElTVF9UQUdTX0FQSV9FTkRQT0lOVFMiLCJ0YWdnaW5nIiwibWVkaWEiLCJtaW1lIiwiZ2V0VHlwZSIsInBvc3QiLCJ0YWdnaW5nX3BhY2thZ2UiLCJkZWxldGUiLCJUQUdfUkVNT1ZFRCIsImdldCIsImdldF9kaXN0X3RhZ3MiLCJnZXRQYWNrYWdlIiwibmFtZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJpbmZvIiwiRElTVF9UQUdTIiwiVEFHX1VQREFURUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9kaXN0LXRhZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5cbmltcG9ydCB7IERJU1RfVEFHU19BUElfRU5EUE9JTlRTLCBhbGxvdywgbWVkaWEgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgQXV0aCBmcm9tICcuLi8uLi8uLi9saWIvYXV0aCc7XG5pbXBvcnQgeyBBUElfTUVTU0FHRSwgRElTVF9UQUdTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgYXV0aDogQXV0aCwgc3RvcmFnZTogU3RvcmFnZSk6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoLCB7XG4gICAgYmVmb3JlQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgICBhZnRlckFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gIH0pO1xuICBjb25zdCB0YWdfcGFja2FnZV92ZXJzaW9uID0gZnVuY3Rpb24gKFxuICAgIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gICAgcmVzOiAkUmVzcG9uc2VFeHRlbmQsXG4gICAgbmV4dDogJE5leHRGdW5jdGlvblZlclxuICApOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICBpZiAoXy5pc1N0cmluZyhyZXEuYm9keSkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gbmV4dCgncm91dGUnKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWdzID0ge307XG4gICAgdGFnc1tyZXEucGFyYW1zLnRhZ10gPSByZXEuYm9keTtcbiAgICBzdG9yYWdlLm1lcmdlVGFncyhyZXEucGFyYW1zLnBhY2thZ2UsIHRhZ3MsIGZ1bmN0aW9uIChlcnI6IEVycm9yKTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuVEFHX0FEREVEIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIHRhZ2dpbmcgYSBwYWNrYWdlXG4gIHJvdXRlLnB1dChcbiAgICBESVNUX1RBR1NfQVBJX0VORFBPSU5UUy50YWdnaW5nLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICB0YWdfcGFja2FnZV92ZXJzaW9uXG4gICk7XG5cbiAgcm91dGUucG9zdChcbiAgICBESVNUX1RBR1NfQVBJX0VORFBPSU5UUy50YWdnaW5nX3BhY2thZ2UsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgIHRhZ19wYWNrYWdlX3ZlcnNpb25cbiAgKTtcblxuICByb3V0ZS5wdXQoXG4gICAgRElTVF9UQUdTX0FQSV9FTkRQT0lOVFMudGFnZ2luZ19wYWNrYWdlLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICB0YWdfcGFja2FnZV92ZXJzaW9uXG4gICk7XG5cbiAgcm91dGUuZGVsZXRlKFxuICAgIERJU1RfVEFHU19BUElfRU5EUE9JTlRTLnRhZ2dpbmdfcGFja2FnZSxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gbnVsbDtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHJlcS5wYXJhbXMucGFja2FnZSwgdGFncywgZnVuY3Rpb24gKGVycjogYW55KTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogQVBJX01FU1NBR0UuVEFHX1JFTU9WRUQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLmdldChcbiAgICBESVNUX1RBR1NfQVBJX0VORFBPSU5UUy5nZXRfZGlzdF90YWdzLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoZXJyOiBhbnksIGluZm86IFBhY2thZ2UpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQoaW5mb1tESVNUX1RBR1NdKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5wb3N0KFxuICAgIERJU1RfVEFHU19BUElfRU5EUE9JTlRTLmdldF9kaXN0X3RhZ3MsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLm1lcmdlVGFncyhyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5ib2R5LCBmdW5jdGlvbiAoZXJyOiBhbnkpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQUdfVVBEQVRFRCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUlBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUE2QyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUk5QixTQUFBRyxTQUFVQyxLQUFhLEVBQUVDLElBQVUsRUFBRUMsT0FBZ0IsRUFBUTtFQUMxRSxNQUFNQyxHQUFHLEdBQUcsSUFBQUMsaUJBQUssRUFBQ0gsSUFBSSxFQUFFO0lBQ3RCSSxTQUFTLEVBQUVBLENBQUNDLE1BQU0sRUFBRUMsT0FBTyxLQUFLQyxjQUFNLENBQUNDLEtBQUssQ0FBQ0gsTUFBTSxFQUFFQyxPQUFPLENBQUM7SUFDN0RHLFFBQVEsRUFBRUEsQ0FBQ0osTUFBTSxFQUFFQyxPQUFPLEtBQUtDLGNBQU0sQ0FBQ0MsS0FBSyxDQUFDSCxNQUFNLEVBQUVD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
@@ -46,7 +46,7 @@ function _default(route, auth, storage, config) {
46
46
  afterAll: (params, message) => _logger.logger.trace(params, message)
47
47
  });
48
48
  // TODO: anonymous user?
49
- route.get('/:package/:version?', can('access'), function (req, res, next) {
49
+ route.get(_middleware.PACKAGE_API_ENDPOINTS.get_package_by_version, can('access'), function (req, res, next) {
50
50
  const abbreviated = (0, _string.getByQualityPriorityValue)(req.get('Accept')) === 'application/vnd.npm.install-v1+json';
51
51
  const getPackageMetaCallback = function (err, metadata) {
52
52
  if (err) {
@@ -92,18 +92,7 @@ function _default(route, auth, storage, config) {
92
92
  callback: getPackageMetaCallback
93
93
  });
94
94
  });
95
- route.get('/:scopedPackage/-/:scope/:filename', can('access'), function (req, res) {
96
- const {
97
- scopedPackage,
98
- filename
99
- } = req.params;
100
- if (_lodash.default.get(config, 'experiments.tarball_url_redirect') === undefined) {
101
- downloadStream(scopedPackage, filename, storage, req, res);
102
- } else {
103
- redirectOrDownloadStream(scopedPackage, filename, storage, req, res, config);
104
- }
105
- });
106
- route.get('/:package/-/:filename', can('access'), function (req, res) {
95
+ route.get(_middleware.PACKAGE_API_ENDPOINTS.get_package_tarball, can('access'), function (req, res) {
107
96
  if (_lodash.default.get(config, 'experiments.tarball_url_redirect') === undefined) {
108
97
  downloadStream(req.params.package, req.params.filename, storage, req, res);
109
98
  } else {
@@ -111,4 +100,4 @@ function _default(route, auth, storage, config) {
111
100
  }
112
101
  });
113
102
  }
114
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWlkZGxld2FyZSIsIl90YXJiYWxsIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMiLCJfc3RyaW5nIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZG93bmxvYWRTdHJlYW0iLCJwYWNrYWdlTmFtZSIsImZpbGVuYW1lIiwic3RvcmFnZSIsInJlcSIsInJlcyIsInN0cmVhbSIsImdldFRhcmJhbGwiLCJvbiIsImNvbnRlbnQiLCJoZWFkZXIiLCJlcnIiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJIRUFERVJTIiwiQ09OVEVOVF9UWVBFIiwiT0NURVRfU1RSRUFNIiwicGlwZSIsInJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSIsImNvbmZpZyIsInRhcmJhbGxVcmxSZWRpcmVjdCIsIl8iLCJnZXQiLCJoYXNMb2NhbFRhcmJhbGwiLCJ0aGVuIiwiY29udGV4dCIsInRhcmJhbGxVcmwiLCJ0ZW1wbGF0ZSIsInJlZGlyZWN0IiwiY2F0Y2giLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsImNhbiIsImFsbG93IiwiYmVmb3JlQWxsIiwicGFyYW1zIiwibWVzc2FnZSIsImxvZ2dlciIsInRyYWNlIiwiYWZ0ZXJBbGwiLCJuZXh0IiwiYWJicmV2aWF0ZWQiLCJnZXRCeVF1YWxpdHlQcmlvcml0eVZhbHVlIiwiZ2V0UGFja2FnZU1ldGFDYWxsYmFjayIsIm1ldGFkYXRhIiwiY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMiLCJwcm90b2NvbCIsImhlYWRlcnMiLCJob3N0IiwiaG9zdG5hbWUiLCJyZW1vdGVBZGRyZXNzIiwic29ja2V0IiwidXJsX3ByZWZpeCIsInF1ZXJ5VmVyc2lvbiIsInZlcnNpb24iLCJpc05pbCIsInNldEhlYWRlciIsIkpTT04iLCJnZXRWZXJzaW9uIiwiRElTVF9UQUdTIiwiRXJyb3JDb2RlIiwiZ2V0Tm90Rm91bmQiLCJBUElfRVJST1IiLCJWRVJTSU9OX05PVF9FWElTVCIsImdldFBhY2thZ2UiLCJuYW1lIiwicGFja2FnZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJzY29wZWRQYWNrYWdlIiwidW5kZWZpbmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvcGFja2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGFsbG93IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIH0gZnJvbSAnQHZlcmRhY2Npby90YXJiYWxsJztcbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgQXV0aCBmcm9tICcuLi8uLi8uLi9saWIvYXV0aCc7XG5pbXBvcnQgeyBBUElfRVJST1IsIERJU1RfVEFHUywgSEVBREVSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGdldFZlcnNpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGdldEJ5UXVhbGl0eVByaW9yaXR5VmFsdWUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJpbmcnO1xuXG5jb25zdCBkb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuZ2V0VGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuXG4gIHN0cmVhbS5vbignY29udGVudC1sZW5ndGgnLCBmdW5jdGlvbiAoY29udGVudCk6IHZvaWQge1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xuXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuT0NURVRfU1RSRUFNKTtcbiAgc3RyZWFtLnBpcGUocmVzKTtcbn07XG5cbmNvbnN0IHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZCxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQgPT4ge1xuICBjb25zdCB0YXJiYWxsVXJsUmVkaXJlY3QgPSBfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpO1xuICBzdG9yYWdlXG4gICAgLmhhc0xvY2FsVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpXG4gICAgLnRoZW4oKGhhc0xvY2FsVGFyYmFsbCkgPT4ge1xuICAgICAgaWYgKGhhc0xvY2FsVGFyYmFsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0geyBwYWNrYWdlTmFtZSwgZmlsZW5hbWUgfTtcbiAgICAgICAgY29uc3QgdGFyYmFsbFVybCA9XG4gICAgICAgICAgdHlwZW9mIHRhcmJhbGxVcmxSZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dClcbiAgICAgICAgICAgIDogXy50ZW1wbGF0ZSh0YXJiYWxsVXJsUmVkaXJlY3QpKGNvbnRleHQpO1xuICAgICAgICByZXMucmVkaXJlY3QodGFyYmFsbFVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvcihlcnIpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IEF1dGgsIHN0b3JhZ2U6IFN0b3JhZ2UsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgsIHtcbiAgICBiZWZvcmVBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICAgIGFmdGVyQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgfSk7XG4gIC8vIFRPRE86IGFub255bW91cyB1c2VyP1xuICByb3V0ZS5nZXQoXG4gICAgJy86cGFja2FnZS86dmVyc2lvbj8nLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBhYmJyZXZpYXRlZCA9XG4gICAgICAgIGdldEJ5UXVhbGl0eVByaW9yaXR5VmFsdWUocmVxLmdldCgnQWNjZXB0JykpID09PSAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nO1xuICAgICAgY29uc3QgZ2V0UGFja2FnZU1ldGFDYWxsYmFjayA9IGZ1bmN0aW9uIChlcnIsIG1ldGFkYXRhOiBQYWNrYWdlKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFkYXRhID0gY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMoXG4gICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdG9jb2w6IHJlcS5wcm90b2NvbCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzIGFzIGFueSxcbiAgICAgICAgICAgIGhvc3Q6IHJlcS5ob3N0bmFtZSxcbiAgICAgICAgICAgIHJlbW90ZUFkZHJlc3M6IHJlcS5zb2NrZXQucmVtb3RlQWRkcmVzcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbmZpZy51cmxfcHJlZml4XG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHF1ZXJ5VmVyc2lvbiA9IHJlcS5wYXJhbXMudmVyc2lvbjtcbiAgICAgICAgaWYgKF8uaXNOaWwocXVlcnlWZXJzaW9uKSkge1xuICAgICAgICAgIGlmIChhYmJyZXZpYXRlZCkge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgJ2FwcGxpY2F0aW9uL3ZuZC5ucG0uaW5zdGFsbC12MStqc29uJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5leHQobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT04pO1xuICAgICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHF1ZXJ5VmVyc2lvbiA9IG1ldGFkYXRhW0RJU1RfVEFHU11bcXVlcnlWZXJzaW9uXTtcbiAgICAgICAgICAgIHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwodmVyc2lvbikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Tm90Rm91bmQoYCR7QVBJX0VSUk9SLlZFUlNJT05fTk9UX0VYSVNUfTogJHtyZXEucGFyYW1zLnZlcnNpb259YCkpO1xuICAgICAgfTtcblxuICAgICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgICAgbmFtZTogcmVxLnBhcmFtcy5wYWNrYWdlLFxuICAgICAgICB1cGxpbmtzTG9vazogdHJ1ZSxcbiAgICAgICAgcmVxLFxuICAgICAgICBhYmJyZXZpYXRlZCxcbiAgICAgICAgY2FsbGJhY2s6IGdldFBhY2thZ2VNZXRhQ2FsbGJhY2ssXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUuZ2V0KFxuICAgICcvOnNjb3BlZFBhY2thZ2UvLS86c2NvcGUvOmZpbGVuYW1lJyxcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCk6IHZvaWQge1xuICAgICAgY29uc3QgeyBzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIGlmIChfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG93bmxvYWRTdHJlYW0oc2NvcGVkUGFja2FnZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbShzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMsIGNvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLmdldChcbiAgICAnLzpwYWNrYWdlLy0vOmZpbGVuYW1lJyxcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCk6IHZvaWQge1xuICAgICAgaWYgKF8uZ2V0KGNvbmZpZywgJ2V4cGVyaW1lbnRzLnRhcmJhbGxfdXJsX3JlZGlyZWN0JykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5wYXJhbXMuZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbShcbiAgICAgICAgICByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgICAgcmVxLnBhcmFtcy5maWxlbmFtZSxcbiAgICAgICAgICBzdG9yYWdlLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICByZXMsXG4gICAgICAgICAgY29uZmlnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFJQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFBa0UsU0FBQUQsdUJBQUFRLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFbEUsTUFBTUcsY0FBYyxHQUFHQSxDQUNyQkMsV0FBbUIsRUFDbkJDLFFBQWdCLEVBQ2hCQyxPQUFZLEVBQ1pDLEdBQW1CLEVBQ25CQyxHQUFvQixLQUNYO0VBQ1QsTUFBTUMsTUFBTSxHQUFHSCxPQUFPLENBQUNJLFVBQVUsQ0FBQ04sV0FBVyxFQUFFQyxRQUFRLENBQUM7RUFFeERJLE1BQU0sQ0FBQ0UsRUFBRSxDQUFDLGdCQUFnQixFQUFFLFVBQVVDLE9BQU8sRUFBUTtJQUNuREosR0FBRyxDQUFDSyxNQUFNLENBQUMsZ0JBQWdCLEVBQUVELE9BQU8sQ0FBQztFQUN2QyxDQUFDLENBQUM7RUFFRkgsTUFBTSxDQUFDRSxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVVHLEdBQUcsRUFBUTtJQUN0QyxPQUFPTixHQUFHLENBQUNPLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDRixHQUFHLENBQUM7RUFDckMsQ0FBQyxDQUFDO0VBRUZOLEdBQUcsQ0FBQ0ssTUFBTSxDQUFDSSxrQkFBTyxDQUFDQyxZQUFZLEVBQUVELGtCQUFPLENBQUNFLFlBQVksQ0FBQztFQUN0RFYsTUFBTSxDQUFDVyxJ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
103
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWlkZGxld2FyZSIsIl90YXJiYWxsIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMiLCJfc3RyaW5nIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZG93bmxvYWRTdHJlYW0iLCJwYWNrYWdlTmFtZSIsImZpbGVuYW1lIiwic3RvcmFnZSIsInJlcSIsInJlcyIsInN0cmVhbSIsImdldFRhcmJhbGwiLCJvbiIsImNvbnRlbnQiLCJoZWFkZXIiLCJlcnIiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJIRUFERVJTIiwiQ09OVEVOVF9UWVBFIiwiT0NURVRfU1RSRUFNIiwicGlwZSIsInJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSIsImNvbmZpZyIsInRhcmJhbGxVcmxSZWRpcmVjdCIsIl8iLCJnZXQiLCJoYXNMb2NhbFRhcmJhbGwiLCJ0aGVuIiwiY29udGV4dCIsInRhcmJhbGxVcmwiLCJ0ZW1wbGF0ZSIsInJlZGlyZWN0IiwiY2F0Y2giLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsImNhbiIsImFsbG93IiwiYmVmb3JlQWxsIiwicGFyYW1zIiwibWVzc2FnZSIsImxvZ2dlciIsInRyYWNlIiwiYWZ0ZXJBbGwiLCJQQUNLQUdFX0FQSV9FTkRQT0lOVFMiLCJnZXRfcGFja2FnZV9ieV92ZXJzaW9uIiwibmV4dCIsImFiYnJldmlhdGVkIiwiZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSIsImdldFBhY2thZ2VNZXRhQ2FsbGJhY2siLCJtZXRhZGF0YSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwicHJvdG9jb2wiLCJoZWFkZXJzIiwiaG9zdCIsImhvc3RuYW1lIiwicmVtb3RlQWRkcmVzcyIsInNvY2tldCIsInVybF9wcmVmaXgiLCJxdWVyeVZlcnNpb24iLCJ2ZXJzaW9uIiwiaXNOaWwiLCJzZXRIZWFkZXIiLCJKU09OIiwiZ2V0VmVyc2lvbiIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwiZ2V0X3BhY2thZ2VfdGFyYmFsbCIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBQQUNLQUdFX0FQSV9FTkRQT0lOVFMsIGFsbG93IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIH0gZnJvbSAnQHZlcmRhY2Npby90YXJiYWxsJztcbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgQXV0aCBmcm9tICcuLi8uLi8uLi9saWIvYXV0aCc7XG5pbXBvcnQgeyBBUElfRVJST1IsIERJU1RfVEFHUywgSEVBREVSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGdldFZlcnNpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGdldEJ5UXVhbGl0eVByaW9yaXR5VmFsdWUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJpbmcnO1xuXG5jb25zdCBkb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuZ2V0VGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuXG4gIHN0cmVhbS5vbignY29udGVudC1sZW5ndGgnLCBmdW5jdGlvbiAoY29udGVudCk6IHZvaWQge1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xuXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuT0NURVRfU1RSRUFNKTtcbiAgc3RyZWFtLnBpcGUocmVzKTtcbn07XG5cbmNvbnN0IHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZCxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQgPT4ge1xuICBjb25zdCB0YXJiYWxsVXJsUmVkaXJlY3QgPSBfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpO1xuICBzdG9yYWdlXG4gICAgLmhhc0xvY2FsVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpXG4gICAgLnRoZW4oKGhhc0xvY2FsVGFyYmFsbCkgPT4ge1xuICAgICAgaWYgKGhhc0xvY2FsVGFyYmFsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0geyBwYWNrYWdlTmFtZSwgZmlsZW5hbWUgfTtcbiAgICAgICAgY29uc3QgdGFyYmFsbFVybCA9XG4gICAgICAgICAgdHlwZW9mIHRhcmJhbGxVcmxSZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dClcbiAgICAgICAgICAgIDogXy50ZW1wbGF0ZSh0YXJiYWxsVXJsUmVkaXJlY3QpKGNvbnRleHQpO1xuICAgICAgICByZXMucmVkaXJlY3QodGFyYmFsbFVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvcihlcnIpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IEF1dGgsIHN0b3JhZ2U6IFN0b3JhZ2UsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgsIHtcbiAgICBiZWZvcmVBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICAgIGFmdGVyQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgfSk7XG4gIC8vIFRPRE86IGFub255bW91cyB1c2VyP1xuICByb3V0ZS5nZXQoXG4gICAgUEFDS0FHRV9BUElfRU5EUE9JTlRTLmdldF9wYWNrYWdlX2J5X3ZlcnNpb24sXG4gICAgY2FuKCdhY2Nlc3MnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGFiYnJldmlhdGVkID1cbiAgICAgICAgZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZShyZXEuZ2V0KCdBY2NlcHQnKSkgPT09ICdhcHBsaWNhdGlvbi92bmQubnBtLmluc3RhbGwtdjEranNvbic7XG4gICAgICBjb25zdCBnZXRQYWNrYWdlTWV0YUNhbGxiYWNrID0gZnVuY3Rpb24gKGVyciwgbWV0YWRhdGE6IFBhY2thZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgbWV0YWRhdGEgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhcbiAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm90b2NvbDogcmVxLnByb3RvY29sLFxuICAgICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMgYXMgYW55LFxuICAgICAgICAgICAgaG9zdDogcmVxLmhvc3RuYW1lLFxuICAgICAgICAgICAgcmVtb3RlQWRkcmVzczogcmVxLnNvY2tldC5yZW1vdGVBZGRyZXNzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29uZmlnLnVybF9wcmVmaXhcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcXVlcnlWZXJzaW9uID0gcmVxLnBhcmFtcy52ZXJzaW9uO1xuICAgICAgICBpZiAoXy5pc05pbChxdWVyeVZlcnNpb24pKSB7XG4gICAgICAgICAgaWYgKGFiYnJldmlhdGVkKSB7XG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbmV4dChtZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgIGlmIChfLmlzTmlsKHZlcnNpb24pID09PSBmYWxzZSkge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdW3F1ZXJ5VmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcXVlcnlWZXJzaW9uID0gbWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dO1xuICAgICAgICAgICAgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChgJHtBUElfRVJST1IuVkVSU0lPTl9OT1RfRVhJU1R9OiAke3JlcS5wYXJhbXMudmVyc2lvbn1gKSk7XG4gICAgICB9O1xuXG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGFiYnJldmlhdGVkLFxuICAgICAgICBjYWxsYmFjazogZ2V0UGFja2FnZU1ldGFDYWxsYmFjayxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5nZXQoXG4gICAgUEFDS0FHRV9BUElfRU5EUE9JTlRTLmdldF9wYWNrYWdlX3RhcmJhbGwsXG4gICAgY2FuKCdhY2Nlc3MnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQpOiB2b2lkIHtcbiAgICAgIGlmIChfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG93bmxvYWRTdHJlYW0ocmVxLnBhcmFtcy5wYWNrYWdlLCByZXEucGFyYW1zLmZpbGVuYW1lLCBzdG9yYWdlLCByZXEsIHJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0oXG4gICAgICAgICAgcmVxLnBhcmFtcy5wYWNrYWdlLFxuICAgICAgICAgIHJlcS5wYXJhbXMuZmlsZW5hbWUsXG4gICAgICAgICAgc3RvcmFnZSxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgcmVzLFxuICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBSUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQWtFLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFB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
@@ -4,9 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = _default;
7
+ var _middleware = require("@verdaccio/middleware");
7
8
  function _default(route) {
8
- route.get('/-/ping', function (req, res, next) {
9
+ route.get(_middleware.PING_API_ENDPOINTS.ping, function (req, res, next) {
9
10
  next({});
10
11
  });
11
12
  }
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdCIsInJvdXRlIiwiZ2V0IiwicmVxIiwicmVzIiwibmV4dCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5cbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyKTogdm9pZCB7XG4gIHJvdXRlLmdldChcbiAgICAnLy0vcGluZycsXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKSB7XG4gICAgICBuZXh0KHt9KTtcbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUllLFNBQUFBLFNBQVVDLEtBQWEsRUFBUTtFQUM1Q0EsS0FBSyxDQUFDQyxHQUFHLENBQ1AsU0FBUyxFQUNULFVBQVVDLEdBQW1CLEVBQUVDLEdBQW9CLEVBQUVDLElBQXNCLEVBQUU7SUFDM0VBLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNWLENBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWlkZGxld2FyZSIsInJlcXVpcmUiLCJfZGVmYXVsdCIsInJvdXRlIiwiZ2V0IiwiUElOR19BUElfRU5EUE9JTlRTIiwicGluZyIsInJlcSIsInJlcyIsIm5leHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9waW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyBQSU5HX0FQSV9FTkRQT0lOVFMgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuXG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlcik6IHZvaWQge1xuICByb3V0ZS5nZXQoXG4gICAgUElOR19BUElfRU5EUE9JTlRTLnBpbmcsXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKSB7XG4gICAgICBuZXh0KHt9KTtcbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQUllLFNBQUFDLFNBQVVDLEtBQWEsRUFBUTtFQUM1Q0EsS0FBSyxDQUFDQyxHQUFHLENBQ1BDLDhCQUFrQixDQUFDQyxJQUFJLEVBQ3ZCLFVBQVVDLEdBQW1CLEVBQUVDLEdBQW9CLEVBQUVDLElBQXNCLEVBQUU7SUFDM0VBLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNWLENBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
@@ -93,7 +93,7 @@ function publish(router, auth, storage, config) {
93
93
  }
94
94
  *
95
95
  */
96
- router.put('/:package/:_rev?/:revision?', can('publish'), (0, _middleware.media)(_mime.default.getType('json')), _middleware.expectJson, publishPackage(storage, config, auth));
96
+ router.put(_middleware.PUBLISH_API_ENDPOINTS.add_package, can('publish'), (0, _middleware.media)(_mime.default.getType('json')), _middleware.expectJson, publishPackage(storage, config, auth));
97
97
 
98
98
  /**
99
99
  * Un-publishing an entire package.
@@ -103,16 +103,19 @@ function publish(router, auth, storage, config) {
103
103
  * npm http fetch GET 304 http://localhost:4873/@scope%2ftest1?write=true 1076ms (from cache)
104
104
  npm http fetch DELETE 201 http://localhost:4873/@scope%2ftest1/-rev/18-d8ebe3020bd4ac9c 22ms
105
105
  */
106
- router.delete('/:package/-rev/*', can('unpublish'), unPublishPackage(storage));
106
+ router.delete(_middleware.PUBLISH_API_ENDPOINTS.publish_package, can('unpublish'), unPublishPackage(storage));
107
107
 
108
108
  // removing a tarball
109
- router.delete('/:package/-/:filename/-rev/:revision', can('unpublish'), can('publish'), removeTarball(storage));
109
+ router.delete(_middleware.PUBLISH_API_ENDPOINTS.remove_tarball, can('unpublish'), can('publish'), removeTarball(storage));
110
110
 
111
111
  // uploading package tarball
112
- router.put('/:package/-/:filename/*', can('publish'), (0, _middleware.media)(_constants.HEADERS.OCTET_STREAM), uploadPackageTarball(storage));
112
+ router.put(_middleware.PUBLISH_API_ENDPOINTS.remove_tarball, can('publish'), (0, _middleware.media)(_constants.HEADERS.OCTET_STREAM), uploadPackageTarball(storage));
113
113
 
114
- // adding a version
115
- router.put('/:package/:version/-tag/:tag', can('publish'), (0, _middleware.media)(_mime.default.getType('json')), _middleware.expectJson, addVersion(storage));
114
+ // only used for development
115
+ if (config._debug) {
116
+ // adding a version
117
+ router.put('/:package/:version/-tag/:tag', can('publish'), (0, _middleware.media)(_mime.default.getType('json')), _middleware.expectJson, addVersion(storage));
118
+ }
116
119
  }
117
120
 
118
121
  /**
@@ -355,4 +358,4 @@ function uploadPackageTarball(storage) {
355
358
  });
356
359
  };
357
360
  }
358
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbWltZSIsIl9wYXRoIiwiX2NvcmUiLCJfbWlkZGxld2FyZSIsIl9jb25zdGFudHMiLCJfbG9nZ2VyIiwiX25vdGlmeSIsIl9zdG9yYWdlVXRpbHMiLCJfdXRpbHMiLCJfc3RhciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm93bktleXMiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJkZWJ1ZyIsImJ1aWxkRGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwicHV0IiwibWVkaWEiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJzdGFyIiwicmVxIiwicmVzIiwibmV4dCIsInBhY2thZ2VOYW1lIiwicGFja2FnZSIsImNyZWF0ZVRhcmJhbGwiLCJmaWxlbmFtZSIsImRhdGEiLCJjYiIsInN0cmVhbSIsImFkZFRhcmJhbGwiLCJvbiIsImVyciIsImVuZCIsIkJ1ZmZlciIsImZyb20iLCJkb25lIiwiY3JlYXRlVmVyc2lvbiIsInZlcnNpb24iLCJtZXRhZGF0YSIsImFkZFRhZ3MiLCJ0YWdzIiwibWVyZ2VUYWdzIiwiYWZ0ZXJDaGFuZ2UiLCJlcnJvciIsIm9rTWVzc2FnZSIsIm1ldGFkYXRhQ29weSIsIl9hdHRhY2htZW50cyIsInZlcnNpb25zIiwiXyIsImlzTmlsIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiQ1JFQVRFRCIsIm9rIiwic3VjY2VzcyIsImlzSW52YWxpZEJvZHlGb3JtYXQiLCJpc09iamVjdCIsImhhc0RpZmZPbmVLZXkiLCJpbmZvIiwiRXJyb3JDb2RlIiwiZ2V0QmFkUmVxdWVzdCIsIkFQSV9FUlJPUiIsIlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCIsIkNPTkZMSUNUIiwiZmlyc3RBdHRhY2htZW50S2V5IiwiUGF0aCIsImJhc2VuYW1lIiwidmVyc2lvblRvUHVibGlzaCIsInZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCIsInJlYWRtZSIsIkRJU1RfVEFHUyIsIm5vdGlmeSIsInJlbW90ZV91c2VyIiwibmFtZSIsImlzUHVibGlzaGFibGVQYWNrYWdlIiwiYm9keSIsInVzZXJzIiwidmFsaWRhdGlvVXRpbHMiLCJub3JtYWxpemVNZXRhZGF0YSIsIl9yZXYiLCJpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uIiwiaXNFbXB0eSIsInJlbW90ZSIsImFsbG93X3VucHVibGlzaCIsImNoYW5nZVBhY2thZ2UiLCJyZXZpc2lvbiIsIkFQSV9NRVNTQUdFIiwiUEtHX0NIQU5HRUQiLCJhZGRQYWNrYWdlIiwiUEtHX0NSRUFURUQiLCJnZXRCYWREYXRhIiwiQkFEX1BBQ0tBR0VfREFUQSIsInJlbW92ZVBhY2thZ2UiLCJQS0dfUkVNT1ZFRCIsIlRBUkJBTExfUkVNT1ZFRCIsInRhZyIsIlBLR19QVUJMSVNIRUQiLCJwaXBlIiwiY29tcGxldGUiLCJhYm9ydCIsImxvY2FscyIsInJlcG9ydF9lcnJvciIsIlRBUkJBTExfVVBMT0FERUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9wdWJsaXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtaW1lIGZyb20gJ21pbWUnO1xuaW1wb3J0IFBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IHZhbGlkYXRpb1V0aWxzIH0gZnJvbSAnQHZlcmRhY2Npby9jb3JlJztcbmltcG9ydCB7IGFsbG93LCBleHBlY3RKc29uLCBtZWRpYSB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBDYWxsYmFjaywgQ29uZmlnLCBNZXJnZVRhZ3MsIFBhY2thZ2UsIFZlcnNpb24gfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUElfTUVTU0FHRSwgRElTVF9UQUdTLCBIRUFERVJTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuLi8uLi8uLi9saWIvbm90aWZ5JztcbmltcG9ydCBTdG9yYWdlIGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlJztcbmltcG9ydCB7IGlzUHVibGlzaGFibGVQYWNrYWdlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UtdXRpbHMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBoYXNEaWZmT25lS2V5LCBpc09iamVjdCwgaXNSZWxhdGVkVG9EZXByZWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHN0YXIgZnJvbSAnLi9zdGFyJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86cHVibGlzaCcpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwdWJsaXNoKFxuICByb3V0ZXI6IFJvdXRlcixcbiAgYXV0aDogQXV0aCxcbiAgc3RvcmFnZTogU3RvcmFnZSxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoLCB7XG4gICAgYmVmb3JlQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgICBhZnRlckFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KFxuICAgICcvOnBhY2thZ2UvOl9yZXY/LzpyZXZpc2lvbj8nLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICBleHBlY3RKc29uLFxuICAgIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UsIGNvbmZpZywgYXV0aClcbiAgKTtcblxuICAvKipcbiAgICogVW4tcHVibGlzaGluZyBhbiBlbnRpcmUgcGFja2FnZS5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBoYXBwZW5zIHdoZW4gdGhlIGZpcnN0IGNhbGwgZGV0ZWN0IHRoZXJlIGlzIG9ubHkgb25lIHZlcnNpb24gcmVtYWluaW5nXG4gICAqIGluIHRoZSBtZXRhZGF0YSwgdGhlbiB0aGUgY2xpZW50IGRlY2lkZXMgdG8gREVMRVRFIHRoZSByZXNvdXJjZVxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMzA0IGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDEwNzZtcyAoZnJvbSBjYWNoZSlcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xOC1kOGViZTMwMjBiZDRhYzljIDIybXNcbiAgICovXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tcmV2LyonLCBjYW4oJ3VucHVibGlzaCcpLCB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UpKTtcblxuICAvLyByZW1vdmluZyBhIHRhcmJhbGxcbiAgcm91dGVyLmRlbGV0ZShcbiAgICAnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLy1yZXYvOnJldmlzaW9uJyxcbiAgICBjYW4oJ3VucHVibGlzaCcpLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSlcbiAgKTtcblxuICAvLyB1cGxvYWRpbmcgcGFja2FnZSB0YXJiYWxsXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS8tLzpmaWxlbmFtZS8qJyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBtZWRpYShIRUFERVJTLk9DVEVUX1NUUkVBTSksXG4gICAgdXBsb2FkUGFja2FnZVRhcmJhbGwoc3RvcmFnZSlcbiAgKTtcblxuICAvLyBhZGRpbmcgYSB2ZXJzaW9uXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS86dmVyc2lvbi8tdGFnLzp0YWcnLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICBleHBlY3RKc29uLFxuICAgIGFkZFZlcnNpb24oc3RvcmFnZSlcbiAgKTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaFBhY2thZ2Uoc3RvcmFnZTogU3RvcmFnZSwgY29uZmlnOiBDb25maWcsIGF1dGg6IEF1dGgpOiBhbnkge1xuICBjb25zdCBzdGFyQXBpID0gc3RhcihzdG9yYWdlKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdwdWJsaXNoaW5nIG9yIHVwZGF0aW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIC8qKlxuICAgICAqIFdyaXRlIHRhcmJhbGwgb2Ygc3RyZWFtIGRhdGEgZnJvbSBwYWNrYWdlIGNsaWVudHMuXG4gICAgICovXG4gICAgY29uc3QgY3JlYXRlVGFyYmFsbCA9IGZ1bmN0aW9uIChmaWxlbmFtZTogc3RyaW5nLCBkYXRhLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY2IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdzdWNjZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYigpO1xuICAgICAgfSk7XG4gICAgICAvLyB0aGlzIGlzIGR1bWIgYW5kIG1lbW9yeS1jb25zdW1pbmcsIGJ1dCB3aGF0IGNob2ljZXMgZG8gd2UgaGF2ZT9cbiAgICAgIC8vIGZsb3c6IHdlIG5lZWQgZmlyc3QgcmVmYWN0b3IgdGhpcyBmaWxlIGJlZm9yZSBkZWNpZGVzIHdoaWNoIHR5cGUgdXNlIGhlcmVcbiAgICAgIHN0cmVhbS5lbmQoQnVmZmVyLmZyb20oZGF0YS5kYXRhLCAnYmFzZTY0JykpO1xuICAgICAgc3RyZWFtLmRvbmUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQWRkIG5ldyBwYWNrYWdlIHZlcnNpb24gaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVZlcnNpb24gPSBmdW5jdGlvbiAodmVyc2lvbjogc3RyaW5nLCBtZXRhZGF0YTogVmVyc2lvbiwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmFkZFZlcnNpb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIG1ldGFkYXRhLCBudWxsLCBjYik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgdGFncyBpbiBzdG9yYWdlXG4gICAgICovXG4gICAgY29uc3QgYWRkVGFncyA9IGZ1bmN0aW9uICh0YWdzOiBNZXJnZVRhZ3MsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5tZXJnZVRhZ3MocGFja2FnZU5hbWUsIHRhZ3MsIGNiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2UgPSBmdW5jdGlvbiAoZXJyb3IsIG9rTWVzc2FnZSwgbWV0YWRhdGEpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQ29weTogUGFja2FnZSA9IHsgLi4ubWV0YWRhdGEgfTtcblxuICAgICAgY29uc3QgeyBfYXR0YWNobWVudHMsIHZlcnNpb25zIH0gPSBtZXRhZGF0YUNvcHk7XG5cbiAgICAgIC8vIGBucG0gc3RhcmAgd291bGRuJ3QgaGF2ZSBhdHRhY2htZW50c1xuICAgICAgLy8gYW5kIGBucG0gZGVwcmVjYXRlYCB3b3VsZCBoYXZlIGF0dGFjaG1lbnRzIGFzIGEgZW1wdHkgb2JqZWN0LCBpLmUge31cbiAgICAgIGlmIChfLmlzTmlsKF9hdHRhY2htZW50cykgfHwgSlNPTi5zdHJpbmdpZnkoX2F0dGFjaG1lbnRzKSA9PT0gJ3t9Jykge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBva01lc3NhZ2UsXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5wbS1yZWdpc3RyeS1jbGllbnQgMC4zKyBlbWJlZHMgdGFyYmFsbCBpbnRvIHRoZSBqc29uIHVwbG9hZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ucG0tcmVnaXN0cnktY2xpZW50L2NvbW1pdC9lOWZiZWI4YjY3ZjI0OTM5NGY3MzVjNzRlZjExZmU0NzIwZDQ2Y2EwXG4gICAgICAvLyBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vcmxpZHdrYS9zaW5vcGlhL2lzc3Vlcy8zMSwgZGVhbGluZyB3aXRoIGl0IGhlcmU6XG4gICAgICBjb25zdCBpc0ludmFsaWRCb2R5Rm9ybWF0ID1cbiAgICAgICAgaXNPYmplY3QoX2F0dGFjaG1lbnRzKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleShfYXR0YWNobWVudHMpIHx8XG4gICAgICAgIGlzT2JqZWN0KHZlcnNpb25zKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleSh2ZXJzaW9ucyk7XG5cbiAgICAgIGlmIChpc0ludmFsaWRCb2R5Rm9ybWF0KSB7XG4gICAgICAgIC8vIG5wbSBpcyBkb2luZyBzb21ldGhpbmcgc3RyYW5nZSBhZ2FpblxuICAgICAgICAvLyBpZiB0aGlzIGhhcHBlbnMgaW4gbm9ybWFsIGNpcmN1bXN0YW5jZXMsIHJlcG9ydCBpdCBhcyBhIGJ1Z1xuICAgICAgICBsb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lIH0sIGB3cm9uZyBwYWNrYWdlIGZvcm1hdCBvbiBwdWJsaXNoIGEgcGFja2FnZSBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgIT09IEhUVFBfU1RBVFVTLkNPTkZMSUNUKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXQgdGhpcyBwb2ludCBkb2N1bWVudCBpcyBlaXRoZXIgY3JlYXRlZCBvciBleGlzdGVkIGJlZm9yZVxuICAgICAgY29uc3QgW2ZpcnN0QXR0YWNobWVudEtleV0gPSBPYmplY3Qua2V5cyhfYXR0YWNobWVudHMpO1xuXG4gICAgICBjcmVhdGVUYXJiYWxsKFxuICAgICAgICBQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksXG4gICAgICAgIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLFxuICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB2ZXJzaW9uVG9QdWJsaXNoID0gT2JqZWN0LmtleXModmVyc2lvbnMpWzBdO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCA9IHZlcnNpb25zW3ZlcnNpb25Ub1B1Ymxpc2hdO1xuXG4gICAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9XG4gICAgICAgICAgICBfLmlzTmlsKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpID09PSBmYWxzZVxuICAgICAgICAgICAgICA/IFN0cmluZyh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKVxuICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWRkVGFncyhtZXRhZGF0YUNvcHlbRElTVF9UQUdTXSwgYXN5bmMgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KFxuICAgICAgICAgICAgICAgICAgbWV0YWRhdGFDb3B5LFxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgcmVxLnJlbW90ZV91c2VyLFxuICAgICAgICAgICAgICAgICAgYCR7bWV0YWRhdGFDb3B5Lm5hbWV9QCR7dmVyc2lvblRvUHVibGlzaH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH07XG5cbiAgICBpZiAoaXNQdWJsaXNoYWJsZVBhY2thZ2UocmVxLmJvZHkpID09PSBmYWxzZSAmJiBpc09iamVjdChyZXEuYm9keS51c2VycykpIHtcbiAgICAgIHJldHVybiBzdGFyQXBpKHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB2YWxpZGF0aW9VdGlscy5ub3JtYWxpemVNZXRhZGF0YShyZXEuYm9keSwgcGFja2FnZU5hbWUpO1xuICAgICAgLy8gY2hlY2sgX2F0dGFjaG1lbnRzIHRvIGRpc3Rpbmd1aXNoIHB1Ymxpc2ggYW5kIGRlcHJlY2F0ZVxuICAgICAgaWYgKFxuICAgICAgICByZXEucGFyYW1zLl9yZXYgfHxcbiAgICAgICAgKGlzUmVsYXRlZFRvRGVwcmVjYXRpb24ocmVxLmJvZHkpICYmIF8uaXNFbXB0eShyZXEuYm9keS5fYXR0YWNobWVudHMpKVxuICAgICAgKSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgLy8gd2UgY2hlY2sgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCBhbiB1cGRhdGUgaXMgYmFzaWNhbGx5IHJlbW92ZSB2ZXJzaW9uc1xuICAgICAgICBjb25zdCByZW1vdGUgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICAgIGF1dGguYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUgfSwgcmVtb3RlLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sIGBub3QgYWxsb3dlZCB0byB1bnB1Ymxpc2ggYSB2ZXJzaW9uIGZvciBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yYWdlLmNoYW5nZVBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCByZXEucGFyYW1zLnJldmlzaW9uLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ0hBTkdFRCwgbWV0YWRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhZGRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHN0b3JhZ2UuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ1JFQVRFRCwgbWV0YWRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBTdG9yYWdlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygndW5wdWJsaXNoaW5nICVvJywgcGFja2FnZU5hbWUpO1xuICAgIHN0b3JhZ2UucmVtb3ZlUGFja2FnZShwYWNrYWdlTmFtZSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlBLR19SRU1PVkVEIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIERlbGV0ZSB0YXJiYWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUYXJiYWxsKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGNvbnN0IHsgZmlsZW5hbWUsIHJldmlzaW9uIH0gPSByZXEucGFyYW1zO1xuICAgIGRlYnVnKCdyZW1vdmluZyBhIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgc3RvcmFnZS5yZW1vdmVUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgIH1cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICBkZWJ1Zygnc3VjY2VzcyByZW1vdmUgdGFyYmFsbCBmb3IgJW8tJW8tJW8nLCBwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlRBUkJBTExfUkVNT1ZFRCB9KTtcbiAgICB9KTtcbiAgfTtcbn1cbi8qKlxuICogQWRkcyBhIG5ldyB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRWZXJzaW9uKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgcmVxLnBhcmFtcy5maWxlbmFtZSk7XG4gICAgcmVxLnBpcGUoc3RyZWFtKTtcblxuICAgIC8vIGNoZWNraW5nIGlmIGVuZCBldmVudCBjYW1lIGJlZm9yZSBjbG9zaW5nXG4gICAgbGV0IGNvbXBsZXRlID0gZmFsc2U7XG4gICAgcmVxLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb21wbGV0ZSA9IHRydWU7XG4gICAgICBzdHJlYW0uZG9uZSgpO1xuICAgIH0pO1xuXG4gICAgcmVxLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY29tcGxldGUpIHtcbiAgICAgICAgc3RyZWFtLmFib3J0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gICAgfSk7XG5cbiAgICBzdHJlYW0ub24oJ3N1Y2Nlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuVEFSQkFMTF9VUExPQURFRCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUwsT0FBQTtBQUlBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLE9BQUEsR0FBQVIsT0FBQTtBQUVBLElBQUFTLGFBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUVBLElBQUFXLEtBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUEwQixTQUFBRCx1QkFBQWEsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLFFBQUFILENBQUEsRUFBQUksQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBUCxDQUFBLE9BQUFNLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFSLENBQUEsR0FBQUksQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVgsQ0FBQSxFQUFBSSxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJ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
361
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbWltZSIsIl9wYXRoIiwiX2NvcmUiLCJfbWlkZGxld2FyZSIsIl9jb25zdGFudHMiLCJfbG9nZ2VyIiwiX25vdGlmeSIsIl9zdG9yYWdlVXRpbHMiLCJfdXRpbHMiLCJfc3RhciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm93bktleXMiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJkZWJ1ZyIsImJ1aWxkRGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwicHV0IiwiUFVCTElTSF9BUElfRU5EUE9JTlRTIiwiYWRkX3BhY2thZ2UiLCJtZWRpYSIsIm1pbWUiLCJnZXRUeXBlIiwiZXhwZWN0SnNvbiIsInB1Ymxpc2hQYWNrYWdlIiwiZGVsZXRlIiwicHVibGlzaF9wYWNrYWdlIiwidW5QdWJsaXNoUGFja2FnZSIsInJlbW92ZV90YXJiYWxsIiwicmVtb3ZlVGFyYmFsbCIsIkhFQURFUlMiLCJPQ1RFVF9TVFJFQU0iLCJ1cGxvYWRQYWNrYWdlVGFyYmFsbCIsImFkZFZlcnNpb24iLCJzdGFyQXBpIiwic3RhciIsInJlcSIsInJlcyIsIm5leHQiLCJwYWNrYWdlTmFtZSIsInBhY2thZ2UiLCJjcmVhdGVUYXJiYWxsIiwiZmlsZW5hbWUiLCJkYXRhIiwiY2IiLCJzdHJlYW0iLCJhZGRUYXJiYWxsIiwib24iLCJlcnIiLCJlbmQiLCJCdWZmZXIiLCJmcm9tIiwiZG9uZSIsImNyZWF0ZVZlcnNpb24iLCJ2ZXJzaW9uIiwibWV0YWRhdGEiLCJhZGRUYWdzIiwidGFncyIsIm1lcmdlVGFncyIsImFmdGVyQ2hhbmdlIiwiZXJyb3IiLCJva01lc3NhZ2UiLCJtZXRhZGF0YUNvcHkiLCJfYXR0YWNobWVudHMiLCJ2ZXJzaW9ucyIsIl8iLCJpc05pbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsInN1Y2Nlc3MiLCJpc0ludmFsaWRCb2R5Rm9ybWF0IiwiaXNPYmplY3QiLCJoYXNEaWZmT25lS2V5IiwiaW5mbyIsIkVycm9yQ29kZSIsImdldEJhZFJlcXVlc3QiLCJBUElfRVJST1IiLCJVTlNVUE9SVEVEX1JFR0lTVFJZX0NBTEwiLCJDT05GTElDVCIsImZpcnN0QXR0YWNobWVudEtleSIsIlBhdGgiLCJiYXNlbmFtZSIsInZlcnNpb25Ub1B1Ymxpc2giLCJ2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2giLCJyZWFkbWUiLCJESVNUX1RBR1MiLCJub3RpZnkiLCJyZW1vdGVfdXNlciIsIm5hbWUiLCJpc1B1Ymxpc2hhYmxlUGFja2FnZSIsImJvZHkiLCJ1c2VycyIsInZhbGlkYXRpb1V0aWxzIiwibm9ybWFsaXplTWV0YWRhdGEiLCJfcmV2IiwiaXNSZWxhdGVkVG9EZXByZWNhdGlvbiIsImlzRW1wdHkiLCJyZW1vdGUiLCJhbGxvd191bnB1Ymxpc2giLCJjaGFuZ2VQYWNrYWdlIiwicmV2aXNpb24iLCJBUElfTUVTU0FHRSIsIlBLR19DSEFOR0VEIiwiYWRkUGFja2FnZSIsIlBLR19DUkVBVEVEIiwiZ2V0QmFkRGF0YSIsIkJBRF9QQUNLQUdFX0RBVEEiLCJyZW1vdmVQYWNrYWdlIiwiUEtHX1JFTU9WRUQiLCJUQVJCQUxMX1JFTU9WRUQiLCJ0YWciLCJQS0dfUFVCTElTSEVEIiwicGlwZSIsImNvbXBsZXRlIiwiYWJvcnQiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJUQVJCQUxMX1VQTE9BREVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvcHVibGlzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCBQYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyB2YWxpZGF0aW9VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBQVUJMSVNIX0FQSV9FTkRQT0lOVFMsIGFsbG93LCBleHBlY3RKc29uLCBtZWRpYSB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBDYWxsYmFjaywgQ29uZmlnLCBNZXJnZVRhZ3MsIFBhY2thZ2UsIFZlcnNpb24gfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUElfTUVTU0FHRSwgRElTVF9UQUdTLCBIRUFERVJTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuLi8uLi8uLi9saWIvbm90aWZ5JztcbmltcG9ydCBTdG9yYWdlIGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlJztcbmltcG9ydCB7IGlzUHVibGlzaGFibGVQYWNrYWdlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UtdXRpbHMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBoYXNEaWZmT25lS2V5LCBpc09iamVjdCwgaXNSZWxhdGVkVG9EZXByZWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHN0YXIgZnJvbSAnLi9zdGFyJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86cHVibGlzaCcpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwdWJsaXNoKFxuICByb3V0ZXI6IFJvdXRlcixcbiAgYXV0aDogQXV0aCxcbiAgc3RvcmFnZTogU3RvcmFnZSxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoLCB7XG4gICAgYmVmb3JlQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgICBhZnRlckFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KFxuICAgIFBVQkxJU0hfQVBJX0VORFBPSU5UUy5hZGRfcGFja2FnZSxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksXG4gICAgZXhwZWN0SnNvbixcbiAgICBwdWJsaXNoUGFja2FnZShzdG9yYWdlLCBjb25maWcsIGF1dGgpXG4gICk7XG5cbiAgLyoqXG4gICAqIFVuLXB1Ymxpc2hpbmcgYW4gZW50aXJlIHBhY2thZ2UuXG4gICAqXG4gICAqIFRoaXMgc2NlbmFyaW8gaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBjYWxsIGRldGVjdCB0aGVyZSBpcyBvbmx5IG9uZSB2ZXJzaW9uIHJlbWFpbmluZ1xuICAgKiBpbiB0aGUgbWV0YWRhdGEsIHRoZW4gdGhlIGNsaWVudCBkZWNpZGVzIHRvIERFTEVURSB0aGUgcmVzb3VyY2VcbiAgICogbnBtIGh0dHAgZmV0Y2ggR0VUIDMwNCBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDE/d3JpdGU9dHJ1ZSAxMDc2bXMgKGZyb20gY2FjaGUpXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTgtZDhlYmUzMDIwYmQ0YWM5YyAyMm1zXG4gICAqL1xuICByb3V0ZXIuZGVsZXRlKFBVQkxJU0hfQVBJX0VORFBPSU5UUy5wdWJsaXNoX3BhY2thZ2UsIGNhbigndW5wdWJsaXNoJyksIHVuUHVibGlzaFBhY2thZ2Uoc3RvcmFnZSkpO1xuXG4gIC8vIHJlbW92aW5nIGEgdGFyYmFsbFxuICByb3V0ZXIuZGVsZXRlKFxuICAgIFBVQkxJU0hfQVBJX0VORFBPSU5UUy5yZW1vdmVfdGFyYmFsbCxcbiAgICBjYW4oJ3VucHVibGlzaCcpLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSlcbiAgKTtcblxuICAvLyB1cGxvYWRpbmcgcGFja2FnZSB0YXJiYWxsXG4gIHJvdXRlci5wdXQoXG4gICAgUFVCTElTSF9BUElfRU5EUE9JTlRTLnJlbW92ZV90YXJiYWxsLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKEhFQURFUlMuT0NURVRfU1RSRUFNKSxcbiAgICB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlKVxuICApO1xuXG4gIC8vIG9ubHkgdXNlZCBmb3IgZGV2ZWxvcG1lbnRcbiAgaWYgKGNvbmZpZy5fZGVidWcpIHtcbiAgICAvLyBhZGRpbmcgYSB2ZXJzaW9uXG4gICAgcm91dGVyLnB1dChcbiAgICAgICcvOnBhY2thZ2UvOnZlcnNpb24vLXRhZy86dGFnJyxcbiAgICAgIGNhbigncHVibGlzaCcpLFxuICAgICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgICAgZXhwZWN0SnNvbixcbiAgICAgIGFkZFZlcnNpb24oc3RvcmFnZSlcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogUHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IFN0b3JhZ2UsIGNvbmZpZzogQ29uZmlnLCBhdXRoOiBBdXRoKTogYW55IHtcbiAgY29uc3Qgc3RhckFwaSA9IHN0YXIoc3RvcmFnZSk7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygncHVibGlzaGluZyBvciB1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAvKipcbiAgICAgKiBXcml0ZSB0YXJiYWxsIG9mIHN0cmVhbSBkYXRhIGZyb20gcGFja2FnZSBjbGllbnRzLlxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVRhcmJhbGwgPSBmdW5jdGlvbiAoZmlsZW5hbWU6IHN0cmluZywgZGF0YSwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBzdG9yYWdlLmFkZFRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNiKGVycik7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcyBpcyBkdW1iIGFuZCBtZW1vcnktY29uc3VtaW5nLCBidXQgd2hhdCBjaG9pY2VzIGRvIHdlIGhhdmU/XG4gICAgICAvLyBmbG93OiB3ZSBuZWVkIGZpcnN0IHJlZmFjdG9yIHRoaXMgZmlsZSBiZWZvcmUgZGVjaWRlcyB3aGljaCB0eXBlIHVzZSBoZXJlXG4gICAgICBzdHJlYW0uZW5kKEJ1ZmZlci5mcm9tKGRhdGEuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgcGFja2FnZSB2ZXJzaW9uIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVWZXJzaW9uID0gZnVuY3Rpb24gKHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBtZXRhZGF0YSwgbnVsbCwgY2IpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHRhZ3MgaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGFkZFRhZ3MgPSBmdW5jdGlvbiAodGFnczogTWVyZ2VUYWdzLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHBhY2thZ2VOYW1lLCB0YWdzLCBjYik7XG4gICAgfTtcblxuICAgIGNvbnN0IGFmdGVyQ2hhbmdlID0gZnVuY3Rpb24gKGVycm9yLCBva01lc3NhZ2UsIG1ldGFkYXRhKTogdm9pZCB7XG4gICAgICBjb25zdCBtZXRhZGF0YUNvcHk6IFBhY2thZ2UgPSB7IC4uLm1ldGFkYXRhIH07XG5cbiAgICAgIGNvbnN0IHsgX2F0dGFjaG1lbnRzLCB2ZXJzaW9ucyB9ID0gbWV0YWRhdGFDb3B5O1xuXG4gICAgICAvLyBgbnBtIHN0YXJgIHdvdWxkbid0IGhhdmUgYXR0YWNobWVudHNcbiAgICAgIC8vIGFuZCBgbnBtIGRlcHJlY2F0ZWAgd291bGQgaGF2ZSBhdHRhY2htZW50cyBhcyBhIGVtcHR5IG9iamVjdCwgaS5lIHt9XG4gICAgICBpZiAoXy5pc05pbChfYXR0YWNobWVudHMpIHx8IEpTT04uc3RyaW5naWZ5KF9hdHRhY2htZW50cykgPT09ICd7fScpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogb2tNZXNzYWdlLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBucG0tcmVnaXN0cnktY2xpZW50IDAuMysgZW1iZWRzIHRhcmJhbGwgaW50byB0aGUganNvbiB1cGxvYWRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvbnBtLXJlZ2lzdHJ5LWNsaWVudC9jb21taXQvZTlmYmViOGI2N2YyNDkzOTRmNzM1Yzc0ZWYxMWZlNDcyMGQ0NmNhMFxuICAgICAgLy8gaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3JsaWR3a2Evc2lub3BpYS9pc3N1ZXMvMzEsIGRlYWxpbmcgd2l0aCBpdCBoZXJlOlxuICAgICAgY29uc3QgaXNJbnZhbGlkQm9keUZvcm1hdCA9XG4gICAgICAgIGlzT2JqZWN0KF9hdHRhY2htZW50cykgPT09IGZhbHNlIHx8XG4gICAgICAgIGhhc0RpZmZPbmVLZXkoX2F0dGFjaG1lbnRzKSB8fFxuICAgICAgICBpc09iamVjdCh2ZXJzaW9ucykgPT09IGZhbHNlIHx8XG4gICAgICAgIGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkQm9keUZvcm1hdCkge1xuICAgICAgICAvLyBucG0gaXMgZG9pbmcgc29tZXRoaW5nIHN0cmFuZ2UgYWdhaW5cbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCByZXBvcnQgaXQgYXMgYSBidWdcbiAgICAgICAgbG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSB9LCBgd3JvbmcgcGFja2FnZSBmb3JtYXQgb24gcHVibGlzaCBhIHBhY2thZ2UgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQgZG9jdW1lbnQgaXMgZWl0aGVyIGNyZWF0ZWQgb3IgZXhpc3RlZCBiZWZvcmVcbiAgICAgIGNvbnN0IFtmaXJzdEF0dGFjaG1lbnRLZXldID0gT2JqZWN0LmtleXMoX2F0dGFjaG1lbnRzKTtcblxuICAgICAgY3JlYXRlVGFyYmFsbChcbiAgICAgICAgUGF0aC5iYXNlbmFtZShmaXJzdEF0dGFjaG1lbnRLZXkpLFxuICAgICAgICBfYXR0YWNobWVudHNbZmlyc3RBdHRhY2htZW50S2V5XSxcbiAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdmVyc2lvblRvUHVibGlzaCA9IE9iamVjdC5rZXlzKHZlcnNpb25zKVswXTtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2ggPSB2ZXJzaW9uc1t2ZXJzaW9uVG9QdWJsaXNoXTtcblxuICAgICAgICAgIHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUgPVxuICAgICAgICAgICAgXy5pc05pbCh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKSA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgPyBTdHJpbmcodmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSlcbiAgICAgICAgICAgICAgOiAnJztcblxuICAgICAgICAgIGNyZWF0ZVZlcnNpb24odmVyc2lvblRvUHVibGlzaCwgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFkZFRhZ3MobWV0YWRhdGFDb3B5W0RJU1RfVEFHU10sIGFzeW5jIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IG5vdGlmeShcbiAgICAgICAgICAgICAgICAgIG1ldGFkYXRhQ29weSxcbiAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgIHJlcS5yZW1vdGVfdXNlcixcbiAgICAgICAgICAgICAgICAgIGAke21ldGFkYXRhQ29weS5uYW1lfUAke3ZlcnNpb25Ub1B1Ymxpc2h9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHsgZXJyb3IgfSwgJ25vdGlmeSBiYXRjaCBzZXJ2aWNlIGhhcyBmYWlsZWQ6IEB7ZXJyb3J9Jyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dCh7IG9rOiBva01lc3NhZ2UsIHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKGlzUHVibGlzaGFibGVQYWNrYWdlKHJlcS5ib2R5KSA9PT0gZmFsc2UgJiYgaXNPYmplY3QocmVxLmJvZHkudXNlcnMpKSB7XG4gICAgICByZXR1cm4gc3RhckFwaShyZXEsIHJlcywgbmV4dCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdmFsaWRhdGlvVXRpbHMubm9ybWFsaXplTWV0YWRhdGEocmVxLmJvZHksIHBhY2thZ2VOYW1lKTtcbiAgICAgIC8vIGNoZWNrIF9hdHRhY2htZW50cyB0byBkaXN0aW5ndWlzaCBwdWJsaXNoIGFuZCBkZXByZWNhdGVcbiAgICAgIGlmIChcbiAgICAgICAgcmVxLnBhcmFtcy5fcmV2IHx8XG4gICAgICAgIChpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uKHJlcS5ib2R5KSAmJiBfLmlzRW1wdHkocmVxLmJvZHkuX2F0dGFjaG1lbnRzKSlcbiAgICAgICkge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIC8vIHdlIGNoZWNrIHVucHVibGlzaCBwZXJtaXNzaW9ucywgYW4gdXBkYXRlIGlzIGJhc2ljYWxseSByZW1vdmUgdmVyc2lvbnNcbiAgICAgICAgY29uc3QgcmVtb3RlID0gcmVxLnJlbW90ZV91c2VyO1xuICAgICAgICBhdXRoLmFsbG93X3VucHVibGlzaCh7IHBhY2thZ2VOYW1lIH0sIHJlbW90ZSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSB9LCBgbm90IGFsbG93ZWQgdG8gdW5wdWJsaXNoIGEgdmVyc2lvbiBmb3IgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKHBhY2thZ2VOYW1lLCBtZXRhZGF0YSwgcmVxLnBhcmFtcy5yZXZpc2lvbiwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NIQU5HRUQsIG1ldGFkYXRhKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygnYWRkaW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBzdG9yYWdlLmFkZFBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NSRUFURUQsIG1ldGFkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sICdlcnJvciBvbiBwdWJsaXNoLCBiYWQgcGFja2FnZSBkYXRhIGZvciBAe3BhY2thZ2VOYW1lfScpO1xuICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZERhdGEoQVBJX0VSUk9SLkJBRF9QQUNLQUdFX0RBVEEpKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogdW4tcHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuUHVibGlzaFBhY2thZ2Uoc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgZGVidWcoJ3VucHVibGlzaGluZyAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICBzdG9yYWdlLnJlbW92ZVBhY2thZ2UocGFja2FnZU5hbWUsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgIH1cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5QS0dfUkVNT1ZFRCB9KTtcbiAgICB9KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEZWxldGUgdGFyYmFsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVGFyYmFsbChzdG9yYWdlOiBTdG9yYWdlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCByZXZpc2lvbiB9ID0gcmVxLnBhcmFtcztcbiAgICBkZWJ1ZygncmVtb3ZpbmcgYSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgIHN0b3JhZ2UucmVtb3ZlVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgZGVidWcoJ3N1Y2Nlc3MgcmVtb3ZlIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG4vKipcbiAqIEFkZHMgYSBuZXcgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVmVyc2lvbihzdG9yYWdlOiBTdG9yYWdlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IHZlcnNpb24sIHRhZyB9ID0gcmVxLnBhcmFtcztcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcblxuICAgIHN0b3JhZ2UuYWRkVmVyc2lvbihwYWNrYWdlTmFtZSwgdmVyc2lvbiwgcmVxLmJvZHksIHRhZywgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuUEtHX1BVQkxJU0hFRCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIHVwbG9hZFBhY2thZ2VUYXJiYWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlOiBTdG9yYWdlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCBzdHJlYW0gPSBzdG9yYWdlLmFkZFRhcmJhbGwocGFja2FnZU5hbWUsIHJlcS5wYXJhbXMuZmlsZW5hbWUpO1xuICAgIHJlcS5waXBlKHN0cmVhbSk7XG5cbiAgICAvLyBjaGVja2luZyBpZiBlbmQgZXZlbnQgY2FtZSBiZWZvcmUgY2xvc2luZ1xuICAgIGxldCBjb21wbGV0ZSA9IGZhbHNlO1xuICAgIHJlcS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29tcGxldGUgPSB0cnVlO1xuICAgICAgc3RyZWFtLmRvbmUoKTtcbiAgICB9KTtcblxuICAgIHJlcS5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIWNvbXBsZXRlKSB7XG4gICAgICAgIHN0cmVhbS5hYm9ydCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHJldHVybiByZXMubG9jYWxzLnJlcG9ydF9lcnJvcihlcnIpO1xuICAgIH0pO1xuXG4gICAgc3RyZWFtLm9uKCdzdWNjZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgb2s6IEFQSV9NRVNTQUdFLlRBUkJBTExfVVBMT0FERUQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFJQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxhQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFFQSxJQUFBVyxLQUFBLEdBQUFaLHNCQUFBLENBQUFDLE9BQUE7QUFBMEIsU0FBQUQsdUJBQUFhLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRyxRQUFBSCxDQUFBLEVBQUFJLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FB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
@@ -4,11 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = _default;
7
+ var _middleware = require("@verdaccio/middleware");
7
8
  var _constants = require("../../../lib/constants");
8
9
  var _logger = require("../../../lib/logger");
9
10
  function _default(route, auth, storage) {
10
11
  // searching packages
11
- route.get('/-/all(/since)?', function (req, res, next) {
12
+ route.get(_middleware.SEARCH_API_ENDPOINTS.deprecated_search, function (req, res, next) {
12
13
  let received_end = false;
13
14
  let response_finished = false;
14
15
  let processing_pkgs = 0;
@@ -103,4 +104,4 @@ function _default(route, auth, storage) {
103
104
  });
104
105
  });
105
106
  }
106
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9sb2dnZXIiLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsInN0b3JhZ2UiLCJnZXQiLCJyZXEiLCJyZXMiLCJuZXh0IiwicmVjZWl2ZWRfZW5kIiwicmVzcG9uc2VfZmluaXNoZWQiLCJwcm9jZXNzaW5nX3BrZ3MiLCJmaXJzdFBhY2thZ2UiLCJsb2dnZXIiLCJ3YXJuIiwic3RhdHVzIiwic2V0IiwiSEVBREVSUyIsIkNPTlRFTlRfVFlQRSIsIkpTT05fQ0hBUlNFVCIsInJlc3BTaG91bGRCZUFycmF5IiwicGF0aCIsImVuZHNXaXRoIiwiY2hlY2tfZmluaXNoIiwiZW5kIiwid3JpdGUiLCJzdHJlYW0iLCJzZWFyY2giLCJxdWVyeSIsInN0YXJ0a2V5Iiwib24iLCJlYWNoIiwicGtnIiwiYWxsb3dfYWNjZXNzIiwicGFja2FnZU5hbWUiLCJuYW1lIiwicmVtb3RlX3VzZXIiLCJlcnIiLCJhbGxvd2VkIiwiU3RyaW5nIiwibWF0Y2giLCJhYm9ydCIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3NlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUElfRVJST1IsIEhFQURFUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGUsIGF1dGgsIHN0b3JhZ2UpOiB2b2lkIHtcbiAgLy8gc2VhcmNoaW5nIHBhY2thZ2VzXG4gIHJvdXRlLmdldCgnLy0vYWxsKC9zaW5jZSk/JywgZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgbGV0IHJlY2VpdmVkX2VuZCA9IGZhbHNlO1xuICAgIGxldCByZXNwb25zZV9maW5pc2hlZCA9IGZhbHNlO1xuICAgIGxldCBwcm9jZXNzaW5nX3BrZ3MgPSAwO1xuICAgIGxldCBmaXJzdFBhY2thZ2UgPSB0cnVlO1xuICAgIGxvZ2dlci53YXJuKCcvLS9hbGwgc2VhcmNoIGVuZHBvaW50IGlzIGRlcHJlY2F0ZWQsIG1pZ2h0IGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZScpO1xuICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICByZXMuc2V0KEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT05fQ0hBUlNFVCk7XG5cbiAgICAvKlxuICAgICAqIE9mZmljYWwgTlBNIHJlZ2lzdHJ5IChyZWdpc3RyeS5ucG1qcy5vcmcpIG5vIGxvbmdlciByZXR1cm4gd2hvbGUgZGF0YWJhc2UsXG4gICAgICogVGhleSBvbmx5IHJldHVybiBwYWNrYWdlcyBtYXRjaGVkIHdpdGgga2V5d29yZCBpbiBgcmVmZXJlcjogc2VhcmNoIHBrZy1uYW1lYCxcbiAgICAgKiBBbmQgTlBNIGNsaWVudCB3aWxsIHJlcXVlc3Qgc2VydmVyIGluIGV2ZXJ5IHNlYXJjaC5cbiAgICAgKlxuICAgICAqIFRoZSBtYWdpYyBudW1iZXIgOTk5OTkgd2FzIHNlbnQgYnkgTlBNIHJlZ2lzdHJ5LiBNb2RpZnkgaXQgbWF5IGNhdXNlZCBzdHJhbmdlXG4gICAgICogYmVoYXZpb3VyIGluIHRoZSBmdXR1cmUuXG4gICAgICpcbiAgICAgKiBCVFc6IE5QTSB3aWxsIG5vdCByZXR1cm4gcmVzdWx0IGlmIHVzZXItYWdlbnQgZG9lcyBub3QgY29udGFpbiBzdHJpbmcgJ25wbScsXG4gICAgICogU2VlOiBtZXRob2QgJ3JlcXVlc3QnIGluIHVwLXN0b3JhZ2UuanNcbiAgICAgKlxuICAgICAqIElmIHRoZXJlIGlzIG5vIGNhY2hlIGluIGxvY2FsLCBOUE0gd2lsbCByZXF1ZXN0IC8tL2FsbCwgdGhlbiBnZXQgcmVzcG9uc2Ugd2l0aFxuICAgICAqIF91cGRhdGVkOiA5OTk5OSwgJ0RhdGUnIGluIHJlc3BvbnNlIGhlYWRlciB3YXMgTW9uLCAxMCBPY3QgMTk4MyAwMDoxMjo0OCBHTVQsXG4gICAgICogdGhpcyB3aWxsIG1ha2UgTlBNIGFsd2F5cyBxdWVyeSBmcm9tIHNlcnZlclxuICAgICAqXG4gICAgICogRGF0YSBzdHJ1Y3R1cmUgYWxzbyBkaWZmZXJlbnQsIHdoZWwgcmVxdWVzdCAvLS9hbGwsIHJlc3BvbnNlIGlzIGFuIG9iamVjdCwgYnV0XG4gICAgICogd2hlbiByZXF1ZXN0IC8tL2FsbC9zaW5jZSwgcmVzcG9uc2UgaXMgYW4gYXJyYXlcbiAgICAgKi9cbiAgICBjb25zdCByZXNwU2hvdWxkQmVBcnJheSA9IHJlcS5wYXRoLmVuZHNXaXRoKCcvc2luY2UnKTtcbiAgICBpZiAoIXJlc3BTaG91bGRCZUFycmF5KSB7XG4gICAgICByZXMuc2V0KCdEYXRlJywgJ01vbiwgMTAgT2N0IDE5ODMgMDA6MTI6NDggR01UJyk7XG4gICAgfVxuICAgIGNvbnN0IGNoZWNrX2ZpbmlzaCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIGlmICghcmVjZWl2ZWRfZW5kKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9jZXNzaW5nX3BrZ3MpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3BvbnNlX2ZpbmlzaGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNlX2ZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIGlmIChyZXNwU2hvdWxkQmVBcnJheSkge1xuICAgICAgICByZXMuZW5kKCddXFxuJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXMuZW5kKCd9XFxuJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChyZXNwU2hvdWxkQmVBcnJheSkge1xuICAgICAgcmVzLndyaXRlKCdbJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcy53cml0ZSgne1wiX3VwZGF0ZWRcIjonICsgOTk5OTkpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2Uuc2VhcmNoKHJlcS5xdWVyeS5zdGFydGtleSB8fCAwLCB7IHJlcTogcmVxIH0pO1xuXG4gICAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gZWFjaChwa2cpIHtcbiAgICAgIHByb2Nlc3NpbmdfcGtncysrO1xuXG4gICAgICBhdXRoLmFsbG93X2FjY2Vzcyh7IHBhY2thZ2VOYW1lOiBwa2cubmFtZSB9LCByZXEucmVtb3RlX3VzZXIsIGZ1bmN0aW9uIChlcnIsIGFsbG93ZWQpIHtcbiAgICAgICAgcHJvY2Vzc2luZ19wa2dzLS07XG5cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGlmIChlcnIuc3RhdHVzICYmIFN0cmluZyhlcnIuc3RhdHVzKS5tYXRjaCgvXjRcXGRcXGQkLykpIHtcbiAgICAgICAgICAgIC8vIGF1dGggcGx1Z2luIHJldHVybnMgNHh4IHVzZXIgZXJyb3IsXG4gICAgICAgICAgICAvLyB0aGF0J3MgZXF1aXZhbGVudCBvZiAhYWxsb3dlZCBiYXNpY2FsbHlcbiAgICAgICAgICAgIGFsbG93ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RyZWFtLmFib3J0KGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFsbG93ZWQpIHtcbiAgICAgICAgICBpZiAocmVzcFNob3VsZEJlQXJyYXkpIHtcbiAgICAgICAgICAgIHJlcy53cml0ZShgJHtmaXJzdFBhY2thZ2UgPyAnJyA6ICcsJ30ke0pTT04uc3RyaW5naWZ5KHBrZyl9XFxuYCk7XG4gICAgICAgICAgICBpZiAoZmlyc3RQYWNrYWdlKSB7XG4gICAgICAgICAgICAgIGZpcnN0UGFja2FnZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMud3JpdGUoJyxcXG4nICsgSlNPTi5zdHJpbmdpZnkocGtnLm5hbWUpICsgJzonICsgSlNPTi5zdHJpbmdpZnkocGtnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2hlY2tfZmluaXNoKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ3NlYXJjaCBgLy0vYWxsIGVuZHBvaW50IGhhcyBmYWlsZWQgQHtlcnJ9JywgZXJyKTtcbiAgICAgIHJlY2VpdmVkX2VuZCA9IHRydWU7XG4gICAgICBjaGVja19maW5pc2goKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVjZWl2ZWRfZW5kID0gdHJ1ZTtcbiAgICAgIGNoZWNrX2ZpbmlzaCgpO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRWUsU0FBQUUsU0FBVUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLE9BQU8sRUFBUTtFQUNuRDtFQUNBRixLQUFLLENBQUNHLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsSUFBSSxFQUFFO0lBQ3JELElBQUlDLFlBQVksR0FBRyxLQUFLO0lBQ3hCLElBQUlDLGlCQUFpQixHQUFHLEtBQUs7SUFDN0IsSUFBSUMsZUFBZSxHQUFHLENBQUM7SUFDdkIsSUFBSUMsWUFBWSxHQUFHLElBQUk7SUFDdkJDLGNBQU0sQ0FBQ0MsSUFBSSxDQUFDLGtGQUFrRixDQUFDO0lBQy9GUCxHQUFHLENBQUNRLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDZlIsR0FBRyxDQUFDUyxHQUFHLENBQUNDLGtCQUFPLENBQUNDLFlBQVksRUFBRUQsa0JBQU8sQ0FBQ0UsWUFBWSxDQUFDOztJQUVuRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFD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
107
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWlkZGxld2FyZSIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl9kZWZhdWx0Iiwicm91dGUiLCJhdXRoIiwic3RvcmFnZSIsImdldCIsIlNFQVJDSF9BUElfRU5EUE9JTlRTIiwiZGVwcmVjYXRlZF9zZWFyY2giLCJyZXEiLCJyZXMiLCJuZXh0IiwicmVjZWl2ZWRfZW5kIiwicmVzcG9uc2VfZmluaXNoZWQiLCJwcm9jZXNzaW5nX3BrZ3MiLCJmaXJzdFBhY2thZ2UiLCJsb2dnZXIiLCJ3YXJuIiwic3RhdHVzIiwic2V0IiwiSEVBREVSUyIsIkNPTlRFTlRfVFlQRSIsIkpTT05fQ0hBUlNFVCIsInJlc3BTaG91bGRCZUFycmF5IiwicGF0aCIsImVuZHNXaXRoIiwiY2hlY2tfZmluaXNoIiwiZW5kIiwid3JpdGUiLCJzdHJlYW0iLCJzZWFyY2giLCJxdWVyeSIsInN0YXJ0a2V5Iiwib24iLCJlYWNoIiwicGtnIiwiYWxsb3dfYWNjZXNzIiwicGFja2FnZU5hbWUiLCJuYW1lIiwicmVtb3RlX3VzZXIiLCJlcnIiLCJhbGxvd2VkIiwiU3RyaW5nIiwibWF0Y2giLCJhYm9ydCIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3NlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTRUFSQ0hfQVBJX0VORFBPSU5UUyB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5cbmltcG9ydCB7IEhFQURFUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGUsIGF1dGgsIHN0b3JhZ2UpOiB2b2lkIHtcbiAgLy8gc2VhcmNoaW5nIHBhY2thZ2VzXG4gIHJvdXRlLmdldChTRUFSQ0hfQVBJX0VORFBPSU5UUy5kZXByZWNhdGVkX3NlYXJjaCwgZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgbGV0IHJlY2VpdmVkX2VuZCA9IGZhbHNlO1xuICAgIGxldCByZXNwb25zZV9maW5pc2hlZCA9IGZhbHNlO1xuICAgIGxldCBwcm9jZXNzaW5nX3BrZ3MgPSAwO1xuICAgIGxldCBmaXJzdFBhY2thZ2UgPSB0cnVlO1xuICAgIGxvZ2dlci53YXJuKCcvLS9hbGwgc2VhcmNoIGVuZHBvaW50IGlzIGRlcHJlY2F0ZWQsIG1pZ2h0IGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZScpO1xuICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICByZXMuc2V0KEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT05fQ0hBUlNFVCk7XG5cbiAgICAvKlxuICAgICAqIE9mZmljYWwgTlBNIHJlZ2lzdHJ5IChyZWdpc3RyeS5ucG1qcy5vcmcpIG5vIGxvbmdlciByZXR1cm4gd2hvbGUgZGF0YWJhc2UsXG4gICAgICogVGhleSBvbmx5IHJldHVybiBwYWNrYWdlcyBtYXRjaGVkIHdpdGgga2V5d29yZCBpbiBgcmVmZXJlcjogc2VhcmNoIHBrZy1uYW1lYCxcbiAgICAgKiBBbmQgTlBNIGNsaWVudCB3aWxsIHJlcXVlc3Qgc2VydmVyIGluIGV2ZXJ5IHNlYXJjaC5cbiAgICAgKlxuICAgICAqIFRoZSBtYWdpYyBudW1iZXIgOTk5OTkgd2FzIHNlbnQgYnkgTlBNIHJlZ2lzdHJ5LiBNb2RpZnkgaXQgbWF5IGNhdXNlZCBzdHJhbmdlXG4gICAgICogYmVoYXZpb3VyIGluIHRoZSBmdXR1cmUuXG4gICAgICpcbiAgICAgKiBCVFc6IE5QTSB3aWxsIG5vdCByZXR1cm4gcmVzdWx0IGlmIHVzZXItYWdlbnQgZG9lcyBub3QgY29udGFpbiBzdHJpbmcgJ25wbScsXG4gICAgICogU2VlOiBtZXRob2QgJ3JlcXVlc3QnIGluIHVwLXN0b3JhZ2UuanNcbiAgICAgKlxuICAgICAqIElmIHRoZXJlIGlzIG5vIGNhY2hlIGluIGxvY2FsLCBOUE0gd2lsbCByZXF1ZXN0IC8tL2FsbCwgdGhlbiBnZXQgcmVzcG9uc2Ugd2l0aFxuICAgICAqIF91cGRhdGVkOiA5OTk5OSwgJ0RhdGUnIGluIHJlc3BvbnNlIGhlYWRlciB3YXMgTW9uLCAxMCBPY3QgMTk4MyAwMDoxMjo0OCBHTVQsXG4gICAgICogdGhpcyB3aWxsIG1ha2UgTlBNIGFsd2F5cyBxdWVyeSBmcm9tIHNlcnZlclxuICAgICAqXG4gICAgICogRGF0YSBzdHJ1Y3R1cmUgYWxzbyBkaWZmZXJlbnQsIHdoZWwgcmVxdWVzdCAvLS9hbGwsIHJlc3BvbnNlIGlzIGFuIG9iamVjdCwgYnV0XG4gICAgICogd2hlbiByZXF1ZXN0IC8tL2FsbC9zaW5jZSwgcmVzcG9uc2UgaXMgYW4gYXJyYXlcbiAgICAgKi9cbiAgICBjb25zdCByZXNwU2hvdWxkQmVBcnJheSA9IHJlcS5wYXRoLmVuZHNXaXRoKCcvc2luY2UnKTtcbiAgICBpZiAoIXJlc3BTaG91bGRCZUFycmF5KSB7XG4gICAgICByZXMuc2V0KCdEYXRlJywgJ01vbiwgMTAgT2N0IDE5ODMgMDA6MTI6NDggR01UJyk7XG4gICAgfVxuICAgIGNvbnN0IGNoZWNrX2ZpbmlzaCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIGlmICghcmVjZWl2ZWRfZW5kKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9jZXNzaW5nX3BrZ3MpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3BvbnNlX2ZpbmlzaGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNlX2ZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIGlmIChyZXNwU2hvdWxkQmVBcnJheSkge1xuICAgICAgICByZXMuZW5kKCddXFxuJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXMuZW5kKCd9XFxuJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChyZXNwU2hvdWxkQmVBcnJheSkge1xuICAgICAgcmVzLndyaXRlKCdbJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcy53cml0ZSgne1wiX3VwZGF0ZWRcIjonICsgOTk5OTkpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2Uuc2VhcmNoKHJlcS5xdWVyeS5zdGFydGtleSB8fCAwLCB7IHJlcTogcmVxIH0pO1xuXG4gICAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gZWFjaChwa2cpIHtcbiAgICAgIHByb2Nlc3NpbmdfcGtncysrO1xuXG4gICAgICBhdXRoLmFsbG93X2FjY2Vzcyh7IHBhY2thZ2VOYW1lOiBwa2cubmFtZSB9LCByZXEucmVtb3RlX3VzZXIsIGZ1bmN0aW9uIChlcnIsIGFsbG93ZWQpIHtcbiAgICAgICAgcHJvY2Vzc2luZ19wa2dzLS07XG5cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGlmIChlcnIuc3RhdHVzICYmIFN0cmluZyhlcnIuc3RhdHVzKS5tYXRjaCgvXjRcXGRcXGQkLykpIHtcbiAgICAgICAgICAgIC8vIGF1dGggcGx1Z2luIHJldHVybnMgNHh4IHVzZXIgZXJyb3IsXG4gICAgICAgICAgICAvLyB0aGF0J3MgZXF1aXZhbGVudCBvZiAhYWxsb3dlZCBiYXNpY2FsbHlcbiAgICAgICAgICAgIGFsbG93ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RyZWFtLmFib3J0KGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFsbG93ZWQpIHtcbiAgICAgICAgICBpZiAocmVzcFNob3VsZEJlQXJyYXkpIHtcbiAgICAgICAgICAgIHJlcy53cml0ZShgJHtmaXJzdFBhY2thZ2UgPyAnJyA6ICcsJ30ke0pTT04uc3RyaW5naWZ5KHBrZyl9XFxuYCk7XG4gICAgICAgICAgICBpZiAoZmlyc3RQYWNrYWdlKSB7XG4gICAgICAgICAgICAgIGZpcnN0UGFja2FnZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMud3JpdGUoJyxcXG4nICsgSlNPTi5zdHJpbmdpZnkocGtnLm5hbWUpICsgJzonICsgSlNPTi5zdHJpbmdpZnkocGtnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2hlY2tfZmluaXNoKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ3NlYXJjaCBgLy0vYWxsIGVuZHBvaW50IGhhcyBmYWlsZWQgQHtlcnJ9JywgZXJyKTtcbiAgICAgIHJlY2VpdmVkX2VuZCA9IHRydWU7XG4gICAgICBjaGVja19maW5pc2goKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVjZWl2ZWRfZW5kID0gdHJ1ZTtcbiAgICAgIGNoZWNrX2ZpbmlzaCgpO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRWUsU0FBQUcsU0FBVUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLE9BQU8sRUFBUTtFQUNuRDtFQUNBRixLQUFLLENBQUNHLEdBQUcsQ0FBQ0MsZ0NBQW9CLENBQUNDLGlCQUFpQixFQUFFLFVBQVVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxJQUFJLEVBQUU7SUFDMUUsSUFBSUMsWUFBWSxHQUFHLEtBQUs7SUFDeEIsSUFBSUMsaUJBQWlCLEdBQUcsS0FBSztJQUM3QixJQUFJQyxlQUFlLEdBQUcsQ0FBQztJQUN2QixJQUFJQyxZQUFZLEdBQUcsSUFBSTtJQUN2QkMsY0FBTSxDQUFDQyxJQUFJLENBQUMsa0ZBQWtGLENBQUM7SUFDL0ZQLEdBQUcsQ0FBQ1EsTUFBTSxDQUFDLEdBQUcs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
@@ -6,10 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = _default;
7
7
  var _lodash = _interopRequireDefault(require("lodash"));
8
8
  var _core = require("@verdaccio/core");
9
+ var _middleware = require("@verdaccio/middleware");
9
10
  var _constants = require("../../../lib/constants");
10
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
12
  function _default(route, storage) {
12
- route.get('/-/_view/starredByUser', (req, res, next) => {
13
+ route.get(_middleware.STARS_API_ENDPOINTS.get_user_starred_packages, (req, res, next) => {
13
14
  // @ts-ignore
14
15
  const query = req.query;
15
16
  if (typeof (query === null || query === void 0 ? void 0 : query.key) !== 'string') {
@@ -31,4 +32,4 @@ function _default(route, storage) {
31
32
  });
32
33
  });
33
34
  }
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsIl9jb25zdGFudHMiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsInJvdXRlIiwic3RvcmFnZSIsImdldCIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImtleSIsImVycm9yVXRpbHMiLCJnZXRCYWRSZXF1ZXN0IiwiZ2V0TG9jYWxEYXRhYmFzZSIsImVyciIsImxvY2FsUGFja2FnZXMiLCJmaWx0ZXJlZFBhY2thZ2VzIiwiZmlsdGVyIiwibG9jYWxQYWNrYWdlIiwiXyIsImtleXMiLCJVU0VSUyIsImluY2x1ZGVzIiwidG9TdHJpbmciLCJyZXBsYWNlIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJPSyIsInJvd3MiLCJtYXAiLCJmaWx0ZXJlZFBhY2thZ2UiLCJ2YWx1ZSIsIm5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9zdGFycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNwb25zZSwgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBlcnJvclV0aWxzIH0gZnJvbSAnQHZlcmRhY2Npby9jb3JlJztcbmltcG9ydCB7IE1hbmlmZXN0LCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEhUVFBfU1RBVFVTLCBVU0VSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyLCBzdG9yYWdlOiBTdG9yYWdlKTogdm9pZCB7XG4gIHJvdXRlLmdldChcbiAgICAnLy0vX3ZpZXcvc3RhcnJlZEJ5VXNlcicsXG4gICAgKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHF1ZXJ5OiB7IGtleTogc3RyaW5nIH0gPSByZXEucXVlcnk7XG4gICAgICBpZiAodHlwZW9mIHF1ZXJ5Py5rZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yVXRpbHMuZ2V0QmFkUmVxdWVzdCgnbWlzc2luZyBxdWVyeSBrZXkgdXNlcm5hbWUnKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHN0b3JhZ2UuZ2V0TG9jYWxEYXRhYmFzZSgoZXJyLCBsb2NhbFBhY2thZ2VzOiBWZXJzaW9uW10pID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFBhY2thZ2VzOiBWZXJzaW9uW10gPSBsb2NhbFBhY2thZ2VzLmZpbHRlcigobG9jYWxQYWNrYWdlOiBWZXJzaW9uKSA9PlxuICAgICAgICAgIF8ua2V5cyhsb2NhbFBhY2thZ2VbVVNFUlNdKS5pbmNsdWRlcyhxdWVyeT8ua2V5LnRvU3RyaW5nKCkucmVwbGFjZSgvWydcIl0rL2csICcnKSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgICAgbmV4dCh7XG4gICAgICAgICAgcm93czogZmlsdGVyZWRQYWNrYWdlcy5tYXAoKGZpbHRlcmVkUGFja2FnZTogVmVyc2lvbikgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXJlZFBhY2thZ2UubmFtZSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFHQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFBNEQsU0FBQUQsdUJBQUFJLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFJN0MsU0FBQUcsU0FBVUMsS0FBYSxFQUFFQyxPQUFnQixFQUFRO0VBQzlERCxLQUFLLENBQUNFLEdBQUcsQ0FDUCx3QkFBd0IsRUFDeEIsQ0FBQ0MsR0FBbUIsRUFBRUMsR0FBYSxFQUFFQyxJQUFzQixLQUFXO0lBQ3BFO0lBQ0EsTUFBTUMsS0FBc0IsR0FBR0gsR0FBRyxDQUFDRyxLQUFLO0lBQ3hDLElBQUksUUFBT0EsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVDLEdBQUcsTUFBSyxRQUFRLEVBQUU7TUFDbEMsT0FBT0YsSUFBSSxDQUFDRyxnQkFBVSxDQUFDQyxhQUFhLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNyRTs7SUFFQTtJQUNBUixPQUFPLENBQUNTLGdCQUFnQixDQUFDLENBQUNDLEdBQUcsRUFBRUMsYUFBd0IsS0FBSztNQUMxRCxJQUFJRCxHQUFHLEVBQUU7UUFDUCxPQUFPTixJQUFJLENBQUNNLEdBQUcsQ0FBQztNQUNsQjtNQUVBLE1BQU1FLGdCQUEyQixHQUFHRCxhQUFhLENBQUNFLE1BQU0sQ0FBRUMsWUFBcUIsSUFDN0VDLGVBQUMsQ0FBQ0MsSUFBSSxDQUFDRixZQUFZLENBQUNHLGdCQUFLLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUNiLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFQyxHQUFHLENBQUNhLFFBQVEsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQ2xGLENBQUM7TUFFRGpCLEdBQUcsQ0FBQ2tCLE1BQU0sQ0FBQ0Msc0JBQVcsQ0FBQ0MsRUFBRSxDQUFDO01BQzFCbkIsSUFBSSxDQUFDO1FBQ0hvQixJQUFJLEVBQUVaLGdCQUFnQixDQUFDYSxHQUFHLENBQUVDLGVBQXdCLEtBQU07VUFDeERDLEtBQUssRUFBRUQsZUFBZSxDQUFDRTtRQUN6QixDQUFDLENBQUM7TUFDSixDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7RUFDSixDQUNGLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsIl9taWRkbGV3YXJlIiwiX2NvbnN0YW50cyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZhdWx0Iiwicm91dGUiLCJzdG9yYWdlIiwiZ2V0IiwiU1RBUlNfQVBJX0VORFBPSU5UUyIsImdldF91c2VyX3N0YXJyZWRfcGFja2FnZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJrZXkiLCJlcnJvclV0aWxzIiwiZ2V0QmFkUmVxdWVzdCIsImdldExvY2FsRGF0YWJhc2UiLCJlcnIiLCJsb2NhbFBhY2thZ2VzIiwiZmlsdGVyZWRQYWNrYWdlcyIsImZpbHRlciIsImxvY2FsUGFja2FnZSIsIl8iLCJrZXlzIiwiVVNFUlMiLCJpbmNsdWRlcyIsInRvU3RyaW5nIiwicmVwbGFjZSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJyb3dzIiwibWFwIiwiZmlsdGVyZWRQYWNrYWdlIiwidmFsdWUiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvc3RhcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgZXJyb3JVdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBTVEFSU19BUElfRU5EUE9JTlRTIH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IE1hbmlmZXN0LCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEhUVFBfU1RBVFVTLCBVU0VSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyLCBzdG9yYWdlOiBTdG9yYWdlKTogdm9pZCB7XG4gIHJvdXRlLmdldChcbiAgICBTVEFSU19BUElfRU5EUE9JTlRTLmdldF91c2VyX3N0YXJyZWRfcGFja2FnZXMsXG4gICAgKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHF1ZXJ5OiB7IGtleTogc3RyaW5nIH0gPSByZXEucXVlcnk7XG4gICAgICBpZiAodHlwZW9mIHF1ZXJ5Py5rZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yVXRpbHMuZ2V0QmFkUmVxdWVzdCgnbWlzc2luZyBxdWVyeSBrZXkgdXNlcm5hbWUnKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHN0b3JhZ2UuZ2V0TG9jYWxEYXRhYmFzZSgoZXJyLCBsb2NhbFBhY2thZ2VzOiBWZXJzaW9uW10pID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFBhY2thZ2VzOiBWZXJzaW9uW10gPSBsb2NhbFBhY2thZ2VzLmZpbHRlcigobG9jYWxQYWNrYWdlOiBWZXJzaW9uKSA9PlxuICAgICAgICAgIF8ua2V5cyhsb2NhbFBhY2thZ2VbVVNFUlNdKS5pbmNsdWRlcyhxdWVyeT8ua2V5LnRvU3RyaW5nKCkucmVwbGFjZSgvWydcIl0rL2csICcnKSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgICAgbmV4dCh7XG4gICAgICAgICAgcm93czogZmlsdGVyZWRQYWNrYWdlcy5tYXAoKGZpbHRlcmVkUGFja2FnZTogVmVyc2lvbikgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXJlZFBhY2thZ2UubmFtZSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFHQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFBNEQsU0FBQUQsdUJBQUFLLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFJN0MsU0FBQUcsU0FBVUMsS0FBYSxFQUFFQyxPQUFnQixFQUFRO0VBQzlERCxLQUFLLENBQUNFLEdBQUcsQ0FDUEMsK0JBQW1CLENBQUNDLHlCQUF5QixFQUM3QyxDQUFDQyxHQUFtQixFQUFFQyxHQUFhLEVBQUVDLElBQXNCLEtBQVc7SUFDcEU7SUFDQSxNQUFNQyxLQUFzQixHQUFHSCxHQUFHLENBQUNHLEtBQUs7SUFDeEMsSUFBSSxRQUFPQSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUMsR0FBRyxNQUFLLFFBQVEsRUFBRTtNQUNsQyxPQUFPRixJQUFJLENBQUNHLGdCQUFVLENBQUNDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3JFOztJQUVBO0lBQ0FWLE9BQU8sQ0FBQ1csZ0JBQWdCLENBQUMsQ0FBQ0MsR0FBRyxFQUFFQyxhQUF3QixLQUFLO01BQzFELElBQUlELEdBQUcsRUFBRTtRQUNQLE9BQU9OLElBQUksQ0FBQ00sR0FBRyxDQUFDO01BQ2xCO01BRUEsTUFBTUUsZ0JBQTJCLEdBQUdELGFBQWEsQ0FBQ0UsTUFBTSxDQUFFQyxZQUFxQixJQUM3RUMsZUFBQyxDQUFDQyxJQUFJLENBQUNGLFlBQVksQ0FBQ0csZ0JBQUssQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQ2IsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVDLEdBQUcsQ0FBQ2EsUUFBUSxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FDbEYsQ0FBQztNQUVEakIsR0FBRyxDQUFDa0IsTUFBTSxDQUFDQyxzQkFBVyxDQUFDQyxFQUFFLENBQUM7TUFDMUJuQixJQUFJLENBQUM7UUFDSG9CLElBQUksRUFBRVosZ0JBQWdCLENBQUNhLEdBQUcsQ0FBRUMsZUFBd0IsS0FBTTtVQUN4REMsS0FBSyxFQUFFRCxlQUFlLENBQUNFO1FBQ3pCLENBQUMsQ0FBQztNQUNKLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKLENBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
@@ -32,6 +32,7 @@ function _default(route, auth, config) {
32
32
  const remoteName = req.remote_user.name;
33
33
  if (_lodash.default.isNil(remoteName) === false && _lodash.default.isNil(name) === false && remoteName === name) {
34
34
  auth.authenticate(name, password, async function callbackAuthenticate(err, user) {
35
+ var _user$groups;
35
36
  if (err) {
36
37
  _logger.logger.error({
37
38
  name,
@@ -39,7 +40,7 @@ function _default(route, auth, config) {
39
40
  }, 'authenticating for user @{username} failed. Error: @{err.message}');
40
41
  return next(_utils2.ErrorCode.getCode(_constants.HTTP_STATUS.UNAUTHORIZED, _constants.API_ERROR.BAD_USERNAME_PASSWORD));
41
42
  }
42
- const restoredRemoteUser = (0, _config.createRemoteUser)(name, user.groups || []);
43
+ const restoredRemoteUser = (0, _config.createRemoteUser)(name, (_user$groups = user === null || user === void 0 ? void 0 : user.groups) !== null && _user$groups !== void 0 ? _user$groups : []);
43
44
  const token = await (0, _auth.getApiToken)(auth, config, restoredRemoteUser, password);
44
45
  res.status(_constants.HTTP_STATUS.CREATED);
45
46
  res.set(_constants.HEADERS.CACHE_CONTROL, 'no-cache, no-store');
@@ -82,4 +83,4 @@ function _default(route, auth, config) {
82
83
  });
83
84
  route.use(userRouter);
84
85
  }
85
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9hdXRoIiwiX2NvbmZpZyIsIl9jb3JlIiwiX21pZGRsZXdhcmUiLCJfdXRpbHMiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl91dGlsczIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsImNvbmZpZyIsInVzZXJSb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwiZ2V0IiwicmF0ZUxpbWl0IiwidXNlclJhdGVMaW1pdCIsInJlcSIsInJlcyIsIm5leHQiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIk9LIiwib2siLCJnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSIsInJlbW90ZV91c2VyIiwibmFtZSIsInB1dCIsInBhc3N3b3JkIiwiYm9keSIsInJlbW90ZU5hbWUiLCJfIiwiaXNOaWwiLCJhdXRoZW50aWNhdGUiLCJjYWxsYmFja0F1dGhlbnRpY2F0ZSIsImVyciIsInVzZXIiLCJsb2dnZXIiLCJlcnJvciIsIkVycm9yQ29kZSIsImdldENvZGUiLCJVTkFVVEhPUklaRUQiLCJBUElfRVJST1IiLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJyZXN0b3JlZFJlbW90ZVVzZXIiLCJjcmVhdGVSZW1vdGVVc2VyIiwiZ3JvdXBzIiwidG9rZW4iLCJnZXRBcGlUb2tlbiIsIkNSRUFURUQiLCJzZXQiLCJIRUFERVJTIiwiQ0FDSEVfQ09OVFJPTCIsInZhbGlkYXRpb25VdGlscyIsInZhbGlkYXRlUGFzc3dvcmQiLCJCQURfUkVRVUVTVCIsIlBBU1NXT1JEX1NIT1JUIiwiYWRkX3VzZXIiLCJJTlRFUk5BTF9FUlJPUiIsIm1lc3NhZ2UiLCJnZXRDb25mbGljdCIsInVuZGVmaW5lZCIsImRlbGV0ZSIsIkFQSV9NRVNTQUdFIiwiTE9HR0VEX09VVCIsInVzZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3VzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4cHJlc3MsIHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgZ2V0QXBpVG9rZW4gfSBmcm9tICdAdmVyZGFjY2lvL2F1dGgnO1xuaW1wb3J0IHsgY3JlYXRlUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vY29uZmlnJztcbmltcG9ydCB7IHZhbGlkYXRpb25VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyByYXRlTGltaXQgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgQ29uZmlnLCBSZW1vdGVVc2VyIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdXRpbHMnO1xuXG5pbXBvcnQgQXV0aCBmcm9tICcuLi8uLi8uLi9saWIvYXV0aCc7XG5pbXBvcnQgeyBBUElfRVJST1IsIEFQSV9NRVNTQUdFLCBIRUFERVJTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IEF1dGgsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIC8qIGVzbGludCBuZXctY2FwOm9mZiAqL1xuICBjb25zdCB1c2VyUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcblxuICB1c2VyUm91dGVyLmdldChcbiAgICAnLy0vdXNlci86b3JnX2NvdWNoZGJfdXNlcicsXG4gICAgcmF0ZUxpbWl0KGNvbmZpZz8udXNlclJhdGVMaW1pdCksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuT0spO1xuICAgICAgbmV4dCh7XG4gICAgICAgIG9rOiBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZShyZXEucmVtb3RlX3VzZXIubmFtZSksXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgdXNlclJvdXRlci5wdXQoXG4gICAgJy8tL3VzZXIvOm9yZ19jb3VjaGRiX3VzZXIvOl9yZXY/LzpyZXZpc2lvbj8nLFxuICAgIHJhdGVMaW1pdChjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCB7IG5hbWUsIHBhc3N3b3JkIH0gPSByZXEuYm9keTtcbiAgICAgIGNvbnN0IHJlbW90ZU5hbWUgPSByZXEucmVtb3RlX3VzZXIubmFtZTtcblxuICAgICAgaWYgKF8uaXNOaWwocmVtb3RlTmFtZSkgPT09IGZhbHNlICYmIF8uaXNOaWwobmFtZSkgPT09IGZhbHNlICYmIHJlbW90ZU5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgYXV0aC5hdXRoZW50aWNhdGUoXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICBhc3luYyBmdW5jdGlvbiBjYWxsYmFja0F1dGhlbnRpY2F0ZShlcnIsIHVzZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgIHsgbmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAgICAgJ2F1dGhlbnRpY2F0aW5nIGZvciB1c2VyIEB7dXNlcm5hbWV9IGZhaWxlZC4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9J1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChcbiAgICAgICAgICAgICAgICBFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQsIEFQSV9FUlJPUi5CQURfVVNFUk5BTUVfUEFTU1dPUkQpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVkUmVtb3RlVXNlcjogUmVtb3RlVXNlciA9IGNyZWF0ZVJlbW90ZVVzZXIobmFtZSwgdXNlci5ncm91cHMgfHwgW10pO1xuICAgICAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRBcGlUb2tlbihhdXRoLCBjb25maWcsIHJlc3RvcmVkUmVtb3RlVXNlciwgcGFzc3dvcmQpO1xuXG4gICAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgICAgICAgcmVzLnNldChIRUFERVJTLkNBQ0hFX0NPTlRST0wsICduby1jYWNoZSwgbm8tc3RvcmUnKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICAgICAgb2s6IGdldEF1dGhlbnRpY2F0ZWRNZXNzYWdlKHJlcS5yZW1vdGVfdXNlci5uYW1lKSxcbiAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsaWRhdGlvblV0aWxzLnZhbGlkYXRlUGFzc3dvcmQocGFzc3dvcmQpID09PSBmYWxzZSkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuQkFEX1JFUVVFU1QsIEFQSV9FUlJPUi5QQVNTV09SRF9TSE9SVCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXV0aC5hZGRfdXNlcihuYW1lLCBwYXNzd29yZCwgYXN5bmMgZnVuY3Rpb24gKGVyciwgdXNlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID49IEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNUICYmIGVyci5zdGF0dXMgPCBIVFRQX1NUQVRVUy5JTlRFUk5BTF9FUlJPUikge1xuICAgICAgICAgICAgICAvLyBXaXRoIG5wbSByZWdpc3RlcmluZyBpcyB0aGUgc2FtZSBhcyBsb2dnaW5nIGluLFxuICAgICAgICAgICAgICAvLyBhbmQgbnBtIGFjY2VwdHMgb25seSBhbiA0MDkgZXJyb3IuXG4gICAgICAgICAgICAgIC8vIFNvLCBjaGFuZ2luZyBzdGF0dXMgY29kZSBoZXJlLlxuICAgICAgICAgICAgICByZXR1cm4gbmV4dChcbiAgICAgICAgICAgICAgICBFcnJvckNvZGUuZ2V0Q29kZShlcnIuc3RhdHVzLCBlcnIubWVzc2FnZSkgfHwgRXJyb3JDb2RlLmdldENvbmZsaWN0KGVyci5tZXNzYWdlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0b2tlbiA9XG4gICAgICAgICAgICBuYW1lICYmIHBhc3N3b3JkID8gYXdhaXQgZ2V0QXBpVG9rZW4oYXV0aCwgY29uZmlnLCB1c2VyLCBwYXNzd29yZCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgcmVzLnNldChIRUFERVJTLkNBQ0hFX0NPTlRST0wsICduby1jYWNoZSwgbm8tc3RvcmUnKTtcbiAgICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgICBvazogYHVzZXIgJyR7cmVxLmJvZHkubmFtZX0nIGNyZWF0ZWRgLFxuICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB1c2VyUm91dGVyLmRlbGV0ZShcbiAgICAnLy0vdXNlci90b2tlbi8qJyxcbiAgICByYXRlTGltaXQoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5PSyk7XG4gICAgICBuZXh0KHtcbiAgICAgICAgb2s6IEFQSV9NRVNTQUdFLkxPR0dFRF9PVVQsXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUudXNlKHVzZXJSb3V0ZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFHQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxPQUFBLEdBQUFULE9BQUE7QUFBK0MsU0FBQUQsdUJBQUFXLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFHaEMsU0FBQUcsU0FBVUMs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SUEsR0FBRyxDQUFDZixNQUFNLElBQUlDLHNCQUFXLENBQUNrQyxXQUFXLElBQUlwQixHQUFHLENBQUNmLE1BQU0sR0FBR0Msc0JBQVcsQ0FBQ3FDLGNBQWMsRUFBRTtZQUNwRjtZQUNBO1lBQ0E7WUFDQSxPQUFPdkMsSUFBSSxDQUNUb0IsaUJBQVMsQ0FBQ0MsT0FBTyxDQUFDTCxHQUFHLENBQUNmLE1BQU0sRUFBRWUsR0FBRyxDQUFDd0IsT0FBTyxDQUFDLElBQUlwQixpQkFBUyxDQUFDcUIsV0FBVyxDQUFDekIsR0FBRyxDQUFDd0IsT0FBTyxDQUNqRixDQUFDO1VBQ0g7VUFDQSxPQUFPeEMsSUFBSSxDQUFDZ0IsR0FBRyxDQUFDO1FBQ2xCO1FBRUEsTUFBTVksS0FBSyxHQUNUckIsSUFBSSxJQUFJRSxRQUFRLEdBQUcsTUFBTSxJQUFBb0IsaUJBQVcsRUFBQ3ZDLElBQUksRUFBRUMsTUFBTSxFQUFFMEIsSUFBSSxFQUFFUixRQUFRLENBQUMsR0FBR2lDLFNBQVM7UUFFaEY1QyxHQUFHLENBQUNRLFdBQVcsR0FBR1csSUFBSTtRQUN0QmxCLEdBQUcsQ0FBQ0UsTUFBTSxDQUFDQyxzQkFBVyxDQUFDNEIsT0FBTyxDQUFDO1FBQy9CL0IsR0FBRyxDQUFDZ0MsR0FBRyxDQUFDQyxrQkFBTyxDQUFDQyxhQUFhLEVBQUUsb0JBQW9CLENBQUM7UUFDcEQsT0FBT2pDLElBQUksQ0FBQztVQUNWSSxFQUFFLEVBQUUsU0FBU04sR0FBRyxDQUFDWSxJQUFJLENBQUNILElBQUksV0FBVztVQUNyQ3FCO1FBQ0YsQ0FBQyxDQUFDO01BQ0osQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUNGLENBQUM7RUFFRHBDLFVBQVUsQ0FBQ21ELE1BQU0sQ0FDZixpQkFBaUIsRUFDakIsSUFBQS9DLHFCQUFTLEVBQUNMLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFTSxhQUFhLENBQUMsRUFDaEMsVUFBVUMsR0FBbUIsRUFBRUMsR0FBYSxFQUFFQyxJQUFzQixFQUFRO0lBQzFFRCxHQUFHLENBQUNFLE1BQU0sQ0FBQ0Msc0JBQVcsQ0FBQ0MsRUFBRSxDQUFDO0lBQzFCSCxJQUFJLENBQUM7TUFDSEksRUFBRSxFQUFFd0Msc0JBQVcsQ0FBQ0M7SUFDbEIsQ0FBQyxDQUFDO0VBQ0osQ0FDRixDQUFDO0VBRUR4RCxLQUFLLENBQUN5RCxHQUFHLENBQUN0RCxVQUFVLENBQUM7QUFDdkIiLCJpZ25vcmVMaXN0IjpbXX0=
86
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9hdXRoIiwiX2NvbmZpZyIsIl9jb3JlIiwiX21pZGRsZXdhcmUiLCJfdXRpbHMiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl91dGlsczIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsImNvbmZpZyIsInVzZXJSb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwiZ2V0IiwicmF0ZUxpbWl0IiwidXNlclJhdGVMaW1pdCIsInJlcSIsInJlcyIsIm5leHQiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIk9LIiwib2siLCJnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSIsInJlbW90ZV91c2VyIiwibmFtZSIsInB1dCIsInBhc3N3b3JkIiwiYm9keSIsInJlbW90ZU5hbWUiLCJfIiwiaXNOaWwiLCJhdXRoZW50aWNhdGUiLCJjYWxsYmFja0F1dGhlbnRpY2F0ZSIsImVyciIsInVzZXIiLCJfdXNlciRncm91cHMiLCJsb2dnZXIiLCJlcnJvciIsIkVycm9yQ29kZSIsImdldENvZGUiLCJVTkFVVEhPUklaRUQiLCJBUElfRVJST1IiLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJyZXN0b3JlZFJlbW90ZVVzZXIiLCJjcmVhdGVSZW1vdGVVc2VyIiwiZ3JvdXBzIiwidG9rZW4iLCJnZXRBcGlUb2tlbiIsIkNSRUFURUQiLCJzZXQiLCJIRUFERVJTIiwiQ0FDSEVfQ09OVFJPTCIsInZhbGlkYXRpb25VdGlscyIsInZhbGlkYXRlUGFzc3dvcmQiLCJCQURfUkVRVUVTVCIsIlBBU1NXT1JEX1NIT1JUIiwiYWRkX3VzZXIiLCJJTlRFUk5BTF9FUlJPUiIsIm1lc3NhZ2UiLCJnZXRDb25mbGljdCIsInVuZGVmaW5lZCIsImRlbGV0ZSIsIkFQSV9NRVNTQUdFIiwiTE9HR0VEX09VVCIsInVzZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3VzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4cHJlc3MsIHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgZ2V0QXBpVG9rZW4gfSBmcm9tICdAdmVyZGFjY2lvL2F1dGgnO1xuaW1wb3J0IHsgY3JlYXRlUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vY29uZmlnJztcbmltcG9ydCB7IHZhbGlkYXRpb25VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyByYXRlTGltaXQgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgQ29uZmlnLCBSZW1vdGVVc2VyIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdXRpbHMnO1xuXG5pbXBvcnQgQXV0aCBmcm9tICcuLi8uLi8uLi9saWIvYXV0aCc7XG5pbXBvcnQgeyBBUElfRVJST1IsIEFQSV9NRVNTQUdFLCBIRUFERVJTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IEF1dGgsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIC8qIGVzbGludCBuZXctY2FwOm9mZiAqL1xuICBjb25zdCB1c2VyUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcblxuICB1c2VyUm91dGVyLmdldChcbiAgICAnLy0vdXNlci86b3JnX2NvdWNoZGJfdXNlcicsXG4gICAgcmF0ZUxpbWl0KGNvbmZpZz8udXNlclJhdGVMaW1pdCksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuT0spO1xuICAgICAgbmV4dCh7XG4gICAgICAgIG9rOiBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZShyZXEucmVtb3RlX3VzZXIubmFtZSksXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgdXNlclJvdXRlci5wdXQoXG4gICAgJy8tL3VzZXIvOm9yZ19jb3VjaGRiX3VzZXIvOl9yZXY/LzpyZXZpc2lvbj8nLFxuICAgIHJhdGVMaW1pdChjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCB7IG5hbWUsIHBhc3N3b3JkIH0gPSByZXEuYm9keTtcbiAgICAgIGNvbnN0IHJlbW90ZU5hbWUgPSByZXEucmVtb3RlX3VzZXIubmFtZTtcblxuICAgICAgaWYgKF8uaXNOaWwocmVtb3RlTmFtZSkgPT09IGZhbHNlICYmIF8uaXNOaWwobmFtZSkgPT09IGZhbHNlICYmIHJlbW90ZU5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgYXV0aC5hdXRoZW50aWNhdGUoXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICBhc3luYyBmdW5jdGlvbiBjYWxsYmFja0F1dGhlbnRpY2F0ZShlcnIsIHVzZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgIHsgbmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAgICAgJ2F1dGhlbnRpY2F0aW5nIGZvciB1c2VyIEB7dXNlcm5hbWV9IGZhaWxlZC4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9J1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChcbiAgICAgICAgICAgICAgICBFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQsIEFQSV9FUlJPUi5CQURfVVNFUk5BTUVfUEFTU1dPUkQpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVkUmVtb3RlVXNlcjogUmVtb3RlVXNlciA9IGNyZWF0ZVJlbW90ZVVzZXIobmFtZSwgdXNlcj8uZ3JvdXBzID8/IFtdKTtcbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgZ2V0QXBpVG9rZW4oYXV0aCwgY29uZmlnLCByZXN0b3JlZFJlbW90ZVVzZXIsIHBhc3N3b3JkKTtcblxuICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgICAgIHJlcy5zZXQoSEVBREVSUy5DQUNIRV9DT05UUk9MLCAnbm8tY2FjaGUsIG5vLXN0b3JlJyk7XG4gICAgICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgICAgIG9rOiBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZShyZXEucmVtb3RlX3VzZXIubmFtZSksXG4gICAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25VdGlscy52YWxpZGF0ZVBhc3N3b3JkKHBhc3N3b3JkKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNULCBBUElfRVJST1IuUEFTU1dPUkRfU0hPUlQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGguYWRkX3VzZXIobmFtZSwgcGFzc3dvcmQsIGFzeW5jIGZ1bmN0aW9uIChlcnIsIHVzZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSBIVFRQX1NUQVRVUy5CQURfUkVRVUVTVCAmJiBlcnIuc3RhdHVzIDwgSFRUUF9TVEFUVVMuSU5URVJOQUxfRVJST1IpIHtcbiAgICAgICAgICAgICAgLy8gV2l0aCBucG0gcmVnaXN0ZXJpbmcgaXMgdGhlIHNhbWUgYXMgbG9nZ2luZyBpbixcbiAgICAgICAgICAgICAgLy8gYW5kIG5wbSBhY2NlcHRzIG9ubHkgYW4gNDA5IGVycm9yLlxuICAgICAgICAgICAgICAvLyBTbywgY2hhbmdpbmcgc3RhdHVzIGNvZGUgaGVyZS5cbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoXG4gICAgICAgICAgICAgICAgRXJyb3JDb2RlLmdldENvZGUoZXJyLnN0YXR1cywgZXJyLm1lc3NhZ2UpIHx8IEVycm9yQ29kZS5nZXRDb25mbGljdChlcnIubWVzc2FnZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdG9rZW4gPVxuICAgICAgICAgICAgbmFtZSAmJiBwYXNzd29yZFxuICAgICAgICAgICAgICA/IGF3YWl0IGdldEFwaVRva2VuKGF1dGgsIGNvbmZpZywgdXNlciBhcyBSZW1vdGVVc2VyLCBwYXNzd29yZClcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgcmVzLnNldChIRUFERVJTLkNBQ0hFX0NPTlRST0wsICduby1jYWNoZSwgbm8tc3RvcmUnKTtcbiAgICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgICBvazogYHVzZXIgJyR7cmVxLmJvZHkubmFtZX0nIGNyZWF0ZWRgLFxuICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB1c2VyUm91dGVyLmRlbGV0ZShcbiAgICAnLy0vdXNlci90b2tlbi8qJyxcbiAgICByYXRlTGltaXQoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5PSyk7XG4gICAgICBuZXh0KHtcbiAgICAgICAgb2s6IEFQSV9NRVNTQUdFLkxPR0dFRF9PVVQsXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUudXNlKHVzZXJSb3V0ZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFHQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxPQUFBLEdBQUFULE9BQUE7QUFBK0MsU0FBQUQsdUJBQUFXLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENB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