parse-server 9.4.1-alpha.2 → 9.4.1-alpha.3
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.
|
@@ -9,6 +9,7 @@ var _middlewares = require("../middlewares");
|
|
|
9
9
|
var _StatusHandler = require("../StatusHandler");
|
|
10
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
11
|
var _logger = require("../logger");
|
|
12
|
+
var _Error = require("../Error");
|
|
12
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
14
|
// FunctionsRouter.js
|
|
14
15
|
|
|
@@ -55,6 +56,9 @@ class FunctionsRouter extends _PromiseRouter.default {
|
|
|
55
56
|
});
|
|
56
57
|
}
|
|
57
58
|
static handleCloudJob(req) {
|
|
59
|
+
if (req.auth.isReadOnly) {
|
|
60
|
+
throw (0, _Error.createSanitizedError)(Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to run a job.", req.config);
|
|
61
|
+
}
|
|
58
62
|
const jobName = req.params.jobName || req.body?.jobName;
|
|
59
63
|
const applicationId = req.config.applicationId;
|
|
60
64
|
const jobHandler = (0, _StatusHandler.jobStatusHandler)(req.config);
|
|
@@ -228,4 +232,4 @@ class FunctionsRouter extends _PromiseRouter.default {
|
|
|
228
232
|
}
|
|
229
233
|
}
|
|
230
234
|
exports.FunctionsRouter = FunctionsRouter;
|
|
231
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pZGRsZXdhcmVzIiwiX1N0YXR1c0hhbmRsZXIiLCJfbG9kYXNoIiwiX2xvZ2dlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlBhcnNlIiwidHJpZ2dlcnMiLCJwYXJzZU9iamVjdCIsIm9iaiIsImNvbmZpZyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJfX3R5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJEYXRlIiwiaXNvIiwidXJsIiwidmFsaWRhdGVGaWxlVXJsIiwiRmlsZSIsImZyb21KU09OIiwiY2xhc3NOYW1lIiwib2JqZWN0SWQiLCJwYXJzZVBhcmFtcyIsInBhcmFtcyIsIl8iLCJtYXBWYWx1ZXMiLCJGdW5jdGlvbnNSb3V0ZXIiLCJQcm9taXNlUm91dGVyIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSIsImhhbmRsZUNsb3VkRnVuY3Rpb24iLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsInJlcSIsImhhbmRsZUNsb3VkSm9iIiwiam9iTmFtZSIsImJvZHkiLCJhcHBsaWNhdGlvbklkIiwiam9iSGFuZGxlciIsImpvYlN0YXR1c0hhbmRsZXIiLCJqb2JGdW5jdGlvbiIsImdldEpvYiIsIkVycm9yIiwiU0NSSVBUX0ZBSUxFRCIsInF1ZXJ5IiwicmVxdWVzdCIsImxvZyIsImxvZ2dlckNvbnRyb2xsZXIiLCJoZWFkZXJzIiwiaXAiLCJtZXNzYWdlIiwic2V0TWVzc2FnZSIsImJpbmQiLCJzZXRSdW5uaW5nIiwidGhlbiIsImpvYlN0YXR1cyIsImpvYklkIiwicHJvY2VzcyIsIm5leHRUaWNrIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXN1bHQiLCJzZXRTdWNjZWVkZWQiLCJlcnJvciIsInNldEZhaWxlZCIsInJlc3BvbnNlIiwiY3JlYXRlUmVzcG9uc2VPYmplY3QiLCJyZWplY3QiLCJzdGF0dXNDb2RlIiwiaHR0cFN0YXR1c0NvZGUiLCJjdXN0b21IZWFkZXJzIiwicmVzcG9uc2VTZW50IiwicmVzcG9uc2VPYmplY3QiLCJzdWNjZXNzIiwiX2VuY29kZSIsInN0YXR1cyIsImtleXMiLCJsZW5ndGgiLCJyZXNvbHZlRXJyb3IiLCJjb2RlIiwiaGVhZGVyIiwia2V5IiwidmFsdWUiLCJfaXNSZXNwb25zZVNlbnQiLCJmdW5jdGlvbk5hbWUiLCJ0aGVGdW5jdGlvbiIsImdldEZ1bmN0aW9uIiwibWFzdGVyIiwiYXV0aCIsImlzTWFzdGVyIiwidXNlciIsImluc3RhbGxhdGlvbklkIiwiaW5mbyIsImNvbnRleHQiLCJ1c2VyU3RyaW5nIiwiaWQiLCJ1bmRlZmluZWQiLCJsb2dMZXZlbHMiLCJjbG91ZEZ1bmN0aW9uU3VjY2VzcyIsImNsZWFuSW5wdXQiLCJsb2dnZXIiLCJ0cnVuY2F0ZUxvZ01lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiY2xlYW5SZXN1bHQiLCJjbG91ZEZ1bmN0aW9uRXJyb3IiLCJtYXliZVJ1blZhbGlkYXRvciIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9GdW5jdGlvbnNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gRnVuY3Rpb25zUm91dGVyLmpzXG5cbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZSxcbiAgdHJpZ2dlcnMgPSByZXF1aXJlKCcuLi90cmlnZ2VycycpO1xuXG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCB7IHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kgfSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgeyBqb2JTdGF0dXNIYW5kbGVyIH0gZnJvbSAnLi4vU3RhdHVzSGFuZGxlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vbG9nZ2VyJztcblxuZnVuY3Rpb24gcGFyc2VPYmplY3Qob2JqLCBjb25maWcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0KGl0ZW0sIGNvbmZpZyk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ0RhdGUnKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IERhdGUob2JqLmlzbyksIG9iaik7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ0ZpbGUnKSB7XG4gICAgaWYgKG9iai51cmwpIHtcbiAgICAgIGNvbnN0IHsgdmFsaWRhdGVGaWxlVXJsIH0gPSByZXF1aXJlKCcuLi9GaWxlVXJsVmFsaWRhdG9yJyk7XG4gICAgICB2YWxpZGF0ZUZpbGVVcmwob2JqLnVybCwgY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIFBhcnNlLkZpbGUuZnJvbUpTT04ob2JqKTtcbiAgfSBlbHNlIGlmIChvYmogJiYgb2JqLl9fdHlwZSA9PSAnUG9pbnRlcicpIHtcbiAgICByZXR1cm4gUGFyc2UuT2JqZWN0LmZyb21KU09OKHtcbiAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgY2xhc3NOYW1lOiBvYmouY2xhc3NOYW1lLFxuICAgICAgb2JqZWN0SWQ6IG9iai5vYmplY3RJZCxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gcGFyc2VQYXJhbXMob2JqLCBjb25maWcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvYmo7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMocGFyYW1zLCBjb25maWcpIHtcbiAgcmV0dXJuIF8ubWFwVmFsdWVzKHBhcmFtcywgaXRlbSA9PiBwYXJzZU9iamVjdChpdGVtLCBjb25maWcpKTtcbn1cblxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksXG4gICAgICBGdW5jdGlvbnNSb3V0ZXIuaGFuZGxlQ2xvdWRGdW5jdGlvblxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQT1NUJyxcbiAgICAgICcvam9icy86am9iTmFtZScsXG4gICAgICBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksXG4gICAgICBwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIGZ1bmN0aW9uIChyZXEpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uc1JvdXRlci5oYW5kbGVDbG91ZEpvYihyZXEpO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvam9icycsIHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBmdW5jdGlvbiAocmVxKSB7XG4gICAgICByZXR1cm4gRnVuY3Rpb25zUm91dGVyLmhhbmRsZUNsb3VkSm9iKHJlcSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgaGFuZGxlQ2xvdWRKb2IocmVxKSB7XG4gICAgY29uc3Qgam9iTmFtZSA9IHJlcS5wYXJhbXMuam9iTmFtZSB8fCByZXEuYm9keT8uam9iTmFtZTtcbiAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gcmVxLmNvbmZpZy5hcHBsaWNhdGlvbklkO1xuICAgIGNvbnN0IGpvYkhhbmRsZXIgPSBqb2JTdGF0dXNIYW5kbGVyKHJlcS5jb25maWcpO1xuICAgIGNvbnN0IGpvYkZ1bmN0aW9uID0gdHJpZ2dlcnMuZ2V0Sm9iKGpvYk5hbWUsIGFwcGxpY2F0aW9uSWQpO1xuICAgIGlmICgham9iRnVuY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5TQ1JJUFRfRkFJTEVELCAnSW52YWxpZCBqb2IuJyk7XG4gICAgfVxuICAgIGxldCBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCByZXEuYm9keSwgcmVxLnF1ZXJ5KTtcbiAgICBwYXJhbXMgPSBwYXJzZVBhcmFtcyhwYXJhbXMsIHJlcS5jb25maWcpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIGxvZzogcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyLFxuICAgICAgaGVhZGVyczogcmVxLmNvbmZpZy5oZWFkZXJzLFxuICAgICAgaXA6IHJlcS5jb25maWcuaXAsXG4gICAgICBqb2JOYW1lLFxuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgbWVzc2FnZTogam9iSGFuZGxlci5zZXRNZXNzYWdlLmJpbmQoam9iSGFuZGxlciksXG4gICAgfTtcblxuICAgIHJldHVybiBqb2JIYW5kbGVyLnNldFJ1bm5pbmcoam9iTmFtZSkudGhlbihqb2JTdGF0dXMgPT4ge1xuICAgICAgcmVxdWVzdC5qb2JJZCA9IGpvYlN0YXR1cy5vYmplY3RJZDtcbiAgICAgIC8vIHJ1biB0aGUgZnVuY3Rpb24gYXN5bmNcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBqb2JGdW5jdGlvbihyZXF1ZXN0KTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgam9iSGFuZGxlci5zZXRTdWNjZWVkZWQocmVzdWx0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGpvYkhhbmRsZXIuc2V0RmFpbGVkKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1gtUGFyc2UtSm9iLVN0YXR1cy1JZCc6IGpvYlN0YXR1cy5vYmplY3RJZCxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZXNwb25zZU9iamVjdChyZXNvbHZlLCByZWplY3QsIHN0YXR1c0NvZGUgPSBudWxsKSB7XG4gICAgbGV0IGh0dHBTdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcbiAgICBjb25zdCBjdXN0b21IZWFkZXJzID0ge307XG4gICAgbGV0IHJlc3BvbnNlU2VudCA9IGZhbHNlO1xuICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0ge1xuICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzcG9uc2VTZW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBzdWNjZXNzKCkgYWZ0ZXIgcmVzcG9uc2UgaGFzIGFscmVhZHkgYmVlbiBzZW50LiBNYWtlIHN1cmUgdG8gY2FsbCBzdWNjZXNzKCkgb3IgZXJyb3IoKSBvbmx5IG9uY2UgcGVyIGNsb3VkIGZ1bmN0aW9uIGV4ZWN1dGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXNwb25zZVNlbnQgPSB0cnVlO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgcmVzdWx0OiBQYXJzZS5fZW5jb2RlKHJlc3VsdCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGh0dHBTdGF0dXNDb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID0gaHR0cFN0YXR1c0NvZGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGN1c3RvbUhlYWRlcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXNwb25zZS5oZWFkZXJzID0gY3VzdG9tSGVhZGVycztcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlU2VudCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNhbGwgZXJyb3IoKSBhZnRlciByZXNwb25zZSBoYXMgYWxyZWFkeSBiZWVuIHNlbnQuIE1ha2Ugc3VyZSB0byBjYWxsIHN1Y2Nlc3MoKSBvciBlcnJvcigpIG9ubHkgb25jZSBwZXIgY2xvdWQgZnVuY3Rpb24gZXhlY3V0aW9uLicpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3BvbnNlU2VudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVycm9yID0gdHJpZ2dlcnMucmVzb2x2ZUVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAvLyBJZiBhIGN1c3RvbSBzdGF0dXMgY29kZSB3YXMgc2V0LCBhdHRhY2ggaXQgdG8gdGhlIGVycm9yXG4gICAgICAgIGlmIChodHRwU3RhdHVzQ29kZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGVycm9yLnN0YXR1cyA9IGh0dHBTdGF0dXNDb2RlO1xuICAgICAgICB9XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9LFxuICAgICAgc3RhdHVzOiBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICBodHRwU3RhdHVzQ29kZSA9IGNvZGU7XG4gICAgICAgIHJldHVybiByZXNwb25zZU9iamVjdDtcbiAgICAgIH0sXG4gICAgICBoZWFkZXI6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgIGN1c3RvbUhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7XG4gICAgICB9LFxuICAgICAgX2lzUmVzcG9uc2VTZW50OiAoKSA9PiByZXNwb25zZVNlbnQsXG4gICAgfTtcbiAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7XG4gIH1cbiAgc3RhdGljIGhhbmRsZUNsb3VkRnVuY3Rpb24ocmVxKSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcmVxLnBhcmFtcy5mdW5jdGlvbk5hbWU7XG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IHJlcS5jb25maWcuYXBwbGljYXRpb25JZDtcbiAgICBjb25zdCB0aGVGdW5jdGlvbiA9IHRyaWdnZXJzLmdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgYXBwbGljYXRpb25JZCk7XG5cbiAgICBpZiAoIXRoZUZ1bmN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCwgYEludmFsaWQgZnVuY3Rpb246IFwiJHtmdW5jdGlvbk5hbWV9XCJgKTtcbiAgICB9XG4gICAgbGV0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHJlcS5ib2R5LCByZXEucXVlcnkpO1xuICAgIHBhcmFtcyA9IHBhcnNlUGFyYW1zKHBhcmFtcywgcmVxLmNvbmZpZyk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgbWFzdGVyOiByZXEuYXV0aCAmJiByZXEuYXV0aC5pc01hc3RlcixcbiAgICAgIHVzZXI6IHJlcS5hdXRoICYmIHJlcS5hdXRoLnVzZXIsXG4gICAgICBpbnN0YWxsYXRpb25JZDogcmVxLmluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBsb2c6IHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlcixcbiAgICAgIGhlYWRlcnM6IHJlcS5jb25maWcuaGVhZGVycyxcbiAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgY29udGV4dDogcmVxLmluZm8uY29udGV4dCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPSByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0gRnVuY3Rpb25zUm91dGVyLmNyZWF0ZVJlc3BvbnNlT2JqZWN0KFxuICAgICAgICByZXN1bHQgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAocmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvblN1Y2Nlc3MgIT09ICdzaWxlbnQnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNsZWFuSW5wdXQgPSBsb2dnZXIudHJ1bmNhdGVMb2dNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpO1xuICAgICAgICAgICAgICBjb25zdCBjbGVhblJlc3VsdCA9IGxvZ2dlci50cnVuY2F0ZUxvZ01lc3NhZ2UoSlNPTi5zdHJpbmdpZnkocmVzdWx0LnJlc3BvbnNlLnJlc3VsdCkpO1xuICAgICAgICAgICAgICBsb2dnZXJbcmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvblN1Y2Nlc3NdKFxuICAgICAgICAgICAgICAgIGBSYW4gY2xvdWQgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aDpcXG4gIElucHV0OiAke2NsZWFuSW5wdXR9XFxuICBSZXN1bHQ6ICR7Y2xlYW5SZXN1bHR9YCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyZXEuY29uZmlnLmxvZ0xldmVscy5jbG91ZEZ1bmN0aW9uRXJyb3IgIT09ICdzaWxlbnQnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNsZWFuSW5wdXQgPSBsb2dnZXIudHJ1bmNhdGVMb2dNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpO1xuICAgICAgICAgICAgICBsb2dnZXJbcmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvbkVycm9yXShcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHJ1bm5pbmcgY2xvdWQgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aDpcXG4gIElucHV0OiAke2NsZWFuSW5wdXR9XFxuICBFcnJvcjogYCArXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShlcnJvciksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHsgc3VjY2VzcywgZXJyb3IgfSA9IHJlc3BvbnNlT2JqZWN0O1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blZhbGlkYXRvcihyZXF1ZXN0LCBmdW5jdGlvbk5hbWUsIHJlcS5hdXRoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIC8vIENoZWNrIGlmIGZ1bmN0aW9uIGV4cGVjdHMgMiBwYXJhbWV0ZXJzIChyZXEsIHJlcykgLSBFeHByZXNzIHN0eWxlXG4gICAgICAgICAgaWYgKHRoZUZ1bmN0aW9uLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhlRnVuY3Rpb24ocmVxdWVzdCwgcmVzcG9uc2VPYmplY3QpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUcmFkaXRpb25hbCBzdHlsZSAtIHNpbmdsZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgIHJldHVybiB0aGVGdW5jdGlvbihyZXF1ZXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgLy8gRm9yIEV4cHJlc3Mtc3R5bGUgZnVuY3Rpb25zLCBvbmx5IHNlbmQgcmVzcG9uc2UgaWYgbm90IGFscmVhZHkgc2VudFxuICAgICAgICAgIGlmICh0aGVGdW5jdGlvbi5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZU9iamVjdC5faXNSZXNwb25zZVNlbnQoKSkge1xuICAgICAgICAgICAgICAvLyBJZiBFeHByZXNzLXN0eWxlIGZ1bmN0aW9uIHJldHVybnMgYSB2YWx1ZSB3aXRob3V0IGNhbGxpbmcgcmVzLnN1Y2Nlc3MvZXJyb3JcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIElmIG5vIHJlc3BvbnNlIHNlbnQgYW5kIG5vIHZhbHVlIHJldHVybmVkLCB0aGlzIGlzIGFuIGVycm9yIGluIHVzZXIgY29kZVxuICAgICAgICAgICAgICAvLyBidXQgd2UgZG9uJ3QgaGFuZGxlIGl0IGhlcmUgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGb3IgdHJhZGl0aW9uYWwgZnVuY3Rpb25zLCBhbHdheXMgY2FsbCBzdWNjZXNzIHdpdGggdGhlIHJlc3VsdCAoZXZlbiBpZiB1bmRlZmluZWQpXG4gICAgICAgICAgICBzdWNjZXNzKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvcik7XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0EsSUFBQUEsY0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsY0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQW1DLFNBQUFELHVCQUFBTSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBVG5DOztBQUVBLElBQUlHLEtBQUssR0FBR1IsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDUSxLQUFLO0VBQ3JDQyxRQUFRLEdBQUdULE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFRbkMsU0FBU1UsV0FBV0EsQ0FBQ0MsR0FBRyxFQUFFQyxNQUFNLEVBQUU7RUFDaEMsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNILEdBQUcsQ0FBQyxFQUFFO0lBQ3RCLE9BQU9BLEdBQUcsQ0FBQ0ksR0FBRyxDQUFDQyxJQUFJLElBQUk7TUFDckIsT0FBT04sV0FBVyxDQUFDTSxJQUFJLEVBQUVKLE1BQU0sQ0FBQztJQUNsQyxDQUFDLENBQUM7RUFDSixDQUFDLE1B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
|
|
235
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pZGRsZXdhcmVzIiwiX1N0YXR1c0hhbmRsZXIiLCJfbG9kYXNoIiwiX2xvZ2dlciIsIl9FcnJvciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlBhcnNlIiwidHJpZ2dlcnMiLCJwYXJzZU9iamVjdCIsIm9iaiIsImNvbmZpZyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJfX3R5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJEYXRlIiwiaXNvIiwidXJsIiwidmFsaWRhdGVGaWxlVXJsIiwiRmlsZSIsImZyb21KU09OIiwiY2xhc3NOYW1lIiwib2JqZWN0SWQiLCJwYXJzZVBhcmFtcyIsInBhcmFtcyIsIl8iLCJtYXBWYWx1ZXMiLCJGdW5jdGlvbnNSb3V0ZXIiLCJQcm9taXNlUm91dGVyIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSIsImhhbmRsZUNsb3VkRnVuY3Rpb24iLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsInJlcSIsImhhbmRsZUNsb3VkSm9iIiwiYXV0aCIsImlzUmVhZE9ubHkiLCJjcmVhdGVTYW5pdGl6ZWRFcnJvciIsIkVycm9yIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsImpvYk5hbWUiLCJib2R5IiwiYXBwbGljYXRpb25JZCIsImpvYkhhbmRsZXIiLCJqb2JTdGF0dXNIYW5kbGVyIiwiam9iRnVuY3Rpb24iLCJnZXRKb2IiLCJTQ1JJUFRfRkFJTEVEIiwicXVlcnkiLCJyZXF1ZXN0IiwibG9nIiwibG9nZ2VyQ29udHJvbGxlciIsImhlYWRlcnMiLCJpcCIsIm1lc3NhZ2UiLCJzZXRNZXNzYWdlIiwiYmluZCIsInNldFJ1bm5pbmciLCJ0aGVuIiwiam9iU3RhdHVzIiwiam9iSWQiLCJwcm9jZXNzIiwibmV4dFRpY2siLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3VsdCIsInNldFN1Y2NlZWRlZCIsImVycm9yIiwic2V0RmFpbGVkIiwicmVzcG9uc2UiLCJjcmVhdGVSZXNwb25zZU9iamVjdCIsInJlamVjdCIsInN0YXR1c0NvZGUiLCJodHRwU3RhdHVzQ29kZSIsImN1c3RvbUhlYWRlcnMiLCJyZXNwb25zZVNlbnQiLCJyZXNwb25zZU9iamVjdCIsInN1Y2Nlc3MiLCJfZW5jb2RlIiwic3RhdHVzIiwia2V5cyIsImxlbmd0aCIsInJlc29sdmVFcnJvciIsImNvZGUiLCJoZWFkZXIiLCJrZXkiLCJ2YWx1ZSIsIl9pc1Jlc3BvbnNlU2VudCIsImZ1bmN0aW9uTmFtZSIsInRoZUZ1bmN0aW9uIiwiZ2V0RnVuY3Rpb24iLCJtYXN0ZXIiLCJpc01hc3RlciIsInVzZXIiLCJpbnN0YWxsYXRpb25JZCIsImluZm8iLCJjb250ZXh0IiwidXNlclN0cmluZyIsImlkIiwidW5kZWZpbmVkIiwibG9nTGV2ZWxzIiwiY2xvdWRGdW5jdGlvblN1Y2Nlc3MiLCJjbGVhbklucHV0IiwibG9nZ2VyIiwidHJ1bmNhdGVMb2dNZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsImNsZWFuUmVzdWx0IiwiY2xvdWRGdW5jdGlvbkVycm9yIiwibWF5YmVSdW5WYWxpZGF0b3IiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvRnVuY3Rpb25zUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEZ1bmN0aW9uc1JvdXRlci5qc1xuXG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2UsXG4gIHRyaWdnZXJzID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcblxuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgeyBwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5IH0gZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IHsgam9iU3RhdHVzSGFuZGxlciB9IGZyb20gJy4uL1N0YXR1c0hhbmRsZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBjcmVhdGVTYW5pdGl6ZWRFcnJvciB9IGZyb20gJy4uL0Vycm9yJztcblxuZnVuY3Rpb24gcGFyc2VPYmplY3Qob2JqLCBjb25maWcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0KGl0ZW0sIGNvbmZpZyk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ0RhdGUnKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IERhdGUob2JqLmlzbyksIG9iaik7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ0ZpbGUnKSB7XG4gICAgaWYgKG9iai51cmwpIHtcbiAgICAgIGNvbnN0IHsgdmFsaWRhdGVGaWxlVXJsIH0gPSByZXF1aXJlKCcuLi9GaWxlVXJsVmFsaWRhdG9yJyk7XG4gICAgICB2YWxpZGF0ZUZpbGVVcmwob2JqLnVybCwgY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIFBhcnNlLkZpbGUuZnJvbUpTT04ob2JqKTtcbiAgfSBlbHNlIGlmIChvYmogJiYgb2JqLl9fdHlwZSA9PSAnUG9pbnRlcicpIHtcbiAgICByZXR1cm4gUGFyc2UuT2JqZWN0LmZyb21KU09OKHtcbiAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgY2xhc3NOYW1lOiBvYmouY2xhc3NOYW1lLFxuICAgICAgb2JqZWN0SWQ6IG9iai5vYmplY3RJZCxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gcGFyc2VQYXJhbXMob2JqLCBjb25maWcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvYmo7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMocGFyYW1zLCBjb25maWcpIHtcbiAgcmV0dXJuIF8ubWFwVmFsdWVzKHBhcmFtcywgaXRlbSA9PiBwYXJzZU9iamVjdChpdGVtLCBjb25maWcpKTtcbn1cblxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksXG4gICAgICBGdW5jdGlvbnNSb3V0ZXIuaGFuZGxlQ2xvdWRGdW5jdGlvblxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQT1NUJyxcbiAgICAgICcvam9icy86am9iTmFtZScsXG4gICAgICBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksXG4gICAgICBwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIGZ1bmN0aW9uIChyZXEpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uc1JvdXRlci5oYW5kbGVDbG91ZEpvYihyZXEpO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvam9icycsIHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBmdW5jdGlvbiAocmVxKSB7XG4gICAgICByZXR1cm4gRnVuY3Rpb25zUm91dGVyLmhhbmRsZUNsb3VkSm9iKHJlcSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgaGFuZGxlQ2xvdWRKb2IocmVxKSB7XG4gICAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBydW4gYSBqb2IuXCIsXG4gICAgICAgIHJlcS5jb25maWdcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGpvYk5hbWUgPSByZXEucGFyYW1zLmpvYk5hbWUgfHwgcmVxLmJvZHk/LmpvYk5hbWU7XG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IHJlcS5jb25maWcuYXBwbGljYXRpb25JZDtcbiAgICBjb25zdCBqb2JIYW5kbGVyID0gam9iU3RhdHVzSGFuZGxlcihyZXEuY29uZmlnKTtcbiAgICBjb25zdCBqb2JGdW5jdGlvbiA9IHRyaWdnZXJzLmdldEpvYihqb2JOYW1lLCBhcHBsaWNhdGlvbklkKTtcbiAgICBpZiAoIWpvYkZ1bmN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCwgJ0ludmFsaWQgam9iLicpO1xuICAgIH1cbiAgICBsZXQgcGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgcmVxLmJvZHksIHJlcS5xdWVyeSk7XG4gICAgcGFyYW1zID0gcGFyc2VQYXJhbXMocGFyYW1zLCByZXEuY29uZmlnKTtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICBsb2c6IHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlcixcbiAgICAgIGhlYWRlcnM6IHJlcS5jb25maWcuaGVhZGVycyxcbiAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgam9iTmFtZSxcbiAgICAgIGNvbmZpZzogcmVxLmNvbmZpZyxcbiAgICAgIG1lc3NhZ2U6IGpvYkhhbmRsZXIuc2V0TWVzc2FnZS5iaW5kKGpvYkhhbmRsZXIpLFxuICAgIH07XG5cbiAgICByZXR1cm4gam9iSGFuZGxlci5zZXRSdW5uaW5nKGpvYk5hbWUpLnRoZW4oam9iU3RhdHVzID0+IHtcbiAgICAgIHJlcXVlc3Quam9iSWQgPSBqb2JTdGF0dXMub2JqZWN0SWQ7XG4gICAgICAvLyBydW4gdGhlIGZ1bmN0aW9uIGFzeW5jXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gam9iRnVuY3Rpb24ocmVxdWVzdCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgIGpvYkhhbmRsZXIuc2V0U3VjY2VlZGVkKHJlc3VsdCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICBqb2JIYW5kbGVyLnNldEZhaWxlZChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdYLVBhcnNlLUpvYi1TdGF0dXMtSWQnOiBqb2JTdGF0dXMub2JqZWN0SWQsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3BvbnNlOiB7fSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUmVzcG9uc2VPYmplY3QocmVzb2x2ZSwgcmVqZWN0LCBzdGF0dXNDb2RlID0gbnVsbCkge1xuICAgIGxldCBodHRwU3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gICAgY29uc3QgY3VzdG9tSGVhZGVycyA9IHt9O1xuICAgIGxldCByZXNwb25zZVNlbnQgPSBmYWxzZTtcbiAgICBjb25zdCByZXNwb25zZU9iamVjdCA9IHtcbiAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlU2VudCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNhbGwgc3VjY2VzcygpIGFmdGVyIHJlc3BvbnNlIGhhcyBhbHJlYWR5IGJlZW4gc2VudC4gTWFrZSBzdXJlIHRvIGNhbGwgc3VjY2VzcygpIG9yIGVycm9yKCkgb25seSBvbmNlIHBlciBjbG91ZCBmdW5jdGlvbiBleGVjdXRpb24uJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzcG9uc2VTZW50ID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICAgIHJlc3VsdDogUGFyc2UuX2VuY29kZShyZXN1bHQpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGlmIChodHRwU3RhdHVzQ29kZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cyA9IGh0dHBTdGF0dXNDb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhjdXN0b21IZWFkZXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVzcG9uc2UuaGVhZGVycyA9IGN1c3RvbUhlYWRlcnM7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgICAgIGlmIChyZXNwb25zZVNlbnQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjYWxsIGVycm9yKCkgYWZ0ZXIgcmVzcG9uc2UgaGFzIGFscmVhZHkgYmVlbiBzZW50LiBNYWtlIHN1cmUgdG8gY2FsbCBzdWNjZXNzKCkgb3IgZXJyb3IoKSBvbmx5IG9uY2UgcGVyIGNsb3VkIGZ1bmN0aW9uIGV4ZWN1dGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXNwb25zZVNlbnQgPSB0cnVlO1xuICAgICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgLy8gSWYgYSBjdXN0b20gc3RhdHVzIGNvZGUgd2FzIHNldCwgYXR0YWNoIGl0IHRvIHRoZSBlcnJvclxuICAgICAgICBpZiAoaHR0cFN0YXR1c0NvZGUgIT09IG51bGwpIHtcbiAgICAgICAgICBlcnJvci5zdGF0dXMgPSBodHRwU3RhdHVzQ29kZTtcbiAgICAgICAgfVxuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSxcbiAgICAgIHN0YXR1czogZnVuY3Rpb24gKGNvZGUpIHtcbiAgICAgICAgaHR0cFN0YXR1c0NvZGUgPSBjb2RlO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7XG4gICAgICB9LFxuICAgICAgaGVhZGVyOiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICBjdXN0b21IZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0O1xuICAgICAgfSxcbiAgICAgIF9pc1Jlc3BvbnNlU2VudDogKCkgPT4gcmVzcG9uc2VTZW50LFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3BvbnNlT2JqZWN0O1xuICB9XG4gIHN0YXRpYyBoYW5kbGVDbG91ZEZ1bmN0aW9uKHJlcSkge1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lO1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSByZXEuY29uZmlnLmFwcGxpY2F0aW9uSWQ7XG4gICAgY29uc3QgdGhlRnVuY3Rpb24gPSB0cmlnZ2Vycy5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUsIGFwcGxpY2F0aW9uSWQpO1xuXG4gICAgaWYgKCF0aGVGdW5jdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsIGBJbnZhbGlkIGZ1bmN0aW9uOiBcIiR7ZnVuY3Rpb25OYW1lfVwiYCk7XG4gICAgfVxuICAgIGxldCBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCByZXEuYm9keSwgcmVxLnF1ZXJ5KTtcbiAgICBwYXJhbXMgPSBwYXJzZVBhcmFtcyhwYXJhbXMsIHJlcS5jb25maWcpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIGNvbmZpZzogcmVxLmNvbmZpZyxcbiAgICAgIG1hc3RlcjogcmVxLmF1dGggJiYgcmVxLmF1dGguaXNNYXN0ZXIsXG4gICAgICB1c2VyOiByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IHJlcS5pbmZvLmluc3RhbGxhdGlvbklkLFxuICAgICAgbG9nOiByZXEuY29uZmlnLmxvZ2dlckNvbnRyb2xsZXIsXG4gICAgICBoZWFkZXJzOiByZXEuY29uZmlnLmhlYWRlcnMsXG4gICAgICBpcDogcmVxLmNvbmZpZy5pcCxcbiAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgIGNvbnRleHQ6IHJlcS5pbmZvLmNvbnRleHQsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBjb25zdCB1c2VyU3RyaW5nID0gcmVxLmF1dGggJiYgcmVxLmF1dGgudXNlciA/IHJlcS5hdXRoLnVzZXIuaWQgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCByZXNwb25zZU9iamVjdCA9IEZ1bmN0aW9uc1JvdXRlci5jcmVhdGVSZXNwb25zZU9iamVjdChcbiAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHJlcS5jb25maWcubG9nTGV2ZWxzLmNsb3VkRnVuY3Rpb25TdWNjZXNzICE9PSAnc2lsZW50Jykge1xuICAgICAgICAgICAgICBjb25zdCBjbGVhbklucHV0ID0gbG9nZ2VyLnRydW5jYXRlTG9nTWVzc2FnZShKU09OLnN0cmluZ2lmeShwYXJhbXMpKTtcbiAgICAgICAgICAgICAgY29uc3QgY2xlYW5SZXN1bHQgPSBsb2dnZXIudHJ1bmNhdGVMb2dNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHJlc3VsdC5yZXNwb25zZS5yZXN1bHQpKTtcbiAgICAgICAgICAgICAgbG9nZ2VyW3JlcS5jb25maWcubG9nTGV2ZWxzLmNsb3VkRnVuY3Rpb25TdWNjZXNzXShcbiAgICAgICAgICAgICAgICBgUmFuIGNsb3VkIGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSBmb3IgdXNlciAke3VzZXJTdHJpbmd9IHdpdGg6XFxuICBJbnB1dDogJHtjbGVhbklucHV0fVxcbiAgUmVzdWx0OiAke2NsZWFuUmVzdWx0fWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgdXNlcjogdXNlclN0cmluZyxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAocmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvbkVycm9yICE9PSAnc2lsZW50Jykge1xuICAgICAgICAgICAgICBjb25zdCBjbGVhbklucHV0ID0gbG9nZ2VyLnRydW5jYXRlTG9nTWVzc2FnZShKU09OLnN0cmluZ2lmeShwYXJhbXMpKTtcbiAgICAgICAgICAgICAgbG9nZ2VyW3JlcS5jb25maWcubG9nTGV2ZWxzLmNsb3VkRnVuY3Rpb25FcnJvcl0oXG4gICAgICAgICAgICAgICAgYEZhaWxlZCBydW5uaW5nIGNsb3VkIGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSBmb3IgdXNlciAke3VzZXJTdHJpbmd9IHdpdGg6XFxuICBJbnB1dDogJHtjbGVhbklucHV0fVxcbiAgRXJyb3I6IGAgK1xuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZXJyb3IpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgdXNlcjogdXNlclN0cmluZyxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBjb25zdCB7IHN1Y2Nlc3MsIGVycm9yIH0gPSByZXNwb25zZU9iamVjdDtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJpZ2dlcnMubWF5YmVSdW5WYWxpZGF0b3IocmVxdWVzdCwgZnVuY3Rpb25OYW1lLCByZXEuYXV0aCk7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAvLyBDaGVjayBpZiBmdW5jdGlvbiBleHBlY3RzIDIgcGFyYW1ldGVycyAocmVxLCByZXMpIC0gRXhwcmVzcyBzdHlsZVxuICAgICAgICAgIGlmICh0aGVGdW5jdGlvbi5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoZUZ1bmN0aW9uKHJlcXVlc3QsIHJlc3BvbnNlT2JqZWN0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVHJhZGl0aW9uYWwgc3R5bGUgLSBzaW5nbGUgcGFyYW1ldGVyXG4gICAgICAgICAgICByZXR1cm4gdGhlRnVuY3Rpb24ocmVxdWVzdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgIC8vIEZvciBFeHByZXNzLXN0eWxlIGZ1bmN0aW9ucywgb25seSBzZW5kIHJlc3BvbnNlIGlmIG5vdCBhbHJlYWR5IHNlbnRcbiAgICAgICAgICBpZiAodGhlRnVuY3Rpb24ubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2VPYmplY3QuX2lzUmVzcG9uc2VTZW50KCkpIHtcbiAgICAgICAgICAgICAgLy8gSWYgRXhwcmVzcy1zdHlsZSBmdW5jdGlvbiByZXR1cm5zIGEgdmFsdWUgd2l0aG91dCBjYWxsaW5nIHJlcy5zdWNjZXNzL2Vycm9yXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzdWx0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBJZiBubyByZXNwb25zZSBzZW50IGFuZCBubyB2YWx1ZSByZXR1cm5lZCwgdGhpcyBpcyBhbiBlcnJvciBpbiB1c2VyIGNvZGVcbiAgICAgICAgICAgICAgLy8gYnV0IHdlIGRvbid0IGhhbmRsZSBpdCBoZXJlIHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRm9yIHRyYWRpdGlvbmFsIGZ1bmN0aW9ucywgYWx3YXlzIGNhbGwgc3VjY2VzcyB3aXRoIHRoZSByZXN1bHQgKGV2ZW4gaWYgdW5kZWZpbmVkKVxuICAgICAgICAgICAgc3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IpO1xuICAgIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUtBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFlBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGNBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUFnRCxTQUFBRCx1QkFBQU8sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVZoRDs7QUFFQSxJQUFJRyxLQUFLLEdBQUdULE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ1MsS0FBSztFQUNyQ0MsUUFBUSxHQUFHVixPQUFPLENBQUMsYUFBYSxDQUFDO0FBU25DLFNBQVNXLFdBQVdBLENBQUNDLEdBQUcsRUFBRUMsTUFBTSxFQUFFO0VBQ2hDLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxHQUFHLENBQUMsRUFBRTtJQUN0QixPQUFPQSxHQUFHLENBQUNJLEdBQUcsQ0FBQ0MsSUFBSSxJQUFJO01BQ3JCLE9BQU9OLFdBQVcsQ0FBQ00sSUFBSSxFQUFFSixNQUFNLENBQUM7SUFDbEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxNQUFNLElBQUlELEdBQUcsSUFBSUEsR0FBRyxDQUFDTSxNQUFNLElBQUksTUFBTSxFQUFFO0lBQ3RDLE9BQU9DLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLElBQUlDLElBQUksQ0FBQ1QsR0FBRyxDQUFDVSxHQUFHLENBQUMsRUFBRVYsR0FBRyxDQUFDO0VBQzlDLENBQUMsTUFBTSxJQUFJQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ00sTUFBTSxJQUFJLE1BQU0sRUFBRTtJQUN0QyxJQUFJTixHQUFHLENBQUNXLEdBQUcsRUFBRTtNQUNYLE1BQU07UUFBRUM7TUFBZ0IsQ0FBQyxHQUFHeEIsT0FBTyxDQUFDLHFCQUFxQixDQUFDO01BQzFEd0IsZUFBZSxDQUFDWixHQUFHLENBQUNXLEdBQUcsRUFBRVYsTUFBTSxDQUFDO0lBQ2xDO0lBQ0EsT0FBT0osS0FBSyxDQUFDZ0IsSUFBSSxDQUFDQyxRQUFRLENBQUNkLEdBQUcsQ0FBQztFQUNqQyxDQUFDLE1BQU0sSUFBSUEsR0FBRyxJQUFJQSxHQUFHLENBQUNNLE1BQU0sSUFBSSxTQUFTLEVBQUU7SUFDekMsT0FBT1QsS0FBSyxDQUFDVSxNQUFNLENBQUNPLFFBQVEsQ0FBQztNQUMzQlIsTUFBTSxFQUFFLFNBQVM7TUFDakJTLFNBQVMsRUFBRWYsR0FBRyxDQUFDZSxTQUFTO01BQ3hCQyxRQUFRLEVBQUVoQixHQUFHLENBQUNnQjtJQUNoQixDQUFDLENBQUM7RUFDSixDQUFDLE1BQU0sSUFBSWhCLEdBQUcsSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxFQUFFO0lBQ3pDLE9BQU9pQixXQUFXLENBQUNqQixHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUNqQyxDQUFDLE1BQU07SUFDTCxPQUFPRCxHQUFHO0VBQ1o7QUFDRjtBQUVBLFNBQVNpQixXQUFXQSxDQUFDQyxNQUFNLEVBQUVqQixNQUFNLEVBQUU7RUFDbkMsT0FBT2tCLGVBQUMsQ0FBQ0MsU0FBUyxDQUFDRixNQUFNLEVBQUViLElBQUksSUFBSU4sV0FBVyxDQUFDTSxJQUFJLEVBQUVKLE1BQU0sQ0FBQyxDQUFDO0FBQy9EO0FBRU8sTUFBTW9CLGVBQWUsU0FBU0Msc0JBQWEsQ0FBQztFQUNqREMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osSUFBSSxDQUFDQyxLQUFLLENBQ1IsTUFBTSxFQUNOLDBCQUEwQixFQUMxQkMscUNBQXdCLEVBQ3hCSixlQUFlLENBQUNLLG1CQUNsQixDQUFDO0lBQ0QsSUFBSSxDQUFDRixLQUFLLENBQ1IsTUFBTSxFQUNOLGdCQUFnQixFQUNoQkMscUNBQXdCLEVBQ3hCRSwwQ0FBNkIsRUFDN0IsVUFBVUMsR0FBRyxFQUFFO01BQ2IsT0FBT1AsZUFBZSxDQUFDUSxjQUFjLENBQUNELEdBQUcsQ0FBQztJQUM1QyxDQUNGLENBQUM7SUFDRCxJQUFJLENBQUNKLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFRywwQ0FBNkIsRUFBRSxVQUFVQyxHQUFHLEVBQUU7TUFDeEUsT0FBT1AsZUFBZSxDQUFDUSxjQUFjLENBQUNELEdBQUcsQ0FBQztJQUM1QyxDQUFDLENBQUM7RUFDSjtFQUVBLE9BQU9DLGNBQWNBLENBQUNELEdBQUcsRUFBRTtJQUN6QixJQUFJQSxHQUFHLENBQUNFLElBQUksQ0FBQ0MsVUFBVSxFQUFFO01BQ3ZCLE1BQU0sSUFBQUMsMkJBQW9CLEVBQ3hCbkMsS0FBSyxDQUFDb0MsS0FBSyxDQUFDQyxtQkFBbUIsRUFDL0IsaURBQWlELEVBQ2pETixHQUFHLENBQUMzQixNQUNOLENBQUM7SUFDSDtJQUNBLE1BQU1rQyxPQUFPLEdBQUdQLEdBQUcsQ0FBQ1YsTUFBTSxDQUFDaUIsT0FBTyxJQUFJUCxHQUFHLENBQUNRLElBQUksRUFBRUQsT0FBTztJQUN2RCxNQUFNRSxhQUFhLEdBQUdULEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQ29DLGFBQWE7SUFDOUMsTUFBTUMsVUFBVSxHQUFHLElBQUFDLCtCQUFnQixFQUFDWCxHQUFHLENBQUMzQixNQUFNLENBQUM7SUFDL0MsTUFBTXVDLFdBQVcsR0FBRzFDLFFBQVEsQ0FBQzJDLE1BQU0sQ0FBQ04sT0FBTyxFQUFFRSxhQUFhLENBQUM7SUFDM0QsSUFBSSxDQUFDRyxXQUFXLEVBQUU7TUFDaEIsTUFBTSxJQUFJM0MsS0FBSyxDQUFDb0MsS0FBSyxDQUFDcEMsS0FBSyxDQUFDb0MsS0FBSyxDQUFDUyxhQUFhLEVBQUUsY0FBYyxDQUFDO0lBQ2xFO0lBQ0EsSUFBSXhCLE1BQU0sR0FBR1gsTUFBTSxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUVvQixHQUFHLENBQUNRLElBQUksRUFBRVIsR0FBRyxDQUFDZSxLQUFLLENBQUM7SUFDbkR6QixNQUFNLEdBQUdELFdBQVcsQ0FBQ0MsTUFBTSxFQUFFVSxHQUFHLENBQUMzQixNQUFNLENBQUM7SUFDeEMsTUFBTTJDLE9BQU8sR0FBRztNQUNkMUIsTUFBTSxFQUFFQSxNQUFNO01BQ2QyQixHQUFHLEVBQUVqQixHQUFHLENBQUMzQixNQUFNLENBQUM2QyxnQkFBZ0I7TUFDaENDLE9BQU8sRUFBRW5CLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQzhDLE9BQU87TUFDM0JDLEVBQUUsRUFBRXBCLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQytDLEVBQUU7TUFDakJiLE9BQU87TUFDUGxDLE1BQU0sRUFBRTJCLEdBQUcsQ0FBQzNCLE1BQU07TUFDbEJnRCxPQUFPLEVBQUVYLFVBQVUsQ0FBQ1ksVUFBVSxDQUFDQyxJQUFJLENBQUNiLFVBQVU7SUFDaEQsQ0FBQztJQUVELE9BQU9BLFVBQVUsQ0FBQ2MsVUFBVSxDQUFDakIsT0FBTyxDQUFDLENBQUNrQixJQUFJLENBQUNDLFNBQVMsSUFBSTtNQUN0RFYsT0FBTyxDQUFDVyxLQUFLLEdBQUdELFNBQVMsQ0FBQ3RDLFFBQVE7TUFDbEM7TUFDQXdDLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDLE1BQU07UUFDckJDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FDZE4sSUFBSSxDQUFDLE1BQU07VUFDVixPQUFPYixXQUFXLENBQUNJLE9BQU8sQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FDRFMsSUFBSSxDQUNITyxNQUFNLElBQUk7VUFDUnRCLFVBQVUsQ0FBQ3VCLFlBQVksQ0FBQ0QsTUFBTSxDQUFDO1FBQ2pDLENBQUMsRUFDREUsS0FBSyxJQUFJO1VBQ1B4QixVQUFVLENBQUN5QixTQUFTLENBQUNELEtBQUssQ0FBQztRQUM3QixDQUNGLENBQUM7TUFDTCxDQUFDLENBQUM7TUFDRixPQUFPO1FBQ0xmLE9BQU8sRUFBRTtVQUNQLHVCQUF1QixFQUFFTyxTQUFTLENBQUN0QztRQUNyQyxDQUFDO1FBQ0RnRCxRQUFRLEVBQUUsQ0FBQztNQUNiLENBQUM7SUFDSCxDQUFDLENBQUM7RUFDSjtFQUVBLE9BQU9DLG9CQUFvQkEsQ0FBQ04sT0FBTyxFQUFFTyxNQUFNLEVBQUVDLFVBQVUsR0FBRyxJQUFJLEVBQUU7SUFDOUQsSUFBSUMsY0FBYyxHQUFHRCxVQUFVO0lBQy9CLE1BQU1FLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDeEIsSUFBSUMsWUFBWSxHQUFHLEtBQUs7SUFDeEIsTUFBTUMsY0FBYyxHQUFHO01BQ3JCQyxPQUFPLEVBQUUsU0FBQUEsQ0FBVVosTUFBTSxFQUFFO1FBQ3pCLElBQUlVLFlBQVksRUFBRTtVQUNoQixNQUFNLElBQUlyQyxLQUFLLENBQUMsNElBQTRJLENBQUM7UUFDL0o7UUFDQXFDLFlBQVksR0FBRyxJQUFJO1FBQ25CLE1BQU1OLFFBQVEsR0FBRztVQUNmQSxRQUFRLEVBQUU7WUFDUkosTUFBTSxFQUFFL0QsS0FBSyxDQUFDNEUsT0FBTyxDQUFDYixNQUFNO1VBQzlCO1FBQ0YsQ0FBQztRQUNELElBQUlRLGNBQWMsS0FBSyxJQUFJLEVBQUU7VUFDM0JKLFFBQVEsQ0FBQ1UsTUFBTSxHQUFHTixjQUFjO1FBQ2xDO1FBQ0EsSUFBSTdELE1BQU0sQ0FBQ29FLElBQUksQ0FBQ04sYUFBYSxDQUFDLENBQUNPLE1BQU0sR0FBRyxDQUFDLEVBQUU7VUFDekNaLFFBQVEsQ0FBQ2pCLE9BQU8sR0FBR3NCLGFBQWE7UUFDbEM7UUFDQVYsT0FBTyxDQUFDSyxRQUFRLENBQUM7TUFDbkIsQ0FBQztNQUNERixLQUFLLEVBQUUsU0FBQUEsQ0FBVWIsT0FBTyxFQUFFO1FBQ3hCLElBQUlxQixZQUFZLEVBQUU7VUFDaEIsTUFBTSxJQUFJckMsS0FBSyxDQUFDLDBJQUEwSSxDQUFDO1FBQzdKO1FBQ0FxQyxZQUFZLEdBQUcsSUFBSTtRQUNuQixNQUFNUixLQUFLLEdBQUdoRSxRQUFRLENBQUMrRSxZQUFZLENBQUM1QixPQUFPLENBQUM7UUFDNUM7UUFDQSxJQUFJbUIsY0FBYyxLQUFLLElBQUksRUFBRTtVQUMzQk4sS0FBSyxDQUFDWSxNQUFNLEdBQUdOLGNBQWM7UUFDL0I7UUFDQUYsTUFBTSxDQUFDSixLQUFLLENBQUM7TUFDZixDQUFDO01BQ0RZLE1BQU0sRUFBRSxTQUFBQSxDQUFVSSxJQUFJLEVBQUU7UUFDdEJWLGNBQWMsR0FBR1UsSUFBSTtRQUNyQixPQUFPUCxjQUFjO01BQ3ZCLENBQUM7TUFDRFEsTUFBTSxFQUFFLFNBQUFBLENBQVVDLEdBQUcsRUFBRUMsS0FBSyxFQUFFO1FBQzVCWixhQUFhLENBQUNXLEdBQUcsQ0FBQyxHQUFHQyxLQUFLO1FBQzFCLE9BQU9WLGNBQWM7TUFDdkIsQ0FBQztNQUNEVyxlQUFlLEVBQUVBLENBQUEsS0FBTVo7SUFDekIsQ0FBQztJQUNELE9BQU9DLGNBQWM7RUFDdkI7RUFDQSxPQUFPN0MsbUJBQW1CQSxDQUFDRSxHQUFHLEVBQUU7SUFDOUIsTUFBTXVELFlBQVksR0FBR3ZELEdBQUcsQ0FBQ1YsTUFBTSxDQUFDaUUsWUFBWTtJQUM1QyxNQUFNOUMsYUFBYSxHQUFHVCxHQUFHLENBQUMzQixNQUFNLENBQUNvQyxhQUFhO0lBQzlDLE1BQU0rQyxXQUFXLEdBQUd0RixRQUFRLENBQUN1RixXQUFXLENBQUNGLFlBQVksRUFBRTlDLGFBQWEsQ0FBQztJQUVyRSxJQUFJLENBQUMrQyxXQUFXLEVBQUU7TUFDaEIsTUFBTSxJQUFJdkYsS0FBSyxDQUFDb0MsS0FBSyxDQUFDcEMsS0FBSyxDQUFDb0MsS0FBSyxDQUFDUyxhQUFhLEVBQUUsc0JBQXNCeUMsWUFBWSxHQUFHLENBQUM7SUFDekY7SUFDQSxJQUFJakUsTUFBTSxHQUFHWCxNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRW9CLEdBQUcsQ0FBQ1EsSUFBSSxFQUFFUixHQUFHLENBQUNlLEtBQUssQ0FBQztJQUNuRHpCLE1BQU0sR0FBR0QsV0FBVyxDQUFDQyxNQUFNLEVBQUVVLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQztJQUN4QyxNQUFNMkMsT0FBTyxHQUFHO01BQ2QxQixNQUFNLEVBQUVBLE1BQU07TUFDZGpCLE1BQU0sRUFBRTJCLEdBQUcsQ0FBQzNCLE1BQU07TUFDbEJxRixNQUFNLEVBQUUxRCxHQUFHLENBQUNFLElBQUksSUFBSUYsR0FBRyxDQUFDRSxJQUFJLENBQUN5RCxRQUFRO01BQ3JDQyxJQUFJLEVBQUU1RCxHQUFHLENBQUNFLElBQUksSUFBSUYsR0FBRyxDQUFDRSxJQUFJLENBQUMwRCxJQUFJO01BQy9CQyxjQUFjLEVBQUU3RCxHQUFHLENBQUM4RCxJQUFJLENBQUNELGNBQWM7TUFDdkM1QyxHQUFHLEVBQUVqQixHQUFHLENBQUMzQixNQUFNLENBQUM2QyxnQkFBZ0I7TUFDaENDLE9BQU8sRUFBRW5CLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQzhDLE9BQU87TUFDM0JDLEVBQUUsRUFBRXBCLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQytDLEVBQUU7TUFDakJtQyxZQUFZO01BQ1pRLE9BQU8sRUFBRS9ELEdBQUcsQ0FBQzhELElBQUksQ0FBQ0M7SUFDcEIsQ0FBQztJQUVELE9BQU8sSUFBSWpDLE9BQU8sQ0FBQyxVQUFVQyxPQUFPLEVBQUVPLE1BQU0sRUFBRTtNQUM1QyxNQUFNMEIsVUFBVSxHQUFHaEUsR0FBRyxDQUFDRSxJQUFJLElBQUlGLEdBQUcsQ0FBQ0UsSUFBSSxDQUFDMEQsSUFBSSxHQUFHNUQsR0FBRyxDQUFDRSxJQUFJLENBQUMwRCxJQUFJLENBQUNLLEVBQUUsR0FBR0MsU0FBUztNQUMzRSxNQUFNdkIsY0FBYyxHQUFHbEQsZUFBZSxDQUFDNEMsb0JBQW9CLENBQ3pETCxNQUFNLElBQUk7UUFDUixJQUFJO1VBQ0YsSUFBSWhDLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQzhGLFNBQVMsQ0FBQ0Msb0JBQW9CLEtBQUssUUFBUSxFQUFFO1lBQzFELE1BQU1DLFVBQVUsR0FBR0MsY0FBTSxDQUFDQyxrQkFBa0IsQ0FBQ0MsSUFBSSxDQUFDQyxTQUFTLENBQUNuRixNQUFNLENBQUMsQ0FBQztZQUNwRSxNQUFNb0YsV0FBVyxHQUFHSixjQUFNLENBQUNDLGtCQUFrQixDQUFDQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ3pDLE1BQU0sQ0FBQ0ksUUFBUSxDQUFDSixNQUFNLENBQUMsQ0FBQztZQUNyRnNDLGNBQU0sQ0FBQ3RFLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQzhGLFNBQVMsQ0FBQ0Msb0JBQW9CLENBQUMsQ0FDL0Msc0JBQXNCYixZQUFZLGFBQWFTLFVBQVUsb0JBQW9CSyxVQUFVLGVBQWVLLFdBQVcsRUFBRSxFQUNuSDtjQUNFbkIsWUFBWTtjQUNaakUsTUFBTTtjQUNOc0UsSUFBSSxFQUFFSTtZQUNSLENBQ0YsQ0FBQztVQUNIO1VBQ0FqQyxPQUFPLENBQUNDLE1BQU0sQ0FBQztRQUNqQixDQUFDLENBQUMsT0FBT2xFLENBQUMsRUFBRTtVQUNWd0UsTUFBTSxDQUFDeEUsQ0FBQyxDQUFDO1FBQ1g7TUFDRixDQUFDLEVBQ0RvRSxLQUFLLElBQUk7UUFDUCxJQUFJO1VBQ0YsSUFBSWxDLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQzhGLFNBQVMsQ0FBQ1Esa0JBQWtCLEtBQUssUUFBUSxFQUFFO1lBQ3hELE1BQU1OLFVBQVUsR0FBR0MsY0FBTSxDQUFDQyxrQkFBa0IsQ0FBQ0MsSUFBSSxDQUFDQyxTQUFTLENBQUNuRixNQUFNLENBQUMsQ0FBQztZQUNwRWdGLGNBQU0sQ0FBQ3RFLEdBQUcsQ0FBQzNCLE1BQU0sQ0FBQzhGLFNBQVMsQ0FBQ1Esa0JBQWtCLENBQUMsQ0FDN0MsaUNBQWlDcEIsWUFBWSxhQUFhUyxVQUFVLG9CQUFvQkssVUFBVSxhQUFhLEdBQzdHRyxJQUFJLENBQUNDLFNBQVMsQ0FBQ3ZDLEtBQUssQ0FBQyxFQUN2QjtjQUNFcUIsWUFBWTtjQUNackIsS0FBSztjQUNMNUMsTUFBTTtjQUNOc0UsSUFBSSxFQUFFSTtZQUNSLENBQ0YsQ0FBQztVQUNIO1VBQ0ExQixNQUFNLENBQUNKLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxPQUFPcEUsQ0FBQyxFQUFFO1VBQ1Z3RSxNQUFNLENBQUN4RSxDQUFDLENBQUM7UUFDWDtNQUNGLENBQ0YsQ0FBQztNQUNELE1BQU07UUFBRThFLE9BQU87UUFBRVY7TUFBTSxDQUFDLEdBQUdTLGNBQWM7TUFFekMsT0FBT2IsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUNyQk4sSUFBSSxDQUFDLE1BQU07UUFDVixPQUFPdkQsUUFBUSxDQUFDMEcsaUJBQWlCLENBQUM1RCxPQUFPLEVBQUV1QyxZQUFZLEVBQUV2RCxHQUFHLENBQUNFLElBQUksQ0FBQztNQUNwRSxDQUFDLENBQUMsQ0FDRHVCLElBQUksQ0FBQyxNQUFNO1FBQ1Y7UUFDQSxJQUFJK0IsV0FBVyxDQUFDUixNQUFNLElBQUksQ0FBQyxFQUFFO1VBQzNCLE9BQU9RLFdBQVcsQ0FBQ3hDLE9BQU8sRUFBRTJCLGNBQWMsQ0FBQztRQUM3QyxDQUFDLE1BQU07VUFDTDtVQUNBLE9BQU9hLFdBQVcsQ0FBQ3hDLE9BQU8sQ0FBQztRQUM3QjtNQUNGLENBQUMsQ0FBQyxDQUNEUyxJQUFJLENBQUNPLE1BQU0sSUFBSTtRQUNkO1FBQ0EsSUFBSXdCLFdBQVcsQ0FBQ1IsTUFBTSxJQUFJLENBQUMsRUFBRTtVQUMzQixJQUFJLENBQUNMLGNBQWMsQ0FBQ1csZUFBZSxDQUFDLENBQUMsRUFBRTtZQUNyQztZQUNBLElBQUl0QixNQUFNLEtBQUtrQyxTQUFTLEVBQUU7Y0FDeEJ0QixPQUFPLENBQUNaLE1BQU0sQ0FBQztZQUNqQjtZQUNBO1lBQ0E7VUFDRjtRQUNGLENBQUMsTUFBTTtVQUNMO1VBQ0FZLE9BQU8sQ0FBQ1osTUFBTSxDQUFDO1FBQ2pCO01BQ0YsQ0FBQyxFQUFFRSxLQUFLLENBQUM7SUFDYixDQUFDLENBQUM7RUFDSjtBQUNGO0FBQUMyQyxPQUFBLENBQUFwRixlQUFBLEdBQUFBLGVBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -7,6 +7,7 @@ exports.default = exports.HooksRouter = void 0;
|
|
|
7
7
|
var _node = require("parse/node");
|
|
8
8
|
var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
|
|
9
9
|
var middleware = _interopRequireWildcard(require("../middlewares"));
|
|
10
|
+
var _Error = require("../Error");
|
|
10
11
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
13
|
class HooksRouter extends _PromiseRouter.default {
|
|
@@ -21,6 +22,9 @@ class HooksRouter extends _PromiseRouter.default {
|
|
|
21
22
|
}));
|
|
22
23
|
}
|
|
23
24
|
handlePost(req) {
|
|
25
|
+
if (req.auth.isReadOnly) {
|
|
26
|
+
throw (0, _Error.createSanitizedError)(_node.Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to create a hook.", req.config);
|
|
27
|
+
}
|
|
24
28
|
return this.createHook(req.body || {}, req.config);
|
|
25
29
|
}
|
|
26
30
|
handleGetFunctions(req) {
|
|
@@ -91,6 +95,9 @@ class HooksRouter extends _PromiseRouter.default {
|
|
|
91
95
|
return this.updateHook(hook, req.config);
|
|
92
96
|
}
|
|
93
97
|
handlePut(req) {
|
|
98
|
+
if (req.auth.isReadOnly) {
|
|
99
|
+
throw (0, _Error.createSanitizedError)(_node.Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to modify a hook.", req.config);
|
|
100
|
+
}
|
|
94
101
|
var body = req.body || {};
|
|
95
102
|
if (body.__op == 'Delete') {
|
|
96
103
|
return this.handleDelete(req);
|
|
@@ -111,4 +118,4 @@ class HooksRouter extends _PromiseRouter.default {
|
|
|
111
118
|
}
|
|
112
119
|
exports.HooksRouter = HooksRouter;
|
|
113
120
|
var _default = exports.default = HooksRouter;
|
|
114
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJIb29rc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjcmVhdGVIb29rIiwiYUhvb2siLCJjb25maWciLCJob29rc0NvbnRyb2xsZXIiLCJ0aGVuIiwiaG9vayIsInJlc3BvbnNlIiwidXBkYXRlSG9vayIsImhhbmRsZVBvc3QiLCJyZXEiLCJib2R5IiwiaGFuZGxlR2V0RnVuY3Rpb25zIiwicGFyYW1zIiwiZnVuY3Rpb25OYW1lIiwiZ2V0RnVuY3Rpb24iLCJmb3VuZEZ1bmN0aW9uIiwiUGFyc2UiLCJFcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZ2V0RnVuY3Rpb25zIiwiZnVuY3Rpb25zIiwiZXJyIiwiaGFuZGxlR2V0VHJpZ2dlcnMiLCJjbGFzc05hbWUiLCJ0cmlnZ2VyTmFtZSIsImdldFRyaWdnZXIiLCJmb3VuZFRyaWdnZXIiLCJnZXRUcmlnZ2VycyIsInRyaWdnZXJzIiwiaGFuZGxlRGVsZXRlIiwiZGVsZXRlRnVuY3Rpb24iLCJkZWxldGVUcmlnZ2VyIiwiaGFuZGxlVXBkYXRlIiwidXJsIiwiaGFuZGxlUHV0IiwiX19vcCIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImJpbmQiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9Ib29rc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZSB9IGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcblxuZXhwb3J0IGNsYXNzIEhvb2tzUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIGNyZWF0ZUhvb2soYUhvb2ssIGNvbmZpZykge1xuICAgIHJldHVybiBjb25maWcuaG9va3NDb250cm9sbGVyLmNyZWF0ZUhvb2soYUhvb2spLnRoZW4oaG9vayA9PiAoeyByZXNwb25zZTogaG9vayB9KSk7XG4gIH1cblxuICB1cGRhdGVIb29rKGFIb29rLCBjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnLmhvb2tzQ29udHJvbGxlci51cGRhdGVIb29rKGFIb29rKS50aGVuKGhvb2sgPT4gKHsgcmVzcG9uc2U6IGhvb2sgfSkpO1xuICB9XG5cbiAgaGFuZGxlUG9zdChyZXEpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVIb29rKHJlcS5ib2R5IHx8IHt9LCByZXEuY29uZmlnKTtcbiAgfVxuXG4gIGhhbmRsZUdldEZ1bmN0aW9ucyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKGZvdW5kRnVuY3Rpb24gPT4ge1xuICAgICAgICBpZiAoIWZvdW5kRnVuY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7cmVxLnBhcmFtcy5mdW5jdGlvbk5hbWV9IGlzIGRlZmluZWRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kRnVuY3Rpb24gfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9ucygpLnRoZW4oXG4gICAgICBmdW5jdGlvbnMgPT4ge1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogZnVuY3Rpb25zIHx8IFtdIH07XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVHZXRUcmlnZ2VycyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiBob29rc0NvbnRyb2xsZXJcbiAgICAgICAgLmdldFRyaWdnZXIocmVxLnBhcmFtcy5jbGFzc05hbWUsIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpXG4gICAgICAgIC50aGVuKGZvdW5kVHJpZ2dlciA9PiB7XG4gICAgICAgICAgaWYgKCFmb3VuZFRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBjbGFzcyAke3JlcS5wYXJhbXMuY2xhc3NOYW1lfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kVHJpZ2dlciB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRUcmlnZ2VycygpLnRoZW4odHJpZ2dlcnMgPT4gKHsgcmVzcG9uc2U6IHRyaWdnZXJzIHx8IFtdIH0pKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmRlbGV0ZUZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKCgpID0+ICh7IHJlc3BvbnNlOiB7fSB9KSk7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyXG4gICAgICAgIC5kZWxldGVUcmlnZ2VyKHJlcS5wYXJhbXMuY2xhc3NOYW1lLCByZXEucGFyYW1zLnRyaWdnZXJOYW1lKVxuICAgICAgICAudGhlbigoKSA9PiAoeyByZXNwb25zZToge30gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHt9IH0pO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlKHJlcSkge1xuICAgIHZhciBob29rO1xuICAgIGlmIChyZXEucGFyYW1zLmZ1bmN0aW9uTmFtZSAmJiByZXEuYm9keT8udXJsKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmZ1bmN0aW9uTmFtZSA9IHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lO1xuICAgICAgaG9vay51cmwgPSByZXEuYm9keS51cmw7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lICYmIHJlcS5ib2R5Py51cmwpIHtcbiAgICAgIGhvb2sgPSB7fTtcbiAgICAgIGhvb2suY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG4gICAgICBob29rLnRyaWdnZXJOYW1lID0gcmVxLnBhcmFtcy50cmlnZ2VyTmFtZTtcbiAgICAgIGhvb2sudXJsID0gcmVxLmJvZHkudXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUhvb2soaG9vaywgcmVxLmNvbmZpZyk7XG4gIH1cblxuICBoYW5kbGVQdXQocmVxKSB7XG4gICAgdmFyIGJvZHkgPSByZXEuYm9keSB8fCB7fTtcbiAgICBpZiAoYm9keS5fX29wID09ICdEZWxldGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfVxuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlR2V0RnVuY3Rpb25zLmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvaG9va3MvdHJpZ2dlcnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlR2V0VHJpZ2dlcnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRGdW5jdGlvbnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy90cmlnZ2Vycy86Y2xhc3NOYW1lLzp0cmlnZ2VyTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRUcmlnZ2Vycy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUG9zdC5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9ob29rcy90cmlnZ2VycycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQb3N0LmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUFVUJyxcbiAgICAgICcvaG9va3MvZnVuY3Rpb25zLzpmdW5jdGlvbk5hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUHV0LmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUFVUJyxcbiAgICAgICcvaG9va3MvdHJpZ2dlcnMvOmNsYXNzTmFtZS86dHJpZ2dlck5hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUHV0LmJpbmQodGhpcylcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEhvb2tzUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBNkMsU0FBQUksd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMs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
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfRXJyb3IiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJIb29rc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjcmVhdGVIb29rIiwiYUhvb2siLCJjb25maWciLCJob29rc0NvbnRyb2xsZXIiLCJ0aGVuIiwiaG9vayIsInJlc3BvbnNlIiwidXBkYXRlSG9vayIsImhhbmRsZVBvc3QiLCJyZXEiLCJhdXRoIiwiaXNSZWFkT25seSIsImNyZWF0ZVNhbml0aXplZEVycm9yIiwiUGFyc2UiLCJFcnJvciIsIk9QRVJBVElPTl9GT1JCSURERU4iLCJib2R5IiwiaGFuZGxlR2V0RnVuY3Rpb25zIiwicGFyYW1zIiwiZnVuY3Rpb25OYW1lIiwiZ2V0RnVuY3Rpb24iLCJmb3VuZEZ1bmN0aW9uIiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRGdW5jdGlvbnMiLCJmdW5jdGlvbnMiLCJlcnIiLCJoYW5kbGVHZXRUcmlnZ2VycyIsImNsYXNzTmFtZSIsInRyaWdnZXJOYW1lIiwiZ2V0VHJpZ2dlciIsImZvdW5kVHJpZ2dlciIsImdldFRyaWdnZXJzIiwidHJpZ2dlcnMiLCJoYW5kbGVEZWxldGUiLCJkZWxldGVGdW5jdGlvbiIsImRlbGV0ZVRyaWdnZXIiLCJoYW5kbGVVcGRhdGUiLCJ1cmwiLCJoYW5kbGVQdXQiLCJfX29wIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwiYmluZCIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0hvb2tzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlIH0gZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2FuaXRpemVkRXJyb3IgfSBmcm9tICcuLi9FcnJvcic7XG5cbmV4cG9ydCBjbGFzcyBIb29rc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBjcmVhdGVIb29rKGFIb29rLCBjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnLmhvb2tzQ29udHJvbGxlci5jcmVhdGVIb29rKGFIb29rKS50aGVuKGhvb2sgPT4gKHsgcmVzcG9uc2U6IGhvb2sgfSkpO1xuICB9XG5cbiAgdXBkYXRlSG9vayhhSG9vaywgY29uZmlnKSB7XG4gICAgcmV0dXJuIGNvbmZpZy5ob29rc0NvbnRyb2xsZXIudXBkYXRlSG9vayhhSG9vaykudGhlbihob29rID0+ICh7IHJlc3BvbnNlOiBob29rIH0pKTtcbiAgfVxuXG4gIGhhbmRsZVBvc3QocmVxKSB7XG4gICAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBjcmVhdGUgYSBob29rLlwiLFxuICAgICAgICByZXEuY29uZmlnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVIb29rKHJlcS5ib2R5IHx8IHt9LCByZXEuY29uZmlnKTtcbiAgfVxuXG4gIGhhbmRsZUdldEZ1bmN0aW9ucyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKGZvdW5kRnVuY3Rpb24gPT4ge1xuICAgICAgICBpZiAoIWZvdW5kRnVuY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7cmVxLnBhcmFtcy5mdW5jdGlvbk5hbWV9IGlzIGRlZmluZWRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kRnVuY3Rpb24gfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9ucygpLnRoZW4oXG4gICAgICBmdW5jdGlvbnMgPT4ge1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogZnVuY3Rpb25zIHx8IFtdIH07XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVHZXRUcmlnZ2VycyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiBob29rc0NvbnRyb2xsZXJcbiAgICAgICAgLmdldFRyaWdnZXIocmVxLnBhcmFtcy5jbGFzc05hbWUsIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpXG4gICAgICAgIC50aGVuKGZvdW5kVHJpZ2dlciA9PiB7XG4gICAgICAgICAgaWYgKCFmb3VuZFRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBjbGFzcyAke3JlcS5wYXJhbXMuY2xhc3NOYW1lfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kVHJpZ2dlciB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRUcmlnZ2VycygpLnRoZW4odHJpZ2dlcnMgPT4gKHsgcmVzcG9uc2U6IHRyaWdnZXJzIHx8IFtdIH0pKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmRlbGV0ZUZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKCgpID0+ICh7IHJlc3BvbnNlOiB7fSB9KSk7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyXG4gICAgICAgIC5kZWxldGVUcmlnZ2VyKHJlcS5wYXJhbXMuY2xhc3NOYW1lLCByZXEucGFyYW1zLnRyaWdnZXJOYW1lKVxuICAgICAgICAudGhlbigoKSA9PiAoeyByZXNwb25zZToge30gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHt9IH0pO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlKHJlcSkge1xuICAgIHZhciBob29rO1xuICAgIGlmIChyZXEucGFyYW1zLmZ1bmN0aW9uTmFtZSAmJiByZXEuYm9keT8udXJsKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmZ1bmN0aW9uTmFtZSA9IHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lO1xuICAgICAgaG9vay51cmwgPSByZXEuYm9keS51cmw7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lICYmIHJlcS5ib2R5Py51cmwpIHtcbiAgICAgIGhvb2sgPSB7fTtcbiAgICAgIGhvb2suY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG4gICAgICBob29rLnRyaWdnZXJOYW1lID0gcmVxLnBhcmFtcy50cmlnZ2VyTmFtZTtcbiAgICAgIGhvb2sudXJsID0gcmVxLmJvZHkudXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUhvb2soaG9vaywgcmVxLmNvbmZpZyk7XG4gIH1cblxuICBoYW5kbGVQdXQocmVxKSB7XG4gICAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBtb2RpZnkgYSBob29rLlwiLFxuICAgICAgICByZXEuY29uZmlnXG4gICAgICApO1xuICAgIH1cbiAgICB2YXIgYm9keSA9IHJlcS5ib2R5IHx8IHt9O1xuICAgIGlmIChib2R5Ll9fb3AgPT0gJ0RlbGV0ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZURlbGV0ZShyZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGUocmVxKTtcbiAgICB9XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRGdW5jdGlvbnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy90cmlnZ2VycycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRUcmlnZ2Vycy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucy86ZnVuY3Rpb25OYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZUdldEZ1bmN0aW9ucy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL3RyaWdnZXJzLzpjbGFzc05hbWUvOnRyaWdnZXJOYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZUdldFRyaWdnZXJzLmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQb3N0LmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL2hvb2tzL3RyaWdnZXJzJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZVBvc3QuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQVVQnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQdXQuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQVVQnLFxuICAgICAgJy9ob29rcy90cmlnZ2Vycy86Y2xhc3NOYW1lLzp0cmlnZ2VyTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQdXQuYmluZCh0aGlzKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSG9va3NSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUFnRCxTQUFBSSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUosdUJBQUEsWUFBQUEsQ0FBQUUsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFDLE9BQUEsRUFBQVYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENB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
|