@pagopa/dx-cli 0.26.2 → 0.27.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.
@@ -111,15 +111,12 @@ const getBaseQuestions = (availableCloudAccounts, initialAnswers, selectedCloudA
111
111
  const questions = [];
112
112
  if (initialAnswers.env?.name === undefined) {
113
113
  questions.push({
114
- choices: [
115
- { name: "PROD", value: "prod" },
116
- { name: "UAT", value: "uat" },
117
- { name: "DEV", value: "dev" },
118
- ],
119
114
  default: "prod",
120
- message: "Environment name",
115
+ filter: (value) => value.trim().toLowerCase(),
116
+ message: "Environment name (dev, uat, prod, or tenant-env like cgn-prod)",
121
117
  name: "env.name",
122
- type: "list",
118
+ type: "input",
119
+ validate: validatePrompt(environmentSchema.shape.name),
123
120
  });
124
121
  }
125
122
  if (selectedCloudAccounts === undefined) {
@@ -395,4 +392,4 @@ export const formatInitializationDetails = (initStatus) => {
395
392
  ].join("\n");
396
393
  };
397
394
  export default prompts;
398
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvcHJvbXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHMUIsT0FBTyxLQUFLLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQztBQUU3QyxPQUFPLEVBR0wsa0JBQWtCLEdBR25CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUVMLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsNkJBQTZCLEdBQzlCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSw2QkFBNkIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUzQixPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUVMLDBCQUEwQixHQUMzQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbEUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQix5QkFBeUIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0lBQ3RELG9CQUFvQixFQUFFLDBCQUEwQixDQUFDLFFBQVEsRUFBRTtJQUMzRCxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hCLE1BQU0sQ0FBQztRQUNOLFlBQVksRUFBRSxrQkFBa0I7S0FDakMsQ0FBQztTQUNELFFBQVEsRUFBRTtDQUNkLENBQUMsQ0FBQztBQUlILE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FB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ZUFBZSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgaW5xdWlyZXIsIHsgRGlzdGluY3RRdWVzdGlvbiB9IGZyb20gXCJpbnF1aXJlclwiO1xuaW1wb3J0IHsgdHlwZSBEeW5hbWljUHJvbXB0c0Z1bmN0aW9uIH0gZnJvbSBcIm5vZGUtcGxvcFwiO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gXCJub2RlOmFzc2VydC9zdHJpY3RcIjtcblxuaW1wb3J0IHtcbiAgQ2xvdWRBY2NvdW50LFxuICBDbG91ZEFjY291bnRSZXBvc2l0b3J5LFxuICBjbG91ZEFjY291bnRTY2hlbWEsXG4gIENsb3VkQWNjb3VudFNlcnZpY2UsXG4gIENsb3VkUmVnaW9uLFxufSBmcm9tIFwiLi4vLi4vLi4vLi4vZG9tYWluL2Nsb3VkLWFjY291bnQuanNcIjtcbmltcG9ydCB7XG4gIEVudmlyb25tZW50SW5pdFN0YXR1cyxcbiAgZW52aXJvbm1lbnRTY2hlbWEsXG4gIGdldEluaXRpYWxpemF0aW9uU3RhdHVzLFxuICBoYXNVc2VyUGVybWlzc2lvblRvSW5pdGlhbGl6ZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0ICogYXMgYXp1cmUgZnJvbSBcIi4uLy4uLy4uL2F6dXJlL2xvY2F0aW9ucy5qc1wiO1xuXG50eXBlIElucXVpcmVyQ2hvaWNlPFQ+ID0gaW5xdWlyZXIuU2VwYXJhdG9yIHwgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBUIH07XG5cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZC92NFwiO1xuXG5pbXBvcnQge1xuICBHaXRIdWJSZXBvLFxuICBnaXRodWJSZXBvU2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vLi4vLi4vZG9tYWluL2dpdGh1Yi1yZXBvLmpzXCI7XG5pbXBvcnQge1xuICB0eXBlIEdpdEh1YkFwcENyZWRlbnRpYWxzLFxuICBnaXRodWJBcHBDcmVkZW50aWFsc1NjaGVtYSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2RvbWFpbi9naXRodWIuanNcIjtcbmltcG9ydCB7IGdldEdpdGh1YlJlcG8gfSBmcm9tIFwiLi4vLi4vLi4vZ2l0aHViL2dpdGh1Yi1yZXBvLmpzXCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVByb21wdCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL3ZhbGlkYXRlLXByb21wdC5qc1wiO1xuXG5jb25zdCBpbml0U2NoZW1hID0gei5vYmplY3Qoe1xuICBjbG91ZEFjY291bnRzVG9Jbml0aWFsaXplOiB6LmFycmF5KGNsb3VkQWNjb3VudFNjaGVtYSksXG4gIHJ1bm5lckFwcENyZWRlbnRpYWxzOiBnaXRodWJBcHBDcmVkZW50aWFsc1NjaGVtYS5vcHRpb25hbCgpLFxuICB0ZXJyYWZvcm1CYWNrZW5kOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBjbG91ZEFjY291bnQ6IGNsb3VkQWNjb3VudFNjaGVtYSxcbiAgICB9KVxuICAgIC5vcHRpb25hbCgpLFxufSk7XG5cbnR5cGUgSW5pdFBheWxvYWQgPSB6LmluZmVyPHR5cGVvZiBpbml0U2NoZW1hPjtcblxuY29uc3QgdGFnc1NjaGVtYSA9IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkubWluKDEpKTtcblxuY29uc3Qgd29ya3NwYWNlRG9tYWluU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLnRyaW0oKVxuICAudG9Mb3dlckNhc2UoKVxuICAubWluKDEsIFwiRG9tYWluIGlzIHJlcXVpcmVkXCIpXG4gIC5yZWdleChcbiAgICAvXlthLXowLTktXSskLyxcbiAgICBcIkRvbWFpbiBtYXkgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVuc1wiLFxuICApO1xuXG5leHBvcnQgY29uc3Qgd29ya3NwYWNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBkb21haW46IHdvcmtzcGFjZURvbWFpblNjaGVtYSxcbn0pO1xuXG5leHBvcnQgY29uc3QgcGF5bG9hZFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZW52OiBlbnZpcm9ubWVudFNjaGVtYSxcbiAgZ2l0aHViOiBnaXRodWJSZXBvU2NoZW1hLFxuICBpbml0OiBpbml0U2NoZW1hLm9wdGlvbmFsKCksXG4gIHRhZ3M6IHRhZ3NTY2hlbWEsXG4gIHdvcmtzcGFjZTogd29ya3NwYWNlU2NoZW1hLFxufSk7XG5cbmV4cG9ydCB0eXBlIFBheWxvYWQgPSB6LmluZmVyPHR5cGVvZiBwYXlsb2FkU2NoZW1hPjtcblxuLyoqXG4gKiBQcmVmaWxsZWQgYW5zd2VycyBzdXBwbGllZCB1cC1mcm9udCBieSB0aGUgY2FsbGVyIChlLmcuIENMSSBmbGFncyksIHVzZWQgdG9cbiAqIHNraXAgdGhlIG1hdGNoaW5nIHByb21wdHMuIElkZW50aWZpZXMgY2xvdWQgYWNjb3VudHMgYnkgaWQgYW5kIGxvY2F0aW9ucyBieVxuICogYWNjb3VudCBpZCwgc2luY2UgdGhlIGZ1bGwgZG9tYWluIG9iamVjdHMgYXJlbid0IGF2YWlsYWJsZSBiZWZvcmUgcmVzb2x2aW5nLlxuICovXG5leHBvcnQgY29uc3QgaW5pdGlhbEFuc3dlcnNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVudjogelxuICAgIC5vYmplY3Qoe1xuICAgICAgY2xvdWRBY2NvdW50SWRzOiB6LmFycmF5KHouc3RyaW5nKCkudHJpbSgpLm1pbigxKSkub3B0aW9uYWwoKSxcbiAgICAgIGxvY2F0aW9uczogelxuICAgICAgICAucmVjb3JkKHouc3RyaW5nKCkubWluKDEpLCB6LmVudW0oYXp1cmUubG9jYXRpb25zKSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBuYW1lOiBlbnZpcm9ubWVudFNjaGVtYS5zaGFwZS5uYW1lLm9wdGlvbmFsKCksXG4gICAgICBwcmVmaXg6IGVudmlyb25tZW50U2NoZW1hLnNoYXBlLnByZWZpeC5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9wdGlvbmFsKCksXG4gIGluaXQ6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGNvbmZpcm06IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgICBydW5uZXJBcHBDcmVkZW50aWFsczogZ2l0aHViQXBwQ3JlZGVudGlhbHNTY2hlbWEucGFydGlhbCgpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbiAgdGFnczogelxuICAgIC5vYmplY3Qoe1xuICAgICAgQnVzaW5lc3NVbml0OiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICAgIE1hbmFnZW1lbnRUZWFtOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5vcHRpb25hbCgpLFxuICB3b3Jrc3BhY2U6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGRvbWFpbjogd29ya3NwYWNlU2NoZW1hLnNoYXBlLmRvbWFpbi5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IHR5cGUgSW5pdGlhbEFuc3dlcnMgPSB6LmluZmVyPHR5cGVvZiBpbml0aWFsQW5zd2Vyc1NjaGVtYT47XG5cbi8qKlxuICogQW5zd2VycyBnYXRoZXJlZCBmcm9tIHRoZSBpbnRlcmFjdGl2ZSBiYXNlIHByb21wdHMuIE1pcnJvcnMge0BsaW5rIGluaXRpYWxBbnN3ZXJzU2NoZW1hfVxuICogYnV0IGhvbGRzIHRoZSB2YWx1ZXMgcHJvZHVjZWQgYnkgdGhlIHByb21wdCBzZXNzaW9uOiBjbG91ZCBhY2NvdW50cyBhcmUgZnVsbFxuICogZG9tYWluIG9iamVjdHMgKHJlc29sdmVkIGZyb20gaW5xdWlyZXIgY2hvaWNlcykgcmF0aGVyIHRoYW4gaWRzLiBPbmx5IHF1ZXN0aW9uc1xuICogbm90IGFscmVhZHkgcHJlZmlsbGVkIGFyZSBhc2tlZCwgc28gZXZlcnkgZmllbGQgaXMgb3B0aW9uYWwgaGVyZSB0b28uXG4gKi9cbmNvbnN0IGJhc2VQcm9tcHRBbnN3ZXJzU2NoZW1hID0gei5vYmplY3Qoe1xuICBlbnY6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGNsb3VkQWNjb3VudHM6IHouYXJyYXkoY2xvdWRBY2NvdW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICAgICAgbmFtZTogZW52aXJvbm1lbnRTY2hlbWEuc2hhcGUubmFtZS5vcHRpb25hbCgpLFxuICAgICAgcHJlZml4OiBlbnZpcm9ubWVudFNjaGVtYS5zaGFwZS5wcmVmaXgub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5vcHRpb25hbCgpLFxuICB0YWdzOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBCdXNpbmVzc1VuaXQ6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgICAgTWFuYWdlbWVudFRlYW06IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9wdGlvbmFsKCksXG4gIHdvcmtzcGFjZTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZG9tYWluOiB3b3Jrc3BhY2VTY2hlbWEuc2hhcGUuZG9tYWluLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBQcm9tcHRzRGVwZW5kZW5jaWVzID0ge1xuICBjbG91ZEFjY291bnRSZXBvc2l0b3J5OiBDbG91ZEFjY291bnRSZXBvc2l0b3J5O1xuICBjbG91ZEFjY291bnRTZXJ2aWNlOiBDbG91ZEFjY291bnRTZXJ2aWNlO1xuICBnaXRodWI/OiBHaXRIdWJSZXBvO1xuICBpbml0aWFsQW5zd2Vycz86IEluaXRpYWxBbnN3ZXJzO1xufTtcblxudHlwZSBCYXNlUHJvbXB0QW5zd2VycyA9IHouaW5mZXI8dHlwZW9mIGJhc2VQcm9tcHRBbnN3ZXJzU2NoZW1hPjtcblxuY29uc3QgREVGQVVMVF9DT1NUX0NFTlRFUiA9IFwiVFMwMDBcIjtcblxuY29uc3QgcmVzb2x2ZUNsb3VkQWNjb3VudHMgPSAoXG4gIGF2YWlsYWJsZUNsb3VkQWNjb3VudHM6IENsb3VkQWNjb3VudFtdLFxuICBpbml0aWFsQW5zd2VyczogSW5pdGlhbEFuc3dlcnMsXG4pOiBDbG91ZEFjY291bnRbXSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGNsb3VkQWNjb3VudElkcyA9IGluaXRpYWxBbnN3ZXJzLmVudj8uY2xvdWRBY2NvdW50SWRzO1xuICBpZiAoY2xvdWRBY2NvdW50SWRzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIGNsb3VkQWNjb3VudElkcy5tYXAoKGNsb3VkQWNjb3VudElkKSA9PiB7XG4gICAgY29uc3QgY2xvdWRBY2NvdW50ID0gYXZhaWxhYmxlQ2xvdWRBY2NvdW50cy5maW5kKFxuICAgICAgKGFjY291bnQpID0+IGFjY291bnQuaWQgPT09IGNsb3VkQWNjb3VudElkLFxuICAgICk7XG4gICAgYXNzZXJ0Lm9rKGNsb3VkQWNjb3VudCwgYENsb3VkIGFjY291bnQgXCIke2Nsb3VkQWNjb3VudElkfVwiIHdhcyBub3QgZm91bmQuYCk7XG4gICAgcmV0dXJuIHsgLi4uY2xvdWRBY2NvdW50IH07XG4gIH0pO1xufTtcblxuY29uc3QgZ2V0QmFzZVF1ZXN0aW9ucyA9IChcbiAgYXZhaWxhYmxlQ2xvdWRBY2NvdW50czogQ2xvdWRBY2NvdW50W10sXG4gIGluaXRpYWxBbnN3ZXJzOiBJbml0aWFsQW5zd2VycyxcbiAgc2VsZWN0ZWRDbG91ZEFjY291bnRzOiBDbG91ZEFjY291bnRbXSB8IHVuZGVmaW5lZCxcbik6IERpc3RpbmN0UXVlc3Rpb25bXSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uczogRGlzdGluY3RRdWVzdGlvbltdID0gW107XG5cbiAgaWYgKGluaXRpYWxBbnN3ZXJzLmVudj8ubmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgY2hvaWNlczogW1xuICAgICAgICB7IG5hbWU6IFwiUFJPRFwiLCB2YWx1ZTogXCJwcm9kXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcIlVBVFwiLCB2YWx1ZTogXCJ1YXRcIiB9LFxuICAgICAgICB7IG5hbWU6IFwiREVWXCIsIHZhbHVlOiBcImRldlwiIH0sXG4gICAgICBdLFxuICAgICAgZGVmYXVsdDogXCJwcm9kXCIsXG4gICAgICBtZXNzYWdlOiBcIkVudmlyb25tZW50IG5hbWVcIixcbiAgICAgIG5hbWU6IFwiZW52Lm5hbWVcIixcbiAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHNlbGVjdGVkQ2xvdWRBY2NvdW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgY2hvaWNlczogZ2V0Q2xvdWRBY2NvdW50Q2hvaWNlcyhhdmFpbGFibGVDbG91ZEFjY291bnRzKSxcbiAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50KHMpXCIsXG4gICAgICBuYW1lOiBcImVudi5jbG91ZEFjY291bnRzXCIsXG4gICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICB2YWxpZGF0ZTogKHZhbHVlKSA9PlxuICAgICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgOiBcIlBsZWFzZSBzZWxlY3QgYSBjbG91ZCBhY2NvdW50LlwiLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGluaXRpYWxBbnN3ZXJzLmVudj8ucHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICBmaWx0ZXI6ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKSxcbiAgICAgIG1lc3NhZ2U6IFwiUHJlZml4ICgyLTQgY2hhcmFjdGVycylcIixcbiAgICAgIG5hbWU6IFwiZW52LnByZWZpeFwiLFxuICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgdmFsaWRhdGU6IHZhbGlkYXRlUHJvbXB0KGVudmlyb25tZW50U2NoZW1hLnNoYXBlLnByZWZpeCksXG4gICAgfSk7XG4gIH1cblxuICBpZiAoaW5pdGlhbEFuc3dlcnMud29ya3NwYWNlPy5kb21haW4gPT09IHVuZGVmaW5lZCkge1xuICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgIGZpbHRlcjogKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgbWVzc2FnZTogXCJEb21haW5cIixcbiAgICAgIG5hbWU6IFwid29ya3NwYWNlLmRvbWFpblwiLFxuICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgdmFsaWRhdGU6IHZhbGlkYXRlUHJvbXB0KHdvcmtzcGFjZVNjaGVtYS5zaGFwZS5kb21haW4pLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGluaXRpYWxBbnN3ZXJzLnRhZ3M/LkJ1c2luZXNzVW5pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHZhbHVlLnRyaW0oKSxcbiAgICAgIG1lc3NhZ2U6IFwiQnVzaW5lc3MgdW5pdFwiLFxuICAgICAgbmFtZTogXCJ0YWdzLkJ1c2luZXNzVW5pdFwiLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT5cbiAgICAgICAgdmFsdWUubGVuZ3RoID4gMCA/IHRydWUgOiBcIkJ1c2luZXNzIFVuaXQgY2Fubm90IGJlIGVtcHR5LlwiLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGluaXRpYWxBbnN3ZXJzLnRhZ3M/Lk1hbmFnZW1lbnRUZWFtID09PSB1bmRlZmluZWQpIHtcbiAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICBmaWx0ZXI6ICh2YWx1ZSkgPT4gdmFsdWUudHJpbSgpLFxuICAgICAgbWVzc2FnZTogXCJNYW5hZ2VtZW50IHRlYW1cIixcbiAgICAgIG5hbWU6IFwidGFncy5NYW5hZ2VtZW50VGVhbVwiLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT5cbiAgICAgICAgdmFsdWUubGVuZ3RoID4gMCA/IHRydWUgOiBcIk1hbmFnZW1lbnQgVGVhbSBjYW5ub3QgYmUgZW1wdHkuXCIsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcXVlc3Rpb25zO1xufTtcblxuY29uc3QgZ2V0U2VsZWN0ZWRDbG91ZEFjY291bnRzID0gKFxuICBhbnN3ZXJzOiBCYXNlUHJvbXB0QW5zd2VycyxcbiAgaW5pdGlhbENsb3VkQWNjb3VudHM6IENsb3VkQWNjb3VudFtdIHwgdW5kZWZpbmVkLFxuKTogQ2xvdWRBY2NvdW50W10gPT4ge1xuICBjb25zdCBwcm9tcHRlZENsb3VkQWNjb3VudHMgPSBhbnN3ZXJzLmVudj8uY2xvdWRBY2NvdW50cztcbiAgY29uc3Qgc2VsZWN0ZWRDbG91ZEFjY291bnRzID0gaW5pdGlhbENsb3VkQWNjb3VudHMgPz8gcHJvbXB0ZWRDbG91ZEFjY291bnRzO1xuXG4gIGFzc2VydC5vayhcbiAgICBBcnJheS5pc0FycmF5KHNlbGVjdGVkQ2xvdWRBY2NvdW50cykgJiYgc2VsZWN0ZWRDbG91ZEFjY291bnRzLmxlbmd0aCA+IDAsXG4gICAgXCJQbGVhc2Ugc2VsZWN0IGEgY2xvdWQgYWNjb3VudC5cIixcbiAgKTtcblxuICByZXR1cm4gc2VsZWN0ZWRDbG91ZEFjY291bnRzLm1hcCgoY2xvdWRBY2NvdW50KSA9PiAoeyAuLi5jbG91ZEFjY291bnQgfSkpO1xufTtcblxuY29uc3QgYXBwbHlMb2NhdGlvbnMgPSBhc3luYyAoXG4gIHByb21wdE1vZHVsZTogdHlwZW9mIGlucXVpcmVyLFxuICBzZWxlY3RlZENsb3VkQWNjb3VudHM6IENsb3VkQWNjb3VudFtdLFxuICBpbml0aWFsQW5zd2VyczogSW5pdGlhbEFuc3dlcnMsXG4pID0+IHtcbiAgY29uc3QgcHJlZGVmaW5lZExvY2F0aW9ucyA9IGluaXRpYWxBbnN3ZXJzLmVudj8ubG9jYXRpb25zID8/IHt9O1xuICBjb25zdCBsb2NhdGlvblF1ZXN0aW9ucyA9IHNlbGVjdGVkQ2xvdWRBY2NvdW50c1xuICAgIC5maWx0ZXIoKGFjY291bnQpID0+IHByZWRlZmluZWRMb2NhdGlvbnNbYWNjb3VudC5pZF0gPT09IHVuZGVmaW5lZClcbiAgICAubWFwKChhY2NvdW50KSA9PiAoe1xuICAgICAgY2hvaWNlczogZ2V0Q2xvdWRMb2NhdGlvbkNob2ljZXMoYXp1cmUuY2xvdWRSZWdpb25zKSxcbiAgICAgIGRlZmF1bHQ6IGF6dXJlLmRlZmF1bHRMb2NhdGlvbixcbiAgICAgIG1lc3NhZ2U6IGBEZWZhdWx0IGxvY2F0aW9uIGZvciAke2FjY291bnQuZGlzcGxheU5hbWV9YCxcbiAgICAgIG5hbWU6IGFjY291bnQuaWQsXG4gICAgICB0eXBlOiBcImxpc3RcIixcbiAgICB9KSk7XG5cbiAgY29uc3QgcHJvbXB0ZWRMb2NhdGlvbnMgPVxuICAgIGxvY2F0aW9uUXVlc3Rpb25zLmxlbmd0aCA9PT0gMFxuICAgICAgPyB7fVxuICAgICAgOiBhd2FpdCBwcm9tcHRNb2R1bGUucHJvbXB0KGxvY2F0aW9uUXVlc3Rpb25zKTtcblxuICBzZWxlY3RlZENsb3VkQWNjb3VudHMuZm9yRWFjaCgoYWNjb3VudCkgPT4ge1xuICAgIGNvbnN0IGxvY2F0aW9uID1cbiAgICAgIHByZWRlZmluZWRMb2NhdGlvbnNbYWNjb3VudC5pZF0gPz8gcHJvbXB0ZWRMb2NhdGlvbnNbYWNjb3VudC5pZF07XG4gICAgaWYgKGxvY2F0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFjY291bnQuZGVmYXVsdExvY2F0aW9uID0gbG9jYXRpb247XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IHBhcnNlSW5pdGlhbEFuc3dlcnMgPSAoXG4gIGlucHV0OiBJbml0aWFsQW5zd2VycyB8IHVuZGVmaW5lZCxcbik6IEluaXRpYWxBbnN3ZXJzID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gaW5pdGlhbEFuc3dlcnNTY2hlbWEuc2FmZVBhcnNlKGlucHV0ID8/IHt9KTtcbiAgYXNzZXJ0Lm9rKFxuICAgIHJlc3VsdC5zdWNjZXNzLFxuICAgIFwiSW52YWxpZCBpbml0aWFsIGFuc3dlcnMgZm9yIHRoZSBlbnZpcm9ubWVudCBnZW5lcmF0b3IuXCIsXG4gICk7XG4gIHJldHVybiByZXN1bHQuZGF0YTtcbn07XG5cbmNvbnN0IGdldFJ1bm5lckFwcENyZWRlbnRpYWxRdWVzdGlvbnMgPSAoXG4gIGluaXRpYWxSdW5uZXJBcHBDcmVkZW50aWFsczogUGFydGlhbDxHaXRIdWJBcHBDcmVkZW50aWFscz4sXG4pOiBEaXN0aW5jdFF1ZXN0aW9uW10gPT4ge1xuICBjb25zdCBxdWVzdGlvbnM6IERpc3RpbmN0UXVlc3Rpb25bXSA9IFtdO1xuXG4gIGlmIChpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHMuaWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgIGZpbHRlcjogKHZhbHVlKSA9PiB2YWx1ZS50cmltKCksXG4gICAgICBtZXNzYWdlOiBcIkdpdEh1YiBSdW5uZXIgQXBwIElEXCIsXG4gICAgICBuYW1lOiBcInJ1bm5lckFwcENyZWRlbnRpYWxzLmlkXCIsXG4gICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICB2YWxpZGF0ZTogKHZhbHVlKSA9PiB2YWx1ZS5sZW5ndGggPiAwLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGluaXRpYWxSdW5uZXJBcHBDcmVkZW50aWFscy5jbGllbnRJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHZhbHVlLnRyaW0oKSxcbiAgICAgIG1lc3NhZ2U6IFwiR2l0SHViIFJ1bm5lciBBcHAgQ2xpZW50IElEXCIsXG4gICAgICBuYW1lOiBcInJ1bm5lckFwcENyZWRlbnRpYWxzLmNsaWVudElkXCIsXG4gICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICB2YWxpZGF0ZTogKHZhbHVlKSA9PiB2YWx1ZS5sZW5ndGggPiAwLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGluaXRpYWxSdW5uZXJBcHBDcmVkZW50aWFscy5pbnN0YWxsYXRpb25JZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHZhbHVlLnRyaW0oKSxcbiAgICAgIG1lc3NhZ2U6IFwiR2l0SHViIFJ1bm5lciBBcHAgSW5zdGFsbGF0aW9uIElEXCIsXG4gICAgICBuYW1lOiBcInJ1bm5lckFwcENyZWRlbnRpYWxzLmluc3RhbGxhdGlvbklkXCIsXG4gICAgICB0eXBlOiBcImlucHV0XCIsXG4gICAgICB2YWxpZGF0ZTogKHZhbHVlKSA9PiB2YWx1ZS5sZW5ndGggPiAwLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGluaXRpYWxSdW5uZXJBcHBDcmVkZW50aWFscy5rZXkgPT09IHVuZGVmaW5lZCkge1xuICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgIGZpbHRlcjogKHZhbHVlKSA9PiB2YWx1ZS50cmltKCksXG4gICAgICBtZXNzYWdlOiBcIkdpdEh1YiBSdW5uZXIgQXBwIFByaXZhdGUgS2V5XCIsXG4gICAgICBuYW1lOiBcInJ1bm5lckFwcENyZWRlbnRpYWxzLmtleVwiLFxuICAgICAgdHlwZTogXCJlZGl0b3JcIixcbiAgICAgIHZhbGlkYXRlOiAodmFsdWUpID0+IHZhbHVlLmxlbmd0aCA+IDAsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcXVlc3Rpb25zO1xufTtcblxuY29uc3QgbWVyZ2VSdW5uZXJBcHBDcmVkZW50aWFscyA9IChcbiAgaW5pdGlhbFJ1bm5lckFwcENyZWRlbnRpYWxzOiBQYXJ0aWFsPEdpdEh1YkFwcENyZWRlbnRpYWxzPixcbiAgcHJvbXB0ZWRSdW5uZXJBcHBDcmVkZW50aWFsczogUGFydGlhbDxHaXRIdWJBcHBDcmVkZW50aWFscz4gfCB1bmRlZmluZWQsXG4pOiBJbml0UGF5bG9hZFtcInJ1bm5lckFwcENyZWRlbnRpYWxzXCJdID0+IHtcbiAgY29uc3QgcnVubmVyQXBwQ3JlZGVudGlhbHMgPSB7XG4gICAgY2xpZW50SWQ6XG4gICAgICBpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHMuY2xpZW50SWQgPz9cbiAgICAgIHByb21wdGVkUnVubmVyQXBwQ3JlZGVudGlhbHM/LmNsaWVudElkLFxuICAgIGlkOiBpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHMuaWQgPz8gcHJvbXB0ZWRSdW5uZXJBcHBDcmVkZW50aWFscz8uaWQsXG4gICAgaW5zdGFsbGF0aW9uSWQ6XG4gICAgICBpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHMuaW5zdGFsbGF0aW9uSWQgPz9cbiAgICAgIHByb21wdGVkUnVubmVyQXBwQ3JlZGVudGlhbHM/Lmluc3RhbGxhdGlvbklkLFxuICAgIGtleTogaW5pdGlhbFJ1bm5lckFwcENyZWRlbnRpYWxzLmtleSA/PyBwcm9tcHRlZFJ1bm5lckFwcENyZWRlbnRpYWxzPy5rZXksXG4gIH07XG5cbiAgaWYgKFxuICAgIE9iamVjdC52YWx1ZXMocnVubmVyQXBwQ3JlZGVudGlhbHMpLmV2ZXJ5KCh2YWx1ZSkgPT4gdmFsdWUgPT09IHVuZGVmaW5lZClcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBnaXRodWJBcHBDcmVkZW50aWFsc1NjaGVtYS5wYXJzZShydW5uZXJBcHBDcmVkZW50aWFscyk7XG59O1xuXG5jb25zdCBjb2xsZWN0QmFzZUFuc3dlcnMgPSBhc3luYyAoXG4gIHByb21wdE1vZHVsZTogdHlwZW9mIGlucXVpcmVyLFxuICBhdmFpbGFibGVDbG91ZEFjY291bnRzOiBDbG91ZEFjY291bnRbXSxcbiAgaW5pdGlhbEFuc3dlcnM6IEluaXRpYWxBbnN3ZXJzLFxuKTogUHJvbWlzZTx7XG4gIGFuc3dlcnM6IEJhc2VQcm9tcHRBbnN3ZXJzO1xuICBpbml0aWFsQ2xvdWRBY2NvdW50czogQ2xvdWRBY2NvdW50W10gfCB1bmRlZmluZWQ7XG59PiA9PiB7XG4gIGNvbnN0IGluaXRpYWxDbG91ZEFjY291bnRzID0gcmVzb2x2ZUNsb3VkQWNjb3VudHMoXG4gICAgYXZhaWxhYmxlQ2xvdWRBY2NvdW50cyxcbiAgICBpbml0aWFsQW5zd2VycyxcbiAgKTtcbiAgY29uc3QgYmFzZVF1ZXN0aW9ucyA9IGdldEJhc2VRdWVzdGlvbnMoXG4gICAgYXZhaWxhYmxlQ2xvdWRBY2NvdW50cyxcbiAgICBpbml0aWFsQW5zd2VycyxcbiAgICBpbml0aWFsQ2xvdWRBY2NvdW50cyxcbiAgKTtcbiAgY29uc3QgcHJvbXB0QW5zd2Vyc1Jlc3VsdCA9IGJhc2VQcm9tcHRBbnN3ZXJzU2NoZW1hLnNhZmVQYXJzZShcbiAgICBiYXNlUXVlc3Rpb25zLmxlbmd0aCA9PT0gMCA/IHt9IDogYXdhaXQgcHJvbXB0TW9kdWxlLnByb21wdChiYXNlUXVlc3Rpb25zKSxcbiAgKTtcbiAgYXNzZXJ0Lm9rKHByb21wdEFuc3dlcnNSZXN1bHQuc3VjY2VzcywgXCJJbnZhbGlkIGVudmlyb25tZW50IHByb21wdCBhbnN3ZXJzLlwiKTtcblxuICByZXR1cm4ge1xuICAgIGFuc3dlcnM6IHByb21wdEFuc3dlcnNSZXN1bHQuZGF0YSxcbiAgICBpbml0aWFsQ2xvdWRBY2NvdW50cyxcbiAgfTtcbn07XG5cbmNvbnN0IGJ1aWxkUGF5bG9hZCA9ICh7XG4gIGFuc3dlcnMsXG4gIGdpdGh1YixcbiAgaW5pdGlhbEFuc3dlcnMsXG4gIHNlbGVjdGVkQ2xvdWRBY2NvdW50cyxcbn06IHtcbiAgYW5zd2VyczogQmFzZVByb21wdEFuc3dlcnM7XG4gIGdpdGh1YjogR2l0SHViUmVwbztcbiAgaW5pdGlhbEFuc3dlcnM6IEluaXRpYWxBbnN3ZXJzO1xuICBzZWxlY3RlZENsb3VkQWNjb3VudHM6IENsb3VkQWNjb3VudFtdO1xufSk6IFBheWxvYWQgPT5cbiAgcGF5bG9hZFNjaGVtYS5wYXJzZSh7XG4gICAgZW52OiB7XG4gICAgICBjbG91ZEFjY291bnRzOiBzZWxlY3RlZENsb3VkQWNjb3VudHMsXG4gICAgICBuYW1lOiBpbml0aWFsQW5zd2Vycy5lbnY/Lm5hbWUgPz8gYW5zd2Vycy5lbnY/Lm5hbWUsXG4gICAgICBwcmVmaXg6IGluaXRpYWxBbnN3ZXJzLmVudj8ucHJlZml4ID8/IGFuc3dlcnMuZW52Py5wcmVmaXgsXG4gICAgfSxcbiAgICBnaXRodWIsXG4gICAgdGFnczoge1xuICAgICAgQnVzaW5lc3NVbml0OlxuICAgICAgICBpbml0aWFsQW5zd2Vycy50YWdzPy5CdXNpbmVzc1VuaXQgPz8gYW5zd2Vycy50YWdzPy5CdXNpbmVzc1VuaXQsXG4gICAgICBDb3N0Q2VudGVyOiBERUZBVUxUX0NPU1RfQ0VOVEVSLFxuICAgICAgTWFuYWdlbWVudFRlYW06XG4gICAgICAgIGluaXRpYWxBbnN3ZXJzLnRhZ3M/Lk1hbmFnZW1lbnRUZWFtID8/IGFuc3dlcnMudGFncz8uTWFuYWdlbWVudFRlYW0sXG4gICAgfSxcbiAgICB3b3Jrc3BhY2U6IHtcbiAgICAgIGRvbWFpbjogaW5pdGlhbEFuc3dlcnMud29ya3NwYWNlPy5kb21haW4gPz8gYW5zd2Vycy53b3Jrc3BhY2U/LmRvbWFpbixcbiAgICB9LFxuICB9KTtcblxuY29uc3QgcHJvbXB0czogKGRlcHM6IFByb21wdHNEZXBlbmRlbmNpZXMpID0+IER5bmFtaWNQcm9tcHRzRnVuY3Rpb24gPVxuICAoZGVwcykgPT4gYXN5bmMgKHByb21wdE1vZHVsZSkgPT4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuICAgIGNvbnN0IGdpdGh1YiA9IGRlcHMuZ2l0aHViID8/IChhd2FpdCBnZXRHaXRodWJSZXBvKCkpO1xuICAgIGFzc2VydC5vayhnaXRodWIsIFwiVGhpcyBnZW5lcmF0b3Igb25seSB3b3JrcyBpbnNpZGUgYSBHaXRIdWIgcmVwb3NpdG9yeS5cIik7XG4gICAgY29uc3QgaW5pdGlhbEFuc3dlcnMgPSBwYXJzZUluaXRpYWxBbnN3ZXJzKGRlcHMuaW5pdGlhbEFuc3dlcnMpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcImdpdGh1YiByZXBvIHtnaXRodWJ9XCIsIHsgZ2l0aHViIH0pO1xuICAgIGNvbnN0IGF2YWlsYWJsZUNsb3VkQWNjb3VudHMgPSBhd2FpdCBkZXBzLmNsb3VkQWNjb3VudFJlcG9zaXRvcnkubGlzdCgpO1xuICAgIGNvbnN0IHsgYW5zd2VycywgaW5pdGlhbENsb3VkQWNjb3VudHMgfSA9IGF3YWl0IGNvbGxlY3RCYXNlQW5zd2VycyhcbiAgICAgIHByb21wdE1vZHVsZSxcbiAgICAgIGF2YWlsYWJsZUNsb3VkQWNjb3VudHMsXG4gICAgICBpbml0aWFsQW5zd2VycyxcbiAgICApO1xuICAgIGNvbnN0IHNlbGVjdGVkQ2xvdWRBY2NvdW50cyA9IGdldFNlbGVjdGVkQ2xvdWRBY2NvdW50cyhcbiAgICAgIGFuc3dlcnMsXG4gICAgICBpbml0aWFsQ2xvdWRBY2NvdW50cyxcbiAgICApO1xuXG4gICAgYXdhaXQgYXBwbHlMb2NhdGlvbnMocHJvbXB0TW9kdWxlLCBzZWxlY3RlZENsb3VkQWNjb3VudHMsIGluaXRpYWxBbnN3ZXJzKTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSBidWlsZFBheWxvYWQoe1xuICAgICAgYW5zd2VycyxcbiAgICAgIGdpdGh1YixcbiAgICAgIGluaXRpYWxBbnN3ZXJzLFxuICAgICAgc2VsZWN0ZWRDbG91ZEFjY291bnRzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaW5pdFN0YXR1cyA9IGF3YWl0IGdldEluaXRpYWxpemF0aW9uU3RhdHVzKFxuICAgICAgZGVwcy5jbG91ZEFjY291bnRTZXJ2aWNlLFxuICAgICAgcGF5bG9hZC5lbnYsXG4gICAgKTtcblxuICAgIGxvZ2dlci5kZWJ1ZyhcImluaXRpYWxpemF0aW9uIHN0YXR1cyB7aW5pdFN0YXR1c31cIiwgeyBpbml0U3RhdHVzIH0pO1xuXG4gICAgaWYgKGluaXRTdGF0dXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKGZvcm1hdEluaXRpYWxpemF0aW9uRGV0YWlscyhpbml0U3RhdHVzKSk7XG5cbiAgICBpZiAoaW5pdGlhbEFuc3dlcnMuaW5pdD8uY29uZmlybSAhPT0gdHJ1ZSkge1xuICAgICAgY29uc3QgaW5pdENvbmZpcm0gPSBhd2FpdCBwcm9tcHRNb2R1bGUucHJvbXB0KHtcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZTogYFRoZSBlbnZpcm9ubWVudCBcIiR7cGF5bG9hZC5lbnYubmFtZX1cIiBpcyBub3QgaW5pdGlhbGl6ZWQuIFByb2NlZWQgd2l0aCB0aGUgc2V0dXAgYWJvdmU/YCxcbiAgICAgICAgbmFtZTogXCJpbml0XCIsXG4gICAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5vayhpbml0Q29uZmlybS5pbml0LCBcIkNhbid0IHByb2NlZWQgd2l0aG91dCBpbml0aWFsaXphdGlvblwiKTtcbiAgICB9XG5cbiAgICBhc3NlcnQub2soXG4gICAgICBhd2FpdCBoYXNVc2VyUGVybWlzc2lvblRvSW5pdGlhbGl6ZShcbiAgICAgICAgZGVwcy5jbG91ZEFjY291bnRTZXJ2aWNlLFxuICAgICAgICBwYXlsb2FkLmVudixcbiAgICAgICksXG4gICAgICBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gaW5pdGlhbGl6ZSB0aGlzIGVudmlyb25tZW50LiBBc2sgeW91ciBFbmdpbmVlcmluZyBMZWFkZXIgdG8gaW5pdGlhbGl6ZSBpdCBmb3IgeW91LlwiLFxuICAgICk7XG5cbiAgICBjb25zdCBtaXNzaW5nUmVtb3RlQmFja2VuZCA9IGluaXRTdGF0dXMuaXNzdWVzLnNvbWUoXG4gICAgICAoaXNzdWUpID0+IGlzc3VlLnR5cGUgPT09IFwiTUlTU0lOR19SRU1PVEVfQkFDS0VORFwiLFxuICAgICk7XG5cbiAgICBjb25zdCBxdWVzdGlvbnM6IERpc3RpbmN0UXVlc3Rpb25bXSA9IFtdO1xuXG4gICAgbGV0IHRlcnJhZm9ybUJhY2tlbmQ6IEluaXRQYXlsb2FkW1widGVycmFmb3JtQmFja2VuZFwiXTtcblxuICAgIGlmIChtaXNzaW5nUmVtb3RlQmFja2VuZCkge1xuICAgICAgaWYgKHBheWxvYWQuZW52LmNsb3VkQWNjb3VudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHRlcnJhZm9ybUJhY2tlbmQgPSB7XG4gICAgICAgICAgY2xvdWRBY2NvdW50OiBwYXlsb2FkLmVudi5jbG91ZEFjY291bnRzWzBdLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgICAgIGNob2ljZXM6IGdldENsb3VkQWNjb3VudENob2ljZXMocGF5bG9hZC5lbnYuY2xvdWRBY2NvdW50cyksXG4gICAgICAgICAgbWVzc2FnZTogXCJDbG91ZCBBY2NvdW50IHRvIHVzZSBmb3IgdGhlIHJlbW90ZSBUZXJyYWZvcm0gYmFja2VuZFwiLFxuICAgICAgICAgIG5hbWU6IFwidGVycmFmb3JtQmFja2VuZC5jbG91ZEFjY291bnRcIixcbiAgICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2xvdWRBY2NvdW50c05vdEluaXRpYWxpemVkID0gaW5pdFN0YXR1cy5pc3N1ZXMuc29tZShcbiAgICAgIChpc3N1ZSkgPT4gaXNzdWUudHlwZSA9PT0gXCJDTE9VRF9BQ0NPVU5UX05PVF9JTklUSUFMSVpFRFwiLFxuICAgICk7XG5cbiAgICBjb25zdCBpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHMgPVxuICAgICAgaW5pdGlhbEFuc3dlcnMuaW5pdD8ucnVubmVyQXBwQ3JlZGVudGlhbHMgPz8ge307XG5cbiAgICBpZiAoY2xvdWRBY2NvdW50c05vdEluaXRpYWxpemVkKSB7XG4gICAgICBxdWVzdGlvbnMucHVzaChcbiAgICAgICAgLi4uZ2V0UnVubmVyQXBwQ3JlZGVudGlhbFF1ZXN0aW9ucyhpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHMpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0SW5wdXQgPVxuICAgICAgcXVlc3Rpb25zLmxlbmd0aCA9PT0gMCA/IHt9IDogYXdhaXQgcHJvbXB0TW9kdWxlLnByb21wdChxdWVzdGlvbnMpO1xuXG4gICAgaWYgKGluaXRJbnB1dC50ZXJyYWZvcm1CYWNrZW5kKSB7XG4gICAgICB0ZXJyYWZvcm1CYWNrZW5kID0gaW5pdElucHV0LnRlcnJhZm9ybUJhY2tlbmQ7XG4gICAgfVxuXG4gICAgY29uc3QgcnVubmVyQXBwQ3JlZGVudGlhbHMgPSBtZXJnZVJ1bm5lckFwcENyZWRlbnRpYWxzKFxuICAgICAgaW5pdGlhbFJ1bm5lckFwcENyZWRlbnRpYWxzLFxuICAgICAgaW5pdElucHV0LnJ1bm5lckFwcENyZWRlbnRpYWxzLFxuICAgICk7XG5cbiAgICBwYXlsb2FkLmluaXQgPSBwYXlsb2FkU2NoZW1hLnNoYXBlLmluaXQucGFyc2Uoe1xuICAgICAgY2xvdWRBY2NvdW50c1RvSW5pdGlhbGl6ZTogZ2V0Q2xvdWRBY2NvdW50VG9Jbml0aWFsaXplKGluaXRTdGF0dXMpLFxuICAgICAgcnVubmVyQXBwQ3JlZGVudGlhbHMsXG4gICAgICB0ZXJyYWZvcm1CYWNrZW5kLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbi8vIENyZWF0ZXMgSW5xdWlyZXIgY2hvaWNlcywgcHJpb3JpdGl6aW5nIHRob3NlIHRoYXQgbWF0Y2ggdGhlIGVudiBwcmVmaXhcbmV4cG9ydCBjb25zdCBnZXRDbG91ZEFjY291bnRDaG9pY2VzID0gKFxuICBjbG91ZEFjY291bnRzOiBDbG91ZEFjY291bnRbXSxcbik6IElucXVpcmVyQ2hvaWNlPENsb3VkQWNjb3VudD5bXSA9PlxuICBjbG91ZEFjY291bnRzLm1hcCgoYWNjb3VudCkgPT4gKHtcbiAgICBuYW1lOiBgJHthY2NvdW50LmRpc3BsYXlOYW1lfWAsXG4gICAgdmFsdWU6IGFjY291bnQsXG4gIH0pKTtcblxuZXhwb3J0IGNvbnN0IGdldENsb3VkTG9jYXRpb25DaG9pY2VzID0gKFxuICByZWdpb25zOiBDbG91ZFJlZ2lvbltdLFxuKTogSW5xdWlyZXJDaG9pY2U8Q2xvdWRSZWdpb25bXCJuYW1lXCJdPltdID0+XG4gIHJlZ2lvbnMubWFwKChyKSA9PiAoeyBuYW1lOiByLmRpc3BsYXlOYW1lLCB2YWx1ZTogci5uYW1lIH0pKTtcblxuZXhwb3J0IGNvbnN0IGdldENsb3VkQWNjb3VudFRvSW5pdGlhbGl6ZSA9IChcbiAgaW5pdFN0YXR1czogRW52aXJvbm1lbnRJbml0U3RhdHVzICYgeyBpbml0aWFsaXplZDogZmFsc2UgfSxcbikgPT5cbiAgaW5pdFN0YXR1cy5pc3N1ZXNcbiAgICAuZmlsdGVyKChpc3N1ZSkgPT4gaXNzdWUudHlwZSA9PT0gXCJDTE9VRF9BQ0NPVU5UX05PVF9JTklUSUFMSVpFRFwiKVxuICAgIC5tYXAoKGlzc3VlKSA9PiBpc3N1ZS5jbG91ZEFjY291bnQpO1xuXG4vKipcbiAqIEJ1aWxkIGEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHJlc291cmNlcyB0aGF0IHdpbGwgYmUgY3JlYXRlZFxuICogd2hlbiBpbml0aWFsaXppbmcgYW4gZW52aXJvbm1lbnQsIHNvIHVzZXJzIHNlZSB0aGUgc2lkZSBlZmZlY3RzIGJlZm9yZVxuICogY29uZmlybWluZy4gVGhlIGV4YWN0IHJlc291cmNlIG5hbWVzIGFyZSBpbnRlbnRpb25hbGx5IG9taXR0ZWQgdG8gYXZvaWRcbiAqIGNvdXBsaW5nIHRoZSBwcm9tcHQgY29weSB0byBpbnRlcm5hbCBuYW1pbmcgY29udmVudGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRJbml0aWFsaXphdGlvbkRldGFpbHMgPSAoXG4gIGluaXRTdGF0dXM6IEVudmlyb25tZW50SW5pdFN0YXR1cyAmIHsgaW5pdGlhbGl6ZWQ6IGZhbHNlIH0sXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBhY2NvdW50c1RvSW5pdCA9IGdldENsb3VkQWNjb3VudFRvSW5pdGlhbGl6ZShpbml0U3RhdHVzKTtcbiAgY29uc3QgbWlzc2luZ0JhY2tlbmQgPSBpbml0U3RhdHVzLmlzc3Vlcy5zb21lKFxuICAgIChpc3N1ZSkgPT4gaXNzdWUudHlwZSA9PT0gXCJNSVNTSU5HX1JFTU9URV9CQUNLRU5EXCIsXG4gICk7XG5cbiAgY29uc3Qgc2VjdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIGFjY291bnRzVG9Jbml0KSB7XG4gICAgc2VjdGlvbnMucHVzaChcbiAgICAgIFtcbiAgICAgICAgY2hhbGsuYm9sZC5jeWFuKGAgIEF6dXJlIHN1YnNjcmlwdGlvbiBcIiR7YWNjb3VudC5kaXNwbGF5TmFtZX1cIjpgKSxcbiAgICAgICAgYCAgICDigKIgQm9vdHN0cmFwIHJlc291cmNlIGdyb3VwIGFuZCBtYW5hZ2VkIGlkZW50aXR5IHdpdGggc3Vic2NyaXB0aW9uLXNjb3BlZCByb2xlc2AsXG4gICAgICAgIGAgICAg4oCiIEdpdEh1YiBPSURDIGZlZGVyYXRlZCBpZGVudGl0eSBjcmVkZW50aWFsYCxcbiAgICAgICAgYCAgICDigKIgR2l0SHViIGVudmlyb25tZW50IHNlY3JldHMgKEFSTV9DTElFTlRfSUQsIEFSTV9TVUJTQ1JJUFRJT05fSUQpYCxcbiAgICAgICAgYCAgICDigKIgQ29tbW9uIEtleSBWYXVsdCBzdG9yaW5nIHRoZSBHaXRIdWIgcnVubmVyIGFwcCBjcmVkZW50aWFsc2AsXG4gICAgICBdLmpvaW4oXCJcXG5cIiksXG4gICAgKTtcbiAgfVxuXG4gIGlmIChtaXNzaW5nQmFja2VuZCkge1xuICAgIHNlY3Rpb25zLnB1c2goXG4gICAgICBbXG4gICAgICAgIGNoYWxrLmJvbGQuY3lhbihgICBUZXJyYWZvcm0gcmVtb3RlIGJhY2tlbmQ6YCksXG4gICAgICAgIGAgICAg4oCiIEF6dXJlIHJlc291cmNlIGdyb3VwIGFuZCBTdG9yYWdlIEFjY291bnQgZm9yIHRoZSBUZXJyYWZvcm0gc3RhdGVgLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICk7XG4gIH1cblxuICBpZiAoc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIFwiXCIsXG4gICAgY2hhbGsuYm9sZChcIlRoZSBmb2xsb3dpbmcgcmVzb3VyY2VzIHdpbGwgYmUgY3JlYXRlZDpcIiksXG4gICAgXCJcIixcbiAgICAuLi5zZWN0aW9ucyxcbiAgICBcIlwiLFxuICBdLmpvaW4oXCJcXG5cIik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBwcm9tcHRzO1xuIl19
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvcHJvbXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHMUIsT0FBTyxLQUFLLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQztBQUU3QyxPQUFPLEVBR0wsa0JBQWtCLEdBR25CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUVMLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsNkJBQTZCLEdBQzlCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSw2QkFBNkIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUzQixPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUVMLDBCQUEwQixHQUMzQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbEUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQix5QkFBeUIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0lBQ3RELG9CQUFvQixFQUFFLDBCQUEwQixDQUFDLFFBQVEsRUFBRTtJQUMzRCxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hCLE1BQU0sQ0FBQztRQUNOLFlBQVksRUFBRSxrQkFBa0I7S0FDakMsQ0FBQztTQUNELFFBQVEsRUFBRTtDQUNkLENBQUMsQ0FBQztBQUlILE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FB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Y2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgaW5xdWlyZXIsIHsgRGlzdGluY3RRdWVzdGlvbiB9IGZyb20gXCJpbnF1aXJlclwiO1xuaW1wb3J0IHsgdHlwZSBEeW5hbWljUHJvbXB0c0Z1bmN0aW9uIH0gZnJvbSBcIm5vZGUtcGxvcFwiO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gXCJub2RlOmFzc2VydC9zdHJpY3RcIjtcblxuaW1wb3J0IHtcbiAgQ2xvdWRBY2NvdW50LFxuICBDbG91ZEFjY291bnRSZXBvc2l0b3J5LFxuICBjbG91ZEFjY291bnRTY2hlbWEsXG4gIENsb3VkQWNjb3VudFNlcnZpY2UsXG4gIENsb3VkUmVnaW9uLFxufSBmcm9tIFwiLi4vLi4vLi4vLi4vZG9tYWluL2Nsb3VkLWFjY291bnQuanNcIjtcbmltcG9ydCB7XG4gIEVudmlyb25tZW50SW5pdFN0YXR1cyxcbiAgZW52aXJvbm1lbnRTY2hlbWEsXG4gIGdldEluaXRpYWxpemF0aW9uU3RhdHVzLFxuICBoYXNVc2VyUGVybWlzc2lvblRvSW5pdGlhbGl6ZSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0ICogYXMgYXp1cmUgZnJvbSBcIi4uLy4uLy4uL2F6dXJlL2xvY2F0aW9ucy5qc1wiO1xuXG50eXBlIElucXVpcmVyQ2hvaWNlPFQ+ID0gaW5xdWlyZXIuU2VwYXJhdG9yIHwgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBUIH07XG5cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZC92NFwiO1xuXG5pbXBvcnQge1xuICBHaXRIdWJSZXBvLFxuICBnaXRodWJSZXBvU2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vLi4vLi4vZG9tYWluL2dpdGh1Yi1yZXBvLmpzXCI7XG5pbXBvcnQge1xuICB0eXBlIEdpdEh1YkFwcENyZWRlbnRpYWxzLFxuICBnaXRodWJBcHBDcmVkZW50aWFsc1NjaGVtYSxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2RvbWFpbi9naXRodWIuanNcIjtcbmltcG9ydCB7IGdldEdpdGh1YlJlcG8gfSBmcm9tIFwiLi4vLi4vLi4vZ2l0aHViL2dpdGh1Yi1yZXBvLmpzXCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVByb21wdCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL3ZhbGlkYXRlLXByb21wdC5qc1wiO1xuXG5jb25zdCBpbml0U2NoZW1hID0gei5vYmplY3Qoe1xuICBjbG91ZEFjY291bnRzVG9Jbml0aWFsaXplOiB6LmFycmF5KGNsb3VkQWNjb3VudFNjaGVtYSksXG4gIHJ1bm5lckFwcENyZWRlbnRpYWxzOiBnaXRodWJBcHBDcmVkZW50aWFsc1NjaGVtYS5vcHRpb25hbCgpLFxuICB0ZXJyYWZvcm1CYWNrZW5kOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBjbG91ZEFjY291bnQ6IGNsb3VkQWNjb3VudFNjaGVtYSxcbiAgICB9KVxuICAgIC5vcHRpb25hbCgpLFxufSk7XG5cbnR5cGUgSW5pdFBheWxvYWQgPSB6LmluZmVyPHR5cGVvZiBpbml0U2NoZW1hPjtcblxuY29uc3QgdGFnc1NjaGVtYSA9IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkubWluKDEpKTtcblxuY29uc3Qgd29ya3NwYWNlRG9tYWluU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLnRyaW0oKVxuICAudG9Mb3dlckNhc2UoKVxuICAubWluKDEsIFwiRG9tYWluIGlzIHJlcXVpcmVkXCIpXG4gIC5yZWdleChcbiAgICAvXlthLXowLTktXSskLyxcbiAgICBcIkRvbWFpbiBtYXkgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVuc1wiLFxuICApO1xuXG5leHBvcnQgY29uc3Qgd29ya3NwYWNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBkb21haW46IHdvcmtzcGFjZURvbWFpblNjaGVtYSxcbn0pO1xuXG5leHBvcnQgY29uc3QgcGF5bG9hZFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZW52OiBlbnZpcm9ubWVudFNjaGVtYSxcbiAgZ2l0aHViOiBnaXRodWJSZXBvU2NoZW1hLFxuICBpbml0OiBpbml0U2NoZW1hLm9wdGlvbmFsKCksXG4gIHRhZ3M6IHRhZ3NTY2hlbWEsXG4gIHdvcmtzcGFjZTogd29ya3NwYWNlU2NoZW1hLFxufSk7XG5cbmV4cG9ydCB0eXBlIFBheWxvYWQgPSB6LmluZmVyPHR5cGVvZiBwYXlsb2FkU2NoZW1hPjtcblxuLyoqXG4gKiBQcmVmaWxsZWQgYW5zd2VycyBzdXBwbGllZCB1cC1mcm9udCBieSB0aGUgY2FsbGVyIChlLmcuIENMSSBmbGFncyksIHVzZWQgdG9cbiAqIHNraXAgdGhlIG1hdGNoaW5nIHByb21wdHMuIElkZW50aWZpZXMgY2xvdWQgYWNjb3VudHMgYnkgaWQgYW5kIGxvY2F0aW9ucyBieVxuICogYWNjb3VudCBpZCwgc2luY2UgdGhlIGZ1bGwgZG9tYWluIG9iamVjdHMgYXJlbid0IGF2YWlsYWJsZSBiZWZvcmUgcmVzb2x2aW5nLlxuICovXG5leHBvcnQgY29uc3QgaW5pdGlhbEFuc3dlcnNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVudjogelxuICAgIC5vYmplY3Qoe1xuICAgICAgY2xvdWRBY2NvdW50SWRzOiB6LmFycmF5KHouc3RyaW5nKCkudHJpbSgpLm1pbigxKSkub3B0aW9uYWwoKSxcbiAgICAgIGxvY2F0aW9uczogelxuICAgICAgICAucmVjb3JkKHouc3RyaW5nKCkubWluKDEpLCB6LmVudW0oYXp1cmUubG9jYXRpb25zKSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBuYW1lOiBlbnZpcm9ubWVudFNjaGVtYS5zaGFwZS5uYW1lLm9wdGlvbmFsKCksXG4gICAgICBwcmVmaXg6IGVudmlyb25tZW50U2NoZW1hLnNoYXBlLnByZWZpeC5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9wdGlvbmFsKCksXG4gIGluaXQ6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGNvbmZpcm06IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgICBydW5uZXJBcHBDcmVkZW50aWFsczogZ2l0aHViQXBwQ3JlZGVudGlhbHNTY2hlbWEucGFydGlhbCgpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbiAgdGFnczogelxuICAgIC5vYmplY3Qoe1xuICAgICAgQnVzaW5lc3NVbml0OiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICAgIE1hbmFnZW1lbnRUZWFtOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5vcHRpb25hbCgpLFxuICB3b3Jrc3BhY2U6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGRvbWFpbjogd29ya3NwYWNlU2NoZW1hLnNoYXBlLmRvbWFpbi5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IHR5cGUgSW5pdGlhbEFuc3dlcnMgPSB6LmluZmVyPHR5cGVvZiBpbml0aWFsQW5zd2Vyc1NjaGVtYT47XG5cbi8qKlxuICogQW5zd2VycyBnYXRoZXJlZCBmcm9tIHRoZSBpbnRlcmFjdGl2ZSBiYXNlIHByb21wdHMuIE1pcnJvcnMge0BsaW5rIGluaXRpYWxBbnN3ZXJzU2NoZW1hfVxuICogYnV0IGhvbGRzIHRoZSB2YWx1ZXMgcHJvZHVjZWQgYnkgdGhlIHByb21wdCBzZXNzaW9uOiBjbG91ZCBhY2NvdW50cyBhcmUgZnVsbFxuICogZG9tYWluIG9iamVjdHMgKHJlc29sdmVkIGZyb20gaW5xdWlyZXIgY2hvaWNlcykgcmF0aGVyIHRoYW4gaWRzLiBPbmx5IHF1ZXN0aW9uc1xuICogbm90IGFscmVhZHkgcHJlZmlsbGVkIGFyZSBhc2tlZCwgc28gZXZlcnkgZmllbGQgaXMgb3B0aW9uYWwgaGVyZSB0b28uXG4gKi9cbmNvbnN0IGJhc2VQcm9tcHRBbnN3ZXJzU2NoZW1hID0gei5vYmplY3Qoe1xuICBlbnY6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGNsb3VkQWNjb3VudHM6IHouYXJyYXkoY2xvdWRBY2NvdW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICAgICAgbmFtZTogZW52aXJvbm1lbnRTY2hlbWEuc2hhcGUubmFtZS5vcHRpb25hbCgpLFxuICAgICAgcHJlZml4OiBlbnZpcm9ubWVudFNjaGVtYS5zaGFwZS5wcmVmaXgub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5vcHRpb25hbCgpLFxuICB0YWdzOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBCdXNpbmVzc1VuaXQ6IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgICAgTWFuYWdlbWVudFRlYW06IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9wdGlvbmFsKCksXG4gIHdvcmtzcGFjZTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZG9tYWluOiB3b3Jrc3BhY2VTY2hlbWEuc2hhcGUuZG9tYWluLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBQcm9tcHRzRGVwZW5kZW5jaWVzID0ge1xuICBjbG91ZEFjY291bnRSZXBvc2l0b3J5OiBDbG91ZEFjY291bnRSZXBvc2l0b3J5O1xuICBjbG91ZEFjY291bnRTZXJ2aWNlOiBDbG91ZEFjY291bnRTZXJ2aWNlO1xuICBnaXRodWI/OiBHaXRIdWJSZXBvO1xuICBpbml0aWFsQW5zd2Vycz86IEluaXRpYWxBbnN3ZXJzO1xufTtcblxudHlwZSBCYXNlUHJvbXB0QW5zd2VycyA9IHouaW5mZXI8dHlwZW9mIGJhc2VQcm9tcHRBbnN3ZXJzU2NoZW1hPjtcblxuY29uc3QgREVGQVVMVF9DT1NUX0NFTlRFUiA9IFwiVFMwMDBcIjtcblxuY29uc3QgcmVzb2x2ZUNsb3VkQWNjb3VudHMgPSAoXG4gIGF2YWlsYWJsZUNsb3VkQWNjb3VudHM6IENsb3VkQWNjb3VudFtdLFxuICBpbml0aWFsQW5zd2VyczogSW5pdGlhbEFuc3dlcnMsXG4pOiBDbG91ZEFjY291bnRbXSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGNsb3VkQWNjb3VudElkcyA9IGluaXRpYWxBbnN3ZXJzLmVudj8uY2xvdWRBY2NvdW50SWRzO1xuICBpZiAoY2xvdWRBY2NvdW50SWRzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIGNsb3VkQWNjb3VudElkcy5tYXAoKGNsb3VkQWNjb3VudElkKSA9PiB7XG4gICAgY29uc3QgY2xvdWRBY2NvdW50ID0gYXZhaWxhYmxlQ2xvdWRBY2NvdW50cy5maW5kKFxuICAgICAgKGFjY291bnQpID0+IGFjY291bnQuaWQgPT09IGNsb3VkQWNjb3VudElkLFxuICAgICk7XG4gICAgYXNzZXJ0Lm9rKGNsb3VkQWNjb3VudCwgYENsb3VkIGFjY291bnQgXCIke2Nsb3VkQWNjb3VudElkfVwiIHdhcyBub3QgZm91bmQuYCk7XG4gICAgcmV0dXJuIHsgLi4uY2xvdWRBY2NvdW50IH07XG4gIH0pO1xufTtcblxuY29uc3QgZ2V0QmFzZVF1ZXN0aW9ucyA9IChcbiAgYXZhaWxhYmxlQ2xvdWRBY2NvdW50czogQ2xvdWRBY2NvdW50W10sXG4gIGluaXRpYWxBbnN3ZXJzOiBJbml0aWFsQW5zd2VycyxcbiAgc2VsZWN0ZWRDbG91ZEFjY291bnRzOiBDbG91ZEFjY291bnRbXSB8IHVuZGVmaW5lZCxcbik6IERpc3RpbmN0UXVlc3Rpb25bXSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uczogRGlzdGluY3RRdWVzdGlvbltdID0gW107XG5cbiAgaWYgKGluaXRpYWxBbnN3ZXJzLmVudj8ubmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgZGVmYXVsdDogXCJwcm9kXCIsXG4gICAgICBmaWx0ZXI6ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKSxcbiAgICAgIG1lc3NhZ2U6IFwiRW52aXJvbm1lbnQgbmFtZSAoZGV2LCB1YXQsIHByb2QsIG9yIHRlbmFudC1lbnYgbGlrZSBjZ24tcHJvZClcIixcbiAgICAgIG5hbWU6IFwiZW52Lm5hbWVcIixcbiAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgIHZhbGlkYXRlOiB2YWxpZGF0ZVByb21wdChlbnZpcm9ubWVudFNjaGVtYS5zaGFwZS5uYW1lKSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChzZWxlY3RlZENsb3VkQWNjb3VudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgIGNob2ljZXM6IGdldENsb3VkQWNjb3VudENob2ljZXMoYXZhaWxhYmxlQ2xvdWRBY2NvdW50cyksXG4gICAgICBsb29wOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudChzKVwiLFxuICAgICAgbmFtZTogXCJlbnYuY2xvdWRBY2NvdW50c1wiLFxuICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMFxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogXCJQbGVhc2Ugc2VsZWN0IGEgY2xvdWQgYWNjb3VudC5cIixcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpbml0aWFsQW5zd2Vycy5lbnY/LnByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgZmlsdGVyOiAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCksXG4gICAgICBtZXNzYWdlOiBcIlByZWZpeCAoMi00IGNoYXJhY3RlcnMpXCIsXG4gICAgICBuYW1lOiBcImVudi5wcmVmaXhcIixcbiAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgIHZhbGlkYXRlOiB2YWxpZGF0ZVByb21wdChlbnZpcm9ubWVudFNjaGVtYS5zaGFwZS5wcmVmaXgpLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGluaXRpYWxBbnN3ZXJzLndvcmtzcGFjZT8uZG9tYWluID09PSB1bmRlZmluZWQpIHtcbiAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICBmaWx0ZXI6ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKSxcbiAgICAgIG1lc3NhZ2U6IFwiRG9tYWluXCIsXG4gICAgICBuYW1lOiBcIndvcmtzcGFjZS5kb21haW5cIixcbiAgICAgIHR5cGU6IFwiaW5wdXRcIixcbiAgICAgIHZhbGlkYXRlOiB2YWxpZGF0ZVByb21wdCh3b3Jrc3BhY2VTY2hlbWEuc2hhcGUuZG9tYWluKSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpbml0aWFsQW5zd2Vycy50YWdzPy5CdXNpbmVzc1VuaXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgIGZpbHRlcjogKHZhbHVlKSA9PiB2YWx1ZS50cmltKCksXG4gICAgICBtZXNzYWdlOiBcIkJ1c2luZXNzIHVuaXRcIixcbiAgICAgIG5hbWU6IFwidGFncy5CdXNpbmVzc1VuaXRcIixcbiAgICAgIHZhbGlkYXRlOiAodmFsdWUpID0+XG4gICAgICAgIHZhbHVlLmxlbmd0aCA+IDAgPyB0cnVlIDogXCJCdXNpbmVzcyBVbml0IGNhbm5vdCBiZSBlbXB0eS5cIixcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpbml0aWFsQW5zd2Vycy50YWdzPy5NYW5hZ2VtZW50VGVhbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHZhbHVlLnRyaW0oKSxcbiAgICAgIG1lc3NhZ2U6IFwiTWFuYWdlbWVudCB0ZWFtXCIsXG4gICAgICBuYW1lOiBcInRhZ3MuTWFuYWdlbWVudFRlYW1cIixcbiAgICAgIHZhbGlkYXRlOiAodmFsdWUpID0+XG4gICAgICAgIHZhbHVlLmxlbmd0aCA+IDAgPyB0cnVlIDogXCJNYW5hZ2VtZW50IFRlYW0gY2Fubm90IGJlIGVtcHR5LlwiLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHF1ZXN0aW9ucztcbn07XG5cbmNvbnN0IGdldFNlbGVjdGVkQ2xvdWRBY2NvdW50cyA9IChcbiAgYW5zd2VyczogQmFzZVByb21wdEFuc3dlcnMsXG4gIGluaXRpYWxDbG91ZEFjY291bnRzOiBDbG91ZEFjY291bnRbXSB8IHVuZGVmaW5lZCxcbik6IENsb3VkQWNjb3VudFtdID0+IHtcbiAgY29uc3QgcHJvbXB0ZWRDbG91ZEFjY291bnRzID0gYW5zd2Vycy5lbnY/LmNsb3VkQWNjb3VudHM7XG4gIGNvbnN0IHNlbGVjdGVkQ2xvdWRBY2NvdW50cyA9IGluaXRpYWxDbG91ZEFjY291bnRzID8/IHByb21wdGVkQ2xvdWRBY2NvdW50cztcblxuICBhc3NlcnQub2soXG4gICAgQXJyYXkuaXNBcnJheShzZWxlY3RlZENsb3VkQWNjb3VudHMpICYmIHNlbGVjdGVkQ2xvdWRBY2NvdW50cy5sZW5ndGggPiAwLFxuICAgIFwiUGxlYXNlIHNlbGVjdCBhIGNsb3VkIGFjY291bnQuXCIsXG4gICk7XG5cbiAgcmV0dXJuIHNlbGVjdGVkQ2xvdWRBY2NvdW50cy5tYXAoKGNsb3VkQWNjb3VudCkgPT4gKHsgLi4uY2xvdWRBY2NvdW50IH0pKTtcbn07XG5cbmNvbnN0IGFwcGx5TG9jYXRpb25zID0gYXN5bmMgKFxuICBwcm9tcHRNb2R1bGU6IHR5cGVvZiBpbnF1aXJlcixcbiAgc2VsZWN0ZWRDbG91ZEFjY291bnRzOiBDbG91ZEFjY291bnRbXSxcbiAgaW5pdGlhbEFuc3dlcnM6IEluaXRpYWxBbnN3ZXJzLFxuKSA9PiB7XG4gIGNvbnN0IHByZWRlZmluZWRMb2NhdGlvbnMgPSBpbml0aWFsQW5zd2Vycy5lbnY/LmxvY2F0aW9ucyA/PyB7fTtcbiAgY29uc3QgbG9jYXRpb25RdWVzdGlvbnMgPSBzZWxlY3RlZENsb3VkQWNjb3VudHNcbiAgICAuZmlsdGVyKChhY2NvdW50KSA9PiBwcmVkZWZpbmVkTG9jYXRpb25zW2FjY291bnQuaWRdID09PSB1bmRlZmluZWQpXG4gICAgLm1hcCgoYWNjb3VudCkgPT4gKHtcbiAgICAgIGNob2ljZXM6IGdldENsb3VkTG9jYXRpb25DaG9pY2VzKGF6dXJlLmNsb3VkUmVnaW9ucyksXG4gICAgICBkZWZhdWx0OiBhenVyZS5kZWZhdWx0TG9jYXRpb24sXG4gICAgICBtZXNzYWdlOiBgRGVmYXVsdCBsb2NhdGlvbiBmb3IgJHthY2NvdW50LmRpc3BsYXlOYW1lfWAsXG4gICAgICBuYW1lOiBhY2NvdW50LmlkLFxuICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgfSkpO1xuXG4gIGNvbnN0IHByb21wdGVkTG9jYXRpb25zID1cbiAgICBsb2NhdGlvblF1ZXN0aW9ucy5sZW5ndGggPT09IDBcbiAgICAgID8ge31cbiAgICAgIDogYXdhaXQgcHJvbXB0TW9kdWxlLnByb21wdChsb2NhdGlvblF1ZXN0aW9ucyk7XG5cbiAgc2VsZWN0ZWRDbG91ZEFjY291bnRzLmZvckVhY2goKGFjY291bnQpID0+IHtcbiAgICBjb25zdCBsb2NhdGlvbiA9XG4gICAgICBwcmVkZWZpbmVkTG9jYXRpb25zW2FjY291bnQuaWRdID8/IHByb21wdGVkTG9jYXRpb25zW2FjY291bnQuaWRdO1xuICAgIGlmIChsb2NhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhY2NvdW50LmRlZmF1bHRMb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCBwYXJzZUluaXRpYWxBbnN3ZXJzID0gKFxuICBpbnB1dDogSW5pdGlhbEFuc3dlcnMgfCB1bmRlZmluZWQsXG4pOiBJbml0aWFsQW5zd2VycyA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGluaXRpYWxBbnN3ZXJzU2NoZW1hLnNhZmVQYXJzZShpbnB1dCA/PyB7fSk7XG4gIGFzc2VydC5vayhcbiAgICByZXN1bHQuc3VjY2VzcyxcbiAgICBcIkludmFsaWQgaW5pdGlhbCBhbnN3ZXJzIGZvciB0aGUgZW52aXJvbm1lbnQgZ2VuZXJhdG9yLlwiLFxuICApO1xuICByZXR1cm4gcmVzdWx0LmRhdGE7XG59O1xuXG5jb25zdCBnZXRSdW5uZXJBcHBDcmVkZW50aWFsUXVlc3Rpb25zID0gKFxuICBpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHM6IFBhcnRpYWw8R2l0SHViQXBwQ3JlZGVudGlhbHM+LFxuKTogRGlzdGluY3RRdWVzdGlvbltdID0+IHtcbiAgY29uc3QgcXVlc3Rpb25zOiBEaXN0aW5jdFF1ZXN0aW9uW10gPSBbXTtcblxuICBpZiAoaW5pdGlhbFJ1bm5lckFwcENyZWRlbnRpYWxzLmlkID09PSB1bmRlZmluZWQpIHtcbiAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICBmaWx0ZXI6ICh2YWx1ZSkgPT4gdmFsdWUudHJpbSgpLFxuICAgICAgbWVzc2FnZTogXCJHaXRIdWIgUnVubmVyIEFwcCBJRFwiLFxuICAgICAgbmFtZTogXCJydW5uZXJBcHBDcmVkZW50aWFscy5pZFwiLFxuICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4gdmFsdWUubGVuZ3RoID4gMCxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHMuY2xpZW50SWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgIGZpbHRlcjogKHZhbHVlKSA9PiB2YWx1ZS50cmltKCksXG4gICAgICBtZXNzYWdlOiBcIkdpdEh1YiBSdW5uZXIgQXBwIENsaWVudCBJRFwiLFxuICAgICAgbmFtZTogXCJydW5uZXJBcHBDcmVkZW50aWFscy5jbGllbnRJZFwiLFxuICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4gdmFsdWUubGVuZ3RoID4gMCxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHMuaW5zdGFsbGF0aW9uSWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgIGZpbHRlcjogKHZhbHVlKSA9PiB2YWx1ZS50cmltKCksXG4gICAgICBtZXNzYWdlOiBcIkdpdEh1YiBSdW5uZXIgQXBwIEluc3RhbGxhdGlvbiBJRFwiLFxuICAgICAgbmFtZTogXCJydW5uZXJBcHBDcmVkZW50aWFscy5pbnN0YWxsYXRpb25JZFwiLFxuICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSkgPT4gdmFsdWUubGVuZ3RoID4gMCxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpbml0aWFsUnVubmVyQXBwQ3JlZGVudGlhbHMua2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICBmaWx0ZXI6ICh2YWx1ZSkgPT4gdmFsdWUudHJpbSgpLFxuICAgICAgbWVzc2FnZTogXCJHaXRIdWIgUnVubmVyIEFwcCBQcml2YXRlIEtleVwiLFxuICAgICAgbmFtZTogXCJydW5uZXJBcHBDcmVkZW50aWFscy5rZXlcIixcbiAgICAgIHR5cGU6IFwiZWRpdG9yXCIsXG4gICAgICB2YWxpZGF0ZTogKHZhbHVlKSA9PiB2YWx1ZS5sZW5ndGggPiAwLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHF1ZXN0aW9ucztcbn07XG5cbmNvbnN0IG1lcmdlUnVubmVyQXBwQ3JlZGVudGlhbHMgPSAoXG4gIGluaXRpYWxSdW5uZXJBcHBDcmVkZW50aWFsczogUGFydGlhbDxHaXRIdWJBcHBDcmVkZW50aWFscz4sXG4gIHByb21wdGVkUnVubmVyQXBwQ3JlZGVudGlhbHM6IFBhcnRpYWw8R2l0SHViQXBwQ3JlZGVudGlhbHM+IHwgdW5kZWZpbmVkLFxuKTogSW5pdFBheWxvYWRbXCJydW5uZXJBcHBDcmVkZW50aWFsc1wiXSA9PiB7XG4gIGNvbnN0IHJ1bm5lckFwcENyZWRlbnRpYWxzID0ge1xuICAgIGNsaWVudElkOlxuICAgICAgaW5pdGlhbFJ1bm5lckFwcENyZWRlbnRpYWxzLmNsaWVudElkID8/XG4gICAgICBwcm9tcHRlZFJ1bm5lckFwcENyZWRlbnRpYWxzPy5jbGllbnRJZCxcbiAgICBpZDogaW5pdGlhbFJ1bm5lckFwcENyZWRlbnRpYWxzLmlkID8/IHByb21wdGVkUnVubmVyQXBwQ3JlZGVudGlhbHM/LmlkLFxuICAgIGluc3RhbGxhdGlvbklkOlxuICAgICAgaW5pdGlhbFJ1bm5lckFwcENyZWRlbnRpYWxzLmluc3RhbGxhdGlvbklkID8/XG4gICAgICBwcm9tcHRlZFJ1bm5lckFwcENyZWRlbnRpYWxzPy5pbnN0YWxsYXRpb25JZCxcbiAgICBrZXk6IGluaXRpYWxSdW5uZXJBcHBDcmVkZW50aWFscy5rZXkgPz8gcHJvbXB0ZWRSdW5uZXJBcHBDcmVkZW50aWFscz8ua2V5LFxuICB9O1xuXG4gIGlmIChcbiAgICBPYmplY3QudmFsdWVzKHJ1bm5lckFwcENyZWRlbnRpYWxzKS5ldmVyeSgodmFsdWUpID0+IHZhbHVlID09PSB1bmRlZmluZWQpXG4gICkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gZ2l0aHViQXBwQ3JlZGVudGlhbHNTY2hlbWEucGFyc2UocnVubmVyQXBwQ3JlZGVudGlhbHMpO1xufTtcblxuY29uc3QgY29sbGVjdEJhc2VBbnN3ZXJzID0gYXN5bmMgKFxuICBwcm9tcHRNb2R1bGU6IHR5cGVvZiBpbnF1aXJlcixcbiAgYXZhaWxhYmxlQ2xvdWRBY2NvdW50czogQ2xvdWRBY2NvdW50W10sXG4gIGluaXRpYWxBbnN3ZXJzOiBJbml0aWFsQW5zd2Vycyxcbik6IFByb21pc2U8e1xuICBhbnN3ZXJzOiBCYXNlUHJvbXB0QW5zd2VycztcbiAgaW5pdGlhbENsb3VkQWNjb3VudHM6IENsb3VkQWNjb3VudFtdIHwgdW5kZWZpbmVkO1xufT4gPT4ge1xuICBjb25zdCBpbml0aWFsQ2xvdWRBY2NvdW50cyA9IHJlc29sdmVDbG91ZEFjY291bnRzKFxuICAgIGF2YWlsYWJsZUNsb3VkQWNjb3VudHMsXG4gICAgaW5pdGlhbEFuc3dlcnMsXG4gICk7XG4gIGNvbnN0IGJhc2VRdWVzdGlvbnMgPSBnZXRCYXNlUXVlc3Rpb25zKFxuICAgIGF2YWlsYWJsZUNsb3VkQWNjb3VudHMsXG4gICAgaW5pdGlhbEFuc3dlcnMsXG4gICAgaW5pdGlhbENsb3VkQWNjb3VudHMsXG4gICk7XG4gIGNvbnN0IHByb21wdEFuc3dlcnNSZXN1bHQgPSBiYXNlUHJvbXB0QW5zd2Vyc1NjaGVtYS5zYWZlUGFyc2UoXG4gICAgYmFzZVF1ZXN0aW9ucy5sZW5ndGggPT09IDAgPyB7fSA6IGF3YWl0IHByb21wdE1vZHVsZS5wcm9tcHQoYmFzZVF1ZXN0aW9ucyksXG4gICk7XG4gIGFzc2VydC5vayhwcm9tcHRBbnN3ZXJzUmVzdWx0LnN1Y2Nlc3MsIFwiSW52YWxpZCBlbnZpcm9ubWVudCBwcm9tcHQgYW5zd2Vycy5cIik7XG5cbiAgcmV0dXJuIHtcbiAgICBhbnN3ZXJzOiBwcm9tcHRBbnN3ZXJzUmVzdWx0LmRhdGEsXG4gICAgaW5pdGlhbENsb3VkQWNjb3VudHMsXG4gIH07XG59O1xuXG5jb25zdCBidWlsZFBheWxvYWQgPSAoe1xuICBhbnN3ZXJzLFxuICBnaXRodWIsXG4gIGluaXRpYWxBbnN3ZXJzLFxuICBzZWxlY3RlZENsb3VkQWNjb3VudHMsXG59OiB7XG4gIGFuc3dlcnM6IEJhc2VQcm9tcHRBbnN3ZXJzO1xuICBnaXRodWI6IEdpdEh1YlJlcG87XG4gIGluaXRpYWxBbnN3ZXJzOiBJbml0aWFsQW5zd2VycztcbiAgc2VsZWN0ZWRDbG91ZEFjY291bnRzOiBDbG91ZEFjY291bnRbXTtcbn0pOiBQYXlsb2FkID0+XG4gIHBheWxvYWRTY2hlbWEucGFyc2Uoe1xuICAgIGVudjoge1xuICAgICAgY2xvdWRBY2NvdW50czogc2VsZWN0ZWRDbG91ZEFjY291bnRzLFxuICAgICAgbmFtZTogaW5pdGlhbEFuc3dlcnMuZW52Py5uYW1lID8/IGFuc3dlcnMuZW52Py5uYW1lLFxuICAgICAgcHJlZml4OiBpbml0aWFsQW5zd2Vycy5lbnY/LnByZWZpeCA/PyBhbnN3ZXJzLmVudj8ucHJlZml4LFxuICAgIH0sXG4gICAgZ2l0aHViLFxuICAgIHRhZ3M6IHtcbiAgICAgIEJ1c2luZXNzVW5pdDpcbiAgICAgICAgaW5pdGlhbEFuc3dlcnMudGFncz8uQnVzaW5lc3NVbml0ID8/IGFuc3dlcnMudGFncz8uQnVzaW5lc3NVbml0LFxuICAgICAgQ29zdENlbnRlcjogREVGQVVMVF9DT1NUX0NFTlRFUixcbiAgICAgIE1hbmFnZW1lbnRUZWFtOlxuICAgICAgICBpbml0aWFsQW5zd2Vycy50YWdzPy5NYW5hZ2VtZW50VGVhbSA/PyBhbnN3ZXJzLnRhZ3M/Lk1hbmFnZW1lbnRUZWFtLFxuICAgIH0sXG4gICAgd29ya3NwYWNlOiB7XG4gICAgICBkb21haW46IGluaXRpYWxBbnN3ZXJzLndvcmtzcGFjZT8uZG9tYWluID8/IGFuc3dlcnMud29ya3NwYWNlPy5kb21haW4sXG4gICAgfSxcbiAgfSk7XG5cbmNvbnN0IHByb21wdHM6IChkZXBzOiBQcm9tcHRzRGVwZW5kZW5jaWVzKSA9PiBEeW5hbWljUHJvbXB0c0Z1bmN0aW9uID1cbiAgKGRlcHMpID0+IGFzeW5jIChwcm9tcHRNb2R1bGUpID0+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZ2VuXCIsIFwiZW52XCJdKTtcbiAgICBjb25zdCBnaXRodWIgPSBkZXBzLmdpdGh1YiA/PyAoYXdhaXQgZ2V0R2l0aHViUmVwbygpKTtcbiAgICBhc3NlcnQub2soZ2l0aHViLCBcIlRoaXMgZ2VuZXJhdG9yIG9ubHkgd29ya3MgaW5zaWRlIGEgR2l0SHViIHJlcG9zaXRvcnkuXCIpO1xuICAgIGNvbnN0IGluaXRpYWxBbnN3ZXJzID0gcGFyc2VJbml0aWFsQW5zd2VycyhkZXBzLmluaXRpYWxBbnN3ZXJzKTtcbiAgICBsb2dnZXIuZGVidWcoXCJnaXRodWIgcmVwbyB7Z2l0aHVifVwiLCB7IGdpdGh1YiB9KTtcbiAgICBjb25zdCBhdmFpbGFibGVDbG91ZEFjY291bnRzID0gYXdhaXQgZGVwcy5jbG91ZEFjY291bnRSZXBvc2l0b3J5Lmxpc3QoKTtcbiAgICBjb25zdCB7IGFuc3dlcnMsIGluaXRpYWxDbG91ZEFjY291bnRzIH0gPSBhd2FpdCBjb2xsZWN0QmFzZUFuc3dlcnMoXG4gICAgICBwcm9tcHRNb2R1bGUsXG4gICAgICBhdmFpbGFibGVDbG91ZEFjY291bnRzLFxuICAgICAgaW5pdGlhbEFuc3dlcnMsXG4gICAgKTtcbiAgICBjb25zdCBzZWxlY3RlZENsb3VkQWNjb3VudHMgPSBnZXRTZWxlY3RlZENsb3VkQWNjb3VudHMoXG4gICAgICBhbnN3ZXJzLFxuICAgICAgaW5pdGlhbENsb3VkQWNjb3VudHMsXG4gICAgKTtcblxuICAgIGF3YWl0IGFwcGx5TG9jYXRpb25zKHByb21wdE1vZHVsZSwgc2VsZWN0ZWRDbG91ZEFjY291bnRzLCBpbml0aWFsQW5zd2Vycyk7XG5cbiAgICBjb25zdCBwYXlsb2FkID0gYnVpbGRQYXlsb2FkKHtcbiAgICAgIGFuc3dlcnMsXG4gICAgICBnaXRodWIsXG4gICAgICBpbml0aWFsQW5zd2VycyxcbiAgICAgIHNlbGVjdGVkQ2xvdWRBY2NvdW50cyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGluaXRTdGF0dXMgPSBhd2FpdCBnZXRJbml0aWFsaXphdGlvblN0YXR1cyhcbiAgICAgIGRlcHMuY2xvdWRBY2NvdW50U2VydmljZSxcbiAgICAgIHBheWxvYWQuZW52LFxuICAgICk7XG5cbiAgICBsb2dnZXIuZGVidWcoXCJpbml0aWFsaXphdGlvbiBzdGF0dXMge2luaXRTdGF0dXN9XCIsIHsgaW5pdFN0YXR1cyB9KTtcblxuICAgIGlmIChpbml0U3RhdHVzLmluaXRpYWxpemVkKSB7XG4gICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhmb3JtYXRJbml0aWFsaXphdGlvbkRldGFpbHMoaW5pdFN0YXR1cykpO1xuXG4gICAgaWYgKGluaXRpYWxBbnN3ZXJzLmluaXQ/LmNvbmZpcm0gIT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGluaXRDb25maXJtID0gYXdhaXQgcHJvbXB0TW9kdWxlLnByb21wdCh7XG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgIG1lc3NhZ2U6IGBUaGUgZW52aXJvbm1lbnQgXCIke3BheWxvYWQuZW52Lm5hbWV9XCIgaXMgbm90IGluaXRpYWxpemVkLiBQcm9jZWVkIHdpdGggdGhlIHNldHVwIGFib3ZlP2AsXG4gICAgICAgIG5hbWU6IFwiaW5pdFwiLFxuICAgICAgICB0eXBlOiBcImNvbmZpcm1cIixcbiAgICAgIH0pO1xuXG4gICAgICBhc3NlcnQub2soaW5pdENvbmZpcm0uaW5pdCwgXCJDYW4ndCBwcm9jZWVkIHdpdGhvdXQgaW5pdGlhbGl6YXRpb25cIik7XG4gICAgfVxuXG4gICAgYXNzZXJ0Lm9rKFxuICAgICAgYXdhaXQgaGFzVXNlclBlcm1pc3Npb25Ub0luaXRpYWxpemUoXG4gICAgICAgIGRlcHMuY2xvdWRBY2NvdW50U2VydmljZSxcbiAgICAgICAgcGF5bG9hZC5lbnYsXG4gICAgICApLFxuICAgICAgXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGluaXRpYWxpemUgdGhpcyBlbnZpcm9ubWVudC4gQXNrIHlvdXIgRW5naW5lZXJpbmcgTGVhZGVyIHRvIGluaXRpYWxpemUgaXQgZm9yIHlvdS5cIixcbiAgICApO1xuXG4gICAgY29uc3QgbWlzc2luZ1JlbW90ZUJhY2tlbmQgPSBpbml0U3RhdHVzLmlzc3Vlcy5zb21lKFxuICAgICAgKGlzc3VlKSA9PiBpc3N1ZS50eXBlID09PSBcIk1JU1NJTkdfUkVNT1RFX0JBQ0tFTkRcIixcbiAgICApO1xuXG4gICAgY29uc3QgcXVlc3Rpb25zOiBEaXN0aW5jdFF1ZXN0aW9uW10gPSBbXTtcblxuICAgIGxldCB0ZXJyYWZvcm1CYWNrZW5kOiBJbml0UGF5bG9hZFtcInRlcnJhZm9ybUJhY2tlbmRcIl07XG5cbiAgICBpZiAobWlzc2luZ1JlbW90ZUJhY2tlbmQpIHtcbiAgICAgIGlmIChwYXlsb2FkLmVudi5jbG91ZEFjY291bnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB0ZXJyYWZvcm1CYWNrZW5kID0ge1xuICAgICAgICAgIGNsb3VkQWNjb3VudDogcGF5bG9hZC5lbnYuY2xvdWRBY2NvdW50c1swXSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICBjaG9pY2VzOiBnZXRDbG91ZEFjY291bnRDaG9pY2VzKHBheWxvYWQuZW52LmNsb3VkQWNjb3VudHMpLFxuICAgICAgICAgIG1lc3NhZ2U6IFwiQ2xvdWQgQWNjb3VudCB0byB1c2UgZm9yIHRoZSByZW1vdGUgVGVycmFmb3JtIGJhY2tlbmRcIixcbiAgICAgICAgICBuYW1lOiBcInRlcnJhZm9ybUJhY2tlbmQuY2xvdWRBY2NvdW50XCIsXG4gICAgICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNsb3VkQWNjb3VudHNOb3RJbml0aWFsaXplZCA9IGluaXRTdGF0dXMuaXNzdWVzLnNvbWUoXG4gICAgICAoaXNzdWUpID0+IGlzc3VlLnR5cGUgPT09IFwiQ0xPVURfQUNDT1VOVF9OT1RfSU5JVElBTElaRURcIixcbiAgICApO1xuXG4gICAgY29uc3QgaW5pdGlhbFJ1bm5lckFwcENyZWRlbnRpYWxzID1cbiAgICAgIGluaXRpYWxBbnN3ZXJzLmluaXQ/LnJ1bm5lckFwcENyZWRlbnRpYWxzID8/IHt9O1xuXG4gICAgaWYgKGNsb3VkQWNjb3VudHNOb3RJbml0aWFsaXplZCkge1xuICAgICAgcXVlc3Rpb25zLnB1c2goXG4gICAgICAgIC4uLmdldFJ1bm5lckFwcENyZWRlbnRpYWxRdWVzdGlvbnMoaW5pdGlhbFJ1bm5lckFwcENyZWRlbnRpYWxzKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdElucHV0ID1cbiAgICAgIHF1ZXN0aW9ucy5sZW5ndGggPT09IDAgPyB7fSA6IGF3YWl0IHByb21wdE1vZHVsZS5wcm9tcHQocXVlc3Rpb25zKTtcblxuICAgIGlmIChpbml0SW5wdXQudGVycmFmb3JtQmFja2VuZCkge1xuICAgICAgdGVycmFmb3JtQmFja2VuZCA9IGluaXRJbnB1dC50ZXJyYWZvcm1CYWNrZW5kO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bm5lckFwcENyZWRlbnRpYWxzID0gbWVyZ2VSdW5uZXJBcHBDcmVkZW50aWFscyhcbiAgICAgIGluaXRpYWxSdW5uZXJBcHBDcmVkZW50aWFscyxcbiAgICAgIGluaXRJbnB1dC5ydW5uZXJBcHBDcmVkZW50aWFscyxcbiAgICApO1xuXG4gICAgcGF5bG9hZC5pbml0ID0gcGF5bG9hZFNjaGVtYS5zaGFwZS5pbml0LnBhcnNlKHtcbiAgICAgIGNsb3VkQWNjb3VudHNUb0luaXRpYWxpemU6IGdldENsb3VkQWNjb3VudFRvSW5pdGlhbGl6ZShpbml0U3RhdHVzKSxcbiAgICAgIHJ1bm5lckFwcENyZWRlbnRpYWxzLFxuICAgICAgdGVycmFmb3JtQmFja2VuZCxcbiAgICB9KTtcblxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4vLyBDcmVhdGVzIElucXVpcmVyIGNob2ljZXMsIHByaW9yaXRpemluZyB0aG9zZSB0aGF0IG1hdGNoIHRoZSBlbnYgcHJlZml4XG5leHBvcnQgY29uc3QgZ2V0Q2xvdWRBY2NvdW50Q2hvaWNlcyA9IChcbiAgY2xvdWRBY2NvdW50czogQ2xvdWRBY2NvdW50W10sXG4pOiBJbnF1aXJlckNob2ljZTxDbG91ZEFjY291bnQ+W10gPT5cbiAgY2xvdWRBY2NvdW50cy5tYXAoKGFjY291bnQpID0+ICh7XG4gICAgbmFtZTogYCR7YWNjb3VudC5kaXNwbGF5TmFtZX1gLFxuICAgIHZhbHVlOiBhY2NvdW50LFxuICB9KSk7XG5cbmV4cG9ydCBjb25zdCBnZXRDbG91ZExvY2F0aW9uQ2hvaWNlcyA9IChcbiAgcmVnaW9uczogQ2xvdWRSZWdpb25bXSxcbik6IElucXVpcmVyQ2hvaWNlPENsb3VkUmVnaW9uW1wibmFtZVwiXT5bXSA9PlxuICByZWdpb25zLm1hcCgocikgPT4gKHsgbmFtZTogci5kaXNwbGF5TmFtZSwgdmFsdWU6IHIubmFtZSB9KSk7XG5cbmV4cG9ydCBjb25zdCBnZXRDbG91ZEFjY291bnRUb0luaXRpYWxpemUgPSAoXG4gIGluaXRTdGF0dXM6IEVudmlyb25tZW50SW5pdFN0YXR1cyAmIHsgaW5pdGlhbGl6ZWQ6IGZhbHNlIH0sXG4pID0+XG4gIGluaXRTdGF0dXMuaXNzdWVzXG4gICAgLmZpbHRlcigoaXNzdWUpID0+IGlzc3VlLnR5cGUgPT09IFwiQ0xPVURfQUNDT1VOVF9OT1RfSU5JVElBTElaRURcIilcbiAgICAubWFwKChpc3N1ZSkgPT4gaXNzdWUuY2xvdWRBY2NvdW50KTtcblxuLyoqXG4gKiBCdWlsZCBhIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSByZXNvdXJjZXMgdGhhdCB3aWxsIGJlIGNyZWF0ZWRcbiAqIHdoZW4gaW5pdGlhbGl6aW5nIGFuIGVudmlyb25tZW50LCBzbyB1c2VycyBzZWUgdGhlIHNpZGUgZWZmZWN0cyBiZWZvcmVcbiAqIGNvbmZpcm1pbmcuIFRoZSBleGFjdCByZXNvdXJjZSBuYW1lcyBhcmUgaW50ZW50aW9uYWxseSBvbWl0dGVkIHRvIGF2b2lkXG4gKiBjb3VwbGluZyB0aGUgcHJvbXB0IGNvcHkgdG8gaW50ZXJuYWwgbmFtaW5nIGNvbnZlbnRpb25zLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0SW5pdGlhbGl6YXRpb25EZXRhaWxzID0gKFxuICBpbml0U3RhdHVzOiBFbnZpcm9ubWVudEluaXRTdGF0dXMgJiB7IGluaXRpYWxpemVkOiBmYWxzZSB9LFxuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgYWNjb3VudHNUb0luaXQgPSBnZXRDbG91ZEFjY291bnRUb0luaXRpYWxpemUoaW5pdFN0YXR1cyk7XG4gIGNvbnN0IG1pc3NpbmdCYWNrZW5kID0gaW5pdFN0YXR1cy5pc3N1ZXMuc29tZShcbiAgICAoaXNzdWUpID0+IGlzc3VlLnR5cGUgPT09IFwiTUlTU0lOR19SRU1PVEVfQkFDS0VORFwiLFxuICApO1xuXG4gIGNvbnN0IHNlY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYWNjb3VudCBvZiBhY2NvdW50c1RvSW5pdCkge1xuICAgIHNlY3Rpb25zLnB1c2goXG4gICAgICBbXG4gICAgICAgIGNoYWxrLmJvbGQuY3lhbihgICBBenVyZSBzdWJzY3JpcHRpb24gXCIke2FjY291bnQuZGlzcGxheU5hbWV9XCI6YCksXG4gICAgICAgIGAgICAg4oCiIEJvb3RzdHJhcCByZXNvdXJjZSBncm91cCBhbmQgbWFuYWdlZCBpZGVudGl0eSB3aXRoIHN1YnNjcmlwdGlvbi1zY29wZWQgcm9sZXNgLFxuICAgICAgICBgICAgIOKAoiBHaXRIdWIgT0lEQyBmZWRlcmF0ZWQgaWRlbnRpdHkgY3JlZGVudGlhbGAsXG4gICAgICAgIGAgICAg4oCiIEdpdEh1YiBlbnZpcm9ubWVudCBzZWNyZXRzIChBUk1fQ0xJRU5UX0lELCBBUk1fU1VCU0NSSVBUSU9OX0lEKWAsXG4gICAgICAgIGAgICAg4oCiIENvbW1vbiBLZXkgVmF1bHQgc3RvcmluZyB0aGUgR2l0SHViIHJ1bm5lciBhcHAgY3JlZGVudGlhbHNgLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICk7XG4gIH1cblxuICBpZiAobWlzc2luZ0JhY2tlbmQpIHtcbiAgICBzZWN0aW9ucy5wdXNoKFxuICAgICAgW1xuICAgICAgICBjaGFsay5ib2xkLmN5YW4oYCAgVGVycmFmb3JtIHJlbW90ZSBiYWNrZW5kOmApLFxuICAgICAgICBgICAgIOKAoiBBenVyZSByZXNvdXJjZSBncm91cCBhbmQgU3RvcmFnZSBBY2NvdW50IGZvciB0aGUgVGVycmFmb3JtIHN0YXRlYCxcbiAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKHNlY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICBcIlwiLFxuICAgIGNoYWxrLmJvbGQoXCJUaGUgZm9sbG93aW5nIHJlc291cmNlcyB3aWxsIGJlIGNyZWF0ZWQ6XCIpLFxuICAgIFwiXCIsXG4gICAgLi4uc2VjdGlvbnMsXG4gICAgXCJcIixcbiAgXS5qb2luKFwiXFxuXCIpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcHJvbXB0cztcbiJdfQ==
@@ -1,10 +1,10 @@
1
1
  import * as assert from "node:assert/strict";
2
- import { environmentSchema, environmentShort, } from "../../../domain/environment.js";
2
+ import { environmentSchema, getEnvironmentShort, } from "../../../domain/environment.js";
3
3
  export default (plop) => {
4
4
  plop.setHelper("envShort", (ctx) => {
5
5
  const result = environmentSchema.shape.name.safeParse(ctx);
6
6
  assert.ok(result.success, "envShort: Invalid Environment name provided");
7
- return environmentShort[result.data];
7
+ return getEnvironmentShort(result.data);
8
8
  });
9
9
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LXNob3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL3Bsb3AvaGVscGVycy9lbnYtc2hvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLGVBQWUsQ0FBQyxJQUFpQixFQUFFLEVBQUU7SUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNqQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsNkNBQTZDLENBQUMsQ0FBQztRQUN6RSxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgTm9kZVBsb3BBUEkgfSBmcm9tIFwibm9kZS1wbG9wXCI7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0L3N0cmljdFwiO1xuXG5pbXBvcnQge1xuICBlbnZpcm9ubWVudFNjaGVtYSxcbiAgZW52aXJvbm1lbnRTaG9ydCxcbn0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAocGxvcDogTm9kZVBsb3BBUEkpID0+IHtcbiAgcGxvcC5zZXRIZWxwZXIoXCJlbnZTaG9ydFwiLCAoY3R4KSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gZW52aXJvbm1lbnRTY2hlbWEuc2hhcGUubmFtZS5zYWZlUGFyc2UoY3R4KTtcbiAgICBhc3NlcnQub2socmVzdWx0LnN1Y2Nlc3MsIFwiZW52U2hvcnQ6IEludmFsaWQgRW52aXJvbm1lbnQgbmFtZSBwcm92aWRlZFwiKTtcbiAgICByZXR1cm4gZW52aXJvbm1lbnRTaG9ydFtyZXN1bHQuZGF0YV07XG4gIH0pO1xufTtcbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LXNob3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL3Bsb3AvaGVscGVycy9lbnYtc2hvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUNwQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLGVBQWUsQ0FBQyxJQUFpQixFQUFFLEVBQUU7SUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNqQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsNkNBQTZDLENBQUMsQ0FBQztRQUN6RSxPQUFPLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgTm9kZVBsb3BBUEkgfSBmcm9tIFwibm9kZS1wbG9wXCI7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0L3N0cmljdFwiO1xuXG5pbXBvcnQge1xuICBlbnZpcm9ubWVudFNjaGVtYSxcbiAgZ2V0RW52aXJvbm1lbnRTaG9ydCxcbn0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAocGxvcDogTm9kZVBsb3BBUEkpID0+IHtcbiAgcGxvcC5zZXRIZWxwZXIoXCJlbnZTaG9ydFwiLCAoY3R4KSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gZW52aXJvbm1lbnRTY2hlbWEuc2hhcGUubmFtZS5zYWZlUGFyc2UoY3R4KTtcbiAgICBhc3NlcnQub2socmVzdWx0LnN1Y2Nlc3MsIFwiZW52U2hvcnQ6IEludmFsaWQgRW52aXJvbm1lbnQgbmFtZSBwcm92aWRlZFwiKTtcbiAgICByZXR1cm4gZ2V0RW52aXJvbm1lbnRTaG9ydChyZXN1bHQuZGF0YSk7XG4gIH0pO1xufTtcbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import * as assert from "node:assert/strict";
2
- import { environmentShort } from "../../../domain/environment.js";
2
+ import { getEnvironmentShort } from "../../../domain/environment.js";
3
3
  import { payloadSchema } from "../generators/environment/prompts.js";
4
4
  export const resourcePrefix = (payload) => {
5
5
  const { env, workspace } = payload;
6
- const prefix = [env.prefix, environmentShort[env.name]];
6
+ const prefix = [env.prefix, getEnvironmentShort(env.name)];
7
7
  if (workspace.domain) {
8
8
  prefix.push(workspace.domain);
9
9
  }
@@ -16,4 +16,4 @@ export default (plop) => {
16
16
  return resourcePrefix(result.data);
17
17
  });
18
18
  };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcHJlZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL3Bsb3AvaGVscGVycy9yZXNvdXJjZS1wcmVmaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQVcsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFOUUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzVCLE9BQTJDLEVBQ25DLEVBQUU7SUFDVixNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNuQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEQsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixlQUFlLENBQUMsSUFBaUIsRUFBRSxFQUFFO0lBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN2QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSwwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgTm9kZVBsb3BBUEkgfSBmcm9tIFwibm9kZS1wbG9wXCI7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0L3N0cmljdFwiO1xuXG5pbXBvcnQgeyBlbnZpcm9ubWVudFNob3J0IH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0IHsgUGF5bG9hZCwgcGF5bG9hZFNjaGVtYSB9IGZyb20gXCIuLi9nZW5lcmF0b3JzL2Vudmlyb25tZW50L3Byb21wdHMuanNcIjtcblxuZXhwb3J0IGNvbnN0IHJlc291cmNlUHJlZml4ID0gKFxuICBwYXlsb2FkOiBQaWNrPFBheWxvYWQsIFwiZW52XCIgfCBcIndvcmtzcGFjZVwiPixcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgZW52LCB3b3Jrc3BhY2UgfSA9IHBheWxvYWQ7XG4gIGNvbnN0IHByZWZpeCA9IFtlbnYucHJlZml4LCBlbnZpcm9ubWVudFNob3J0W2Vudi5uYW1lXV07XG4gIGlmICh3b3Jrc3BhY2UuZG9tYWluKSB7XG4gICAgcHJlZml4LnB1c2god29ya3NwYWNlLmRvbWFpbik7XG4gIH1cbiAgcmV0dXJuIHByZWZpeC5qb2luKFwiLVwiKS50b0xvd2VyQ2FzZSgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgKHBsb3A6IE5vZGVQbG9wQVBJKSA9PiB7XG4gIHBsb3Auc2V0SGVscGVyKFwicmVzb3VyY2VQcmVmaXhcIiwgKGN0eCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHBheWxvYWRTY2hlbWEuc2FmZVBhcnNlKGN0eCk7XG4gICAgYXNzZXJ0Lm9rKHJlc3VsdC5zdWNjZXNzLCBcInJlc291cmNlUHJlZml4OiBJbnZhbGlkIHBheWxvYWQgcHJvdmlkZWRcIik7XG4gICAgcmV0dXJuIHJlc291cmNlUHJlZml4KHJlc3VsdC5kYXRhKTtcbiAgfSk7XG59O1xuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcHJlZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL3Bsb3AvaGVscGVycy9yZXNvdXJjZS1wcmVmaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQVcsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFOUUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzVCLE9BQTJDLEVBQ25DLEVBQUU7SUFDVixNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNuQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0QsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixlQUFlLENBQUMsSUFBaUIsRUFBRSxFQUFFO0lBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN2QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSwwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgTm9kZVBsb3BBUEkgfSBmcm9tIFwibm9kZS1wbG9wXCI7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0L3N0cmljdFwiO1xuXG5pbXBvcnQgeyBnZXRFbnZpcm9ubWVudFNob3J0IH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0IHsgUGF5bG9hZCwgcGF5bG9hZFNjaGVtYSB9IGZyb20gXCIuLi9nZW5lcmF0b3JzL2Vudmlyb25tZW50L3Byb21wdHMuanNcIjtcblxuZXhwb3J0IGNvbnN0IHJlc291cmNlUHJlZml4ID0gKFxuICBwYXlsb2FkOiBQaWNrPFBheWxvYWQsIFwiZW52XCIgfCBcIndvcmtzcGFjZVwiPixcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgZW52LCB3b3Jrc3BhY2UgfSA9IHBheWxvYWQ7XG4gIGNvbnN0IHByZWZpeCA9IFtlbnYucHJlZml4LCBnZXRFbnZpcm9ubWVudFNob3J0KGVudi5uYW1lKV07XG4gIGlmICh3b3Jrc3BhY2UuZG9tYWluKSB7XG4gICAgcHJlZml4LnB1c2god29ya3NwYWNlLmRvbWFpbik7XG4gIH1cbiAgcmV0dXJuIHByZWZpeC5qb2luKFwiLVwiKS50b0xvd2VyQ2FzZSgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgKHBsb3A6IE5vZGVQbG9wQVBJKSA9PiB7XG4gIHBsb3Auc2V0SGVscGVyKFwicmVzb3VyY2VQcmVmaXhcIiwgKGN0eCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHBheWxvYWRTY2hlbWEuc2FmZVBhcnNlKGN0eCk7XG4gICAgYXNzZXJ0Lm9rKHJlc3VsdC5zdWNjZXNzLCBcInJlc291cmNlUHJlZml4OiBJbnZhbGlkIHBheWxvYWQgcHJvdmlkZWRcIik7XG4gICAgcmV0dXJuIHJlc291cmNlUHJlZml4KHJlc3VsdC5kYXRhKTtcbiAgfSk7XG59O1xuIl19
@@ -16,11 +16,11 @@ declare const terraformStateContextSchema: z.ZodObject<{
16
16
  displayName: z.ZodString;
17
17
  id: z.ZodString;
18
18
  }, z.core.$strip>>;
19
- name: z.ZodEnum<{
19
+ name: z.ZodPipe<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
20
20
  dev: "dev";
21
21
  prod: "prod";
22
22
  uat: "uat";
23
- }>;
23
+ }>, z.ZodTemplateLiteral<`${string}-dev` | `${string}-prod` | `${string}-uat`>]>>;
24
24
  prefix: z.ZodString;
25
25
  }, z.core.$strip>;
26
26
  workspace: z.ZodObject<{
@@ -7,6 +7,7 @@ import { AzureSubscriptionRepository } from "../azure/cloud-account-repository.j
7
7
  import { AzureCloudAccountService } from "../azure/cloud-account-service.js";
8
8
  import createDeploymentEnvironmentGenerator, { payloadSchema as environmentPayloadSchema, PLOP_ENVIRONMENT_GENERATOR_NAME, } from "../plop/generators/environment/index.js";
9
9
  import createMonorepoGenerator, { payloadSchema as monorepoPayloadSchema, PLOP_MONOREPO_GENERATOR_NAME, } from "../plop/generators/monorepo/index.js";
10
+ import setConfigureGitHubEnvironmentsAction from "./actions/configure-github-environments.js";
10
11
  import { resolveTemplatesPath } from "./templates-path.js";
11
12
  export const setMonorepoGenerator = (plop, initialAnswers = {}) => {
12
13
  const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
@@ -126,6 +127,7 @@ export const setDeploymentEnvironmentGenerator = (plop, gitHubService, github, i
126
127
  const credential = new AzureCliCredential();
127
128
  const cloudAccountRepository = new AzureSubscriptionRepository(credential);
128
129
  const cloudAccountService = new AzureCloudAccountService(credential);
130
+ setConfigureGitHubEnvironmentsAction(plop, cloudAccountService, gitHubService);
129
131
  createDeploymentEnvironmentGenerator(plop, resolveTemplatesPath("environment"), cloudAccountRepository, cloudAccountService, gitHubService, github, initialAnswers);
130
132
  };
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvcGxvcC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHbEMsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sb0NBQW9DLEVBQUUsRUFHM0MsYUFBYSxJQUFJLHdCQUF3QixFQUN6QywrQkFBK0IsR0FDaEMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLHVCQUF1QixFQUFFLEVBRTlCLGFBQWEsSUFBSSxxQkFBcUIsRUFDdEMsNEJBQTRCLEdBQzdCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FDbEMsSUFBaUIsRUFDakIsaUJBQTJDLEVBQUUsRUFDN0MsRUFBRTtJQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNoRSx1QkFBdUIsQ0FDckIsSUFBSSxFQUNKLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxFQUNoQyxPQUFPLEVBQ1AsY0FBYyxDQUNmLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUs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QUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQy9DLElBQWlCLEVBQ2pCLGFBQTRCLEVBQzVCLE1BQW1CLEVBQ25CLGlCQUFzRCxFQUFFLEVBQ3hELEVBQUU7SUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDNUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVyRSxvQ0FBb0MsQ0FDbEMsSUFBSSxFQUNKLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxFQUNuQyxzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixNQUFNLEVBQ04sY0FBYyxDQUNmLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE5vZGVQbG9wQVBJLCBQbG9wR2VuZXJhdG9yIH0gZnJvbSBcInBsb3BcIjtcblxuaW1wb3J0IHsgQXp1cmVDbGlDcmVkZW50aWFsIH0gZnJvbSBcIkBhenVyZS9pZGVudGl0eVwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IEFuc3dlcnMgfSBmcm9tIFwiaW5xdWlyZXJcIjtcbmltcG9ydCBub2RlUGxvcCBmcm9tIFwibm9kZS1wbG9wXCI7XG5pbXBvcnQgeyBPY3Rva2l0IH0gZnJvbSBcIm9jdG9raXRcIjtcblxuaW1wb3J0IHsgR2l0SHViUmVwbyB9IGZyb20gXCIuLi8uLi9kb21haW4vZ2l0aHViLXJlcG8uanNcIjtcbmltcG9ydCB7IEdpdEh1YlNlcnZpY2UsIFJlcG9zaXRvcnlOb3RGb3VuZEVycm9yIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9naXRodWIuanNcIjtcbmltcG9ydCB7IEF6dXJlU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9henVyZS9jbG91ZC1hY2NvdW50LXJlcG9zaXRvcnkuanNcIjtcbmltcG9ydCB7IEF6dXJlQ2xvdWRBY2NvdW50U2VydmljZSB9IGZyb20gXCIuLi9henVyZS9jbG91ZC1hY2NvdW50LXNlcnZpY2UuanNcIjtcbmltcG9ydCBjcmVhdGVEZXBsb3ltZW50RW52aXJvbm1lbnRHZW5lcmF0b3IsIHtcbiAgSW5pdGlhbEFuc3dlcnMgYXMgRGVwbG95bWVudEVudmlyb25tZW50SW5pdGlhbEFuc3dlcnMsXG4gIFBheWxvYWQgYXMgRW52aXJvbm1lbnRQYXlsb2FkLFxuICBwYXlsb2FkU2NoZW1hIGFzIGVudmlyb25tZW50UGF5bG9hZFNjaGVtYSxcbiAgUExPUF9FTlZJUk9OTUVOVF9HRU5FUkFUT1JfTkFNRSxcbn0gZnJvbSBcIi4uL3Bsb3AvZ2VuZXJhdG9ycy9lbnZpcm9ubWVudC9pbmRleC5qc1wiO1xuaW1wb3J0IGNyZWF0ZU1vbm9yZXBvR2VuZXJhdG9yLCB7XG4gIFBheWxvYWQgYXMgTW9ub3JlcG9QYXlsb2FkLFxuICBwYXlsb2FkU2NoZW1hIGFzIG1vbm9yZXBvUGF5bG9hZFNjaGVtYSxcbiAgUExPUF9NT05PUkVQT19HRU5FUkFUT1JfTkFNRSxcbn0gZnJvbSBcIi4uL3Bsb3AvZ2VuZXJhdG9ycy9tb25vcmVwby9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZVRlbXBsYXRlc1BhdGggfSBmcm9tIFwiLi90ZW1wbGF0ZXMtcGF0aC5qc1wiO1xuXG5leHBvcnQgY29uc3Qgc2V0TW9ub3JlcG9HZW5lcmF0b3IgPSAoXG4gIHBsb3A6IE5vZGVQbG9wQVBJLFxuICBpbml0aWFsQW5zd2VyczogUGFydGlhbDxNb25vcmVwb1BheWxvYWQ+ID0ge30sXG4pID0+IHtcbiAgY29uc3Qgb2N0b2tpdCA9IG5ldyBPY3Rva2l0KHsgYXV0aDogcHJvY2Vzcy5lbnYuR0lUSFVCX1RPS0VOIH0pO1xuICBjcmVhdGVNb25vcmVwb0dlbmVyYXRvcihcbiAgICBwbG9wLFxuICAgIHJlc29sdmVUZW1wbGF0ZXNQYXRoKFwibW9ub3JlcG9cIiksXG4gICAgb2N0b2tpdCxcbiAgICBpbml0aWFsQW5zd2VycyxcbiAgKTtcbn07XG5cbmNvbnN0IHZhbGlkYXRlUGF5bG9hZCA9IGFzeW5jIChcbiAgcGF5bG9hZDogTW9ub3JlcG9QYXlsb2FkLFxuICBnaXRodWI6IEdpdEh1YlNlcnZpY2UsXG4pID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXBvID0gYXdhaXQgZ2l0aHViLmdldFJlcG9zaXRvcnkoXG4gICAgICBwYXlsb2FkLnJlcG9Pd25lcixcbiAgICAgIHBheWxvYWQucmVwb05hbWUsXG4gICAgKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcG9zaXRvcnkgJHtyZXBvLmZ1bGxOYW1lfSBhbHJlYWR5IGV4aXN0cy5gKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIFJlcG9zaXRvcnlOb3RGb3VuZEVycm9yKSkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UGxvcEluc3RhbmNlID0gYXN5bmMgKCk6IFByb21pc2U8Tm9kZVBsb3BBUEk+ID0+IG5vZGVQbG9wKCk7XG5cbmV4cG9ydCBjb25zdCBydW5BY3Rpb25zID0gYXN5bmMgKFxuICBnZW5lcmF0b3I6IFBsb3BHZW5lcmF0b3IsXG4gIHBheWxvYWQ6IEFuc3dlcnMsXG4pID0+IHtcbiAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImluaXRcIl0pO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZW5lcmF0b3IucnVuQWN0aW9ucyhwYXlsb2FkKTtcbiAgaWYgKHJlc3VsdC5mYWlsdXJlcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gQ29sbGVjdCBldmVyeSBmYWlsdXJlIHRvIHJlcG9ydCByaWNoIGNvbnRleHQuIG5vZGUtcGxvcCdzIGZhaWx1cmVcbiAgICAvLyBvYmplY3RzIGhhdmUgc2hhcGUgYHsgdHlwZSwgcGF0aCwgZXJyb3IgfWAgKHRoZSBgZXJyb3JgIHByb3BlcnR5IGhvbGRzXG4gICAgLy8gdGhlIG9yaWdpbmFsIGVycm9yJ3MgbWVzc2FnZSDigJQgc2VlIG5vZGUtcGxvcCdzIGdlbmVyYXRvci1ydW5uZXIuanMpLlxuICAgIGNvbnN0IHJlbGV2YW50ID0gcmVzdWx0LmZhaWx1cmVzLmZpbHRlcihcbiAgICAgIChmYWlsdXJlKSA9PiBmYWlsdXJlLmVycm9yICE9PSBcIkFib3J0ZWQgZHVlIHRvIHByZXZpb3VzIGFjdGlvbiBmYWlsdXJlXCIsXG4gICAgKTtcbiAgICBpZiAocmVsZXZhbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN1bW1hcnkgPSByZWxldmFudFxuICAgICAgLm1hcChcbiAgICAgICAgKGZhaWx1cmUpID0+XG4gICAgICAgICAgYCR7ZmFpbHVyZS50eXBlIHx8IFwiYWN0aW9uXCJ9OiAke2ZhaWx1cmUuZXJyb3IgPz8gXCJ1bmtub3duIGVycm9yXCJ9YCxcbiAgICAgIClcbiAgICAgIC5qb2luKFwiOyBcIik7XG4gICAgZm9yIChjb25zdCBmYWlsdXJlIG9mIHJlbGV2YW50KSB7XG4gICAgICBsb2dnZXIuZXJyb3IoXCJFcnJvciBvbiB7dHlwZX0gc3RlcDoge2Vycm9yfVwiLCB7XG4gICAgICAgIGVycm9yOiBmYWlsdXJlLmVycm9yID8/IFwidW5rbm93biBlcnJvclwiLFxuICAgICAgICB0eXBlOiBmYWlsdXJlLnR5cGUgfHwgXCJhY3Rpb25cIixcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgT25lIG9yIG1vcmUgYWN0aW9ucyBmYWlsZWQgZHVyaW5nIGdlbmVyYXRpb24gKCR7c3VtbWFyeX0pLmAsXG4gICAgKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDb2xsZWN0IHRoZSBtb25vcmVwbyBwYXlsb2FkIGJ5IHJ1bm5pbmcgdGhlIGdlbmVyYXRvcidzIGludGVyYWN0aXZlIHByb21wdHMuXG4gKlxuICogVGhpcyBwaGFzZSBNVVNUIHJ1biBvdXRzaWRlIGFueSBzcGlubmVyOiBhIHNwaW5uZXIgKGUuZy4gb3JhKSBvY2N1cGllcyB0aGVcbiAqIFRUWSBhbmQgcHJldmVudHMgdGhlIGlucXVpcmVyIHByb21wdHMgZnJvbSBiZWluZyByZW5kZXJlZC4gQ2FsbGVycyBzaG91bGRcbiAqIHRyYWNrIG9ubHkgdGhlIHN1YnNlcXVlbnQge0BsaW5rIHJ1bk1vbm9yZXBvQWN0aW9uc30gcGhhc2UsIHdoaWNoIGlzXG4gKiBub24taW50ZXJhY3RpdmUuXG4gKi9cbmV4cG9ydCBjb25zdCBjb2xsZWN0TW9ub3JlcG9QYXlsb2FkID0gYXN5bmMgKFxuICBwbG9wOiBOb2RlUGxvcEFQSSxcbiAgZ2l0aHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgaW5pdGlhbEFuc3dlcnM6IFBhcnRpYWw8TW9ub3JlcG9QYXlsb2FkPiA9IHt9LFxuKTogUHJvbWlzZTx7IGdlbmVyYXRvcjogUGxvcEdlbmVyYXRvcjsgcGF5bG9hZDogTW9ub3JlcG9QYXlsb2FkIH0+ID0+IHtcbiAgc2V0TW9ub3JlcG9HZW5lcmF0b3IocGxvcCwgaW5pdGlhbEFuc3dlcnMpO1xuICBjb25zdCBnZW5lcmF0b3IgPSBwbG9wLmdldEdlbmVyYXRvcihQTE9QX01PTk9SRVBPX0dFTkVSQVRPUl9OQU1FKTtcbiAgY29uc3QgYW5zd2VycyA9IGF3YWl0IGdlbmVyYXRvci5ydW5Qcm9tcHRzKCk7XG4gIGNvbnN0IHBheWxvYWRSZXN1bHQgPSBtb25vcmVwb1BheWxvYWRTY2hlbWEuc2FmZVBhcnNlKHtcbiAgICAuLi5pbml0aWFsQW5zd2VycyxcbiAgICAuLi5hbnN3ZXJzLFxuICB9KTtcbiAgaWYgKCFwYXlsb2FkUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG1vbm9yZXBvIGdlbmVyYXRvciBhbnN3ZXJzXCIsIHtcbiAgICAgIGNhdXNlOiBwYXlsb2FkUmVzdWx0LmVycm9yLFxuICAgIH0pO1xuICB9XG4gIGNvbnN0IHBheWxvYWQgPSBwYXlsb2FkUmVzdWx0LmRhdGE7XG4gIGF3YWl0IHZhbGlkYXRlUGF5bG9hZChwYXlsb2FkLCBnaXRodWJTZXJ2aWNlKTtcbiAgcmV0dXJuIHsgZ2VuZXJhdG9yLCBwYXlsb2FkIH07XG59O1xuXG4vKipcbiAqIEV4ZWN1dGUgdGhlIG1vbm9yZXBvIGdlbmVyYXRvciBhY3Rpb25zIGZvciBhbiBhbHJlYWR5LWNvbGxlY3RlZCBwYXlsb2FkLlxuICpcbiAqIFRoaXMgcGhhc2UgaXMgbm9uLWludGVyYWN0aXZlLCBzbyBjYWxsZXJzIGFyZSBmcmVlIHRvIHdyYXAgaXQgaW4gYSBzcGlubmVyXG4gKiBvciBvdGhlciBwcm9ncmVzcyBpbmRpY2F0b3IuXG4gKi9cbmV4cG9ydCBjb25zdCBydW5Nb25vcmVwb0FjdGlvbnMgPSBhc3luYyAoXG4gIGdlbmVyYXRvcjogUGxvcEdlbmVyYXRvcixcbiAgcGF5bG9hZDogTW9ub3JlcG9QYXlsb2FkLFxuKTogUHJvbWlzZTxNb25vcmVwb1BheWxvYWQ+ID0+IHtcbiAgYXdhaXQgcnVuQWN0aW9ucyhnZW5lcmF0b3IsIHBheWxvYWQpO1xuICByZXR1cm4gcGF5bG9hZDtcbn07XG5cbi8qKlxuICogQ29sbGVjdCB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBwYXlsb2FkIGJ5IHJ1bm5pbmcgdGhlIGdlbmVyYXRvcidzXG4gKiBpbnRlcmFjdGl2ZSBwcm9tcHRzLlxuICpcbiAqIExpa2Uge0BsaW5rIGNvbGxlY3RNb25vcmVwb1BheWxvYWR9LCB0aGlzIHBoYXNlIE1VU1QgcnVuIG91dHNpZGUgYW55IHNwaW5uZXI6XG4gKiBhIHNwaW5uZXIgKGUuZy4gb3JhKSBvY2N1cGllcyB0aGUgVFRZIGFuZCBwcmV2ZW50cyB0aGUgaW5xdWlyZXIgcHJvbXB0cyBmcm9tXG4gKiBiZWluZyByZW5kZXJlZC4gQ2FsbGVycyBzaG91bGQgdHJhY2sgb25seSB0aGUgc3Vic2VxdWVudFxuICoge0BsaW5rIHJ1bkRlcGxveW1lbnRFbnZpcm9ubWVudEFjdGlvbnN9IHBoYXNlLCB3aGljaCBpcyBub24taW50ZXJhY3RpdmUuXG4gKlxuICogQHBhcmFtIHBsb3AgLSBUaGUgcGxvcCBpbnN0YW5jZVxuICogQHBhcmFtIGdpdGh1YiAtIE9wdGlvbmFsIEdpdEh1YiByZXBvc2l0b3J5IGluZm8uIFdoZW4gcHJvdmlkZWQgKGJ5IGluaXQgY29tbWFuZCksXG4gKiAgICAgICAgICAgICAgICAgdXNlcyB0aGUgZXhwbGljaXRseSBwYXNzZWQgcmVwb3NpdG9yeS4gV2hlbiBvbWl0dGVkIChieSBhZGQgY29tbWFuZCksXG4gKiAgICAgICAgICAgICAgICAgdGhlIGdlbmVyYXRvciBpbmZlcnMgaXQgZnJvbSB0aGUgbG9jYWwgZ2l0IGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjb25zdCBjb2xsZWN0RGVwbG95bWVudEVudmlyb25tZW50UGF5bG9hZCA9IGFzeW5jIChcbiAgcGxvcDogTm9kZVBsb3BBUEksXG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2UsXG4gIGdpdGh1Yj86IEdpdEh1YlJlcG8sXG4gIGluaXRpYWxBbnN3ZXJzOiBEZXBsb3ltZW50RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyA9IHt9LFxuKTogUHJvbWlzZTx7IGdlbmVyYXRvcjogUGxvcEdlbmVyYXRvcjsgcGF5bG9hZDogRW52aXJvbm1lbnRQYXlsb2FkIH0+ID0+IHtcbiAgc2V0RGVwbG95bWVudEVudmlyb25tZW50R2VuZXJhdG9yKFxuICAgIHBsb3AsXG4gICAgZ2l0SHViU2VydmljZSxcbiAgICBnaXRodWIsXG4gICAgaW5pdGlhbEFuc3dlcnMsXG4gICk7XG4gIGNvbnN0IGdlbmVyYXRvciA9IHBsb3AuZ2V0R2VuZXJhdG9yKFBMT1BfRU5WSVJPTk1FTlRfR0VORVJBVE9SX05BTUUpO1xuICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgZ2VuZXJhdG9yLnJ1blByb21wdHMoKTtcbiAgY29uc3QgcGF5bG9hZCA9IGVudmlyb25tZW50UGF5bG9hZFNjaGVtYS5wYXJzZShhbnN3ZXJzKTtcbiAgcmV0dXJuIHsgZ2VuZXJhdG9yLCBwYXlsb2FkIH07XG59O1xuXG4vKipcbiAqIEV4ZWN1dGUgdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgZ2VuZXJhdG9yIGFjdGlvbnMgZm9yIGFuIGFscmVhZHktY29sbGVjdGVkXG4gKiBwYXlsb2FkLlxuICpcbiAqIFRoaXMgcGhhc2UgaXMgbm9uLWludGVyYWN0aXZlLCBzbyBjYWxsZXJzIGFyZSBmcmVlIHRvIHdyYXAgaXQgaW4gYSBzcGlubmVyIG9yXG4gKiBvdGhlciBwcm9ncmVzcyBpbmRpY2F0b3IuXG4gKi9cbmV4cG9ydCBjb25zdCBydW5EZXBsb3ltZW50RW52aXJvbm1lbnRBY3Rpb25zID0gYXN5bmMgKFxuICBnZW5lcmF0b3I6IFBsb3BHZW5lcmF0b3IsXG4gIHBheWxvYWQ6IEVudmlyb25tZW50UGF5bG9hZCxcbik6IFByb21pc2U8RW52aXJvbm1lbnRQYXlsb2FkPiA9PiB7XG4gIGF3YWl0IHJ1bkFjdGlvbnMoZ2VuZXJhdG9yLCBwYXlsb2FkKTtcbiAgcmV0dXJuIHBheWxvYWQ7XG59O1xuXG4vKipcbiAqIENvbmZpZ3VyZSB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBnZW5lcmF0b3JcbiAqXG4gKiBAcGFyYW0gcGxvcCAtIFRoZSBwbG9wIGluc3RhbmNlXG4gKiBAcGFyYW0gZ2l0aHViIC0gT3B0aW9uYWwgR2l0SHViIHJlcG9zaXRvcnkgaW5mby4gV2hlbiBwcm92aWRlZCAoYnkgaW5pdCBjb21tYW5kKSxcbiAqICAgICAgICAgICAgICAgICB1c2VzIHRoZSBleHBsaWNpdGx5IHBhc3NlZCByZXBvc2l0b3J5LiBXaGVuIG9taXR0ZWQgKGJ5IGFkZCBjb21tYW5kKSxcbiAqICAgICAgICAgICAgICAgICB0aGUgZ2VuZXJhdG9yIGluZmVycyBpdCBmcm9tIHRoZSBsb2NhbCBnaXQgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldERlcGxveW1lbnRFbnZpcm9ubWVudEdlbmVyYXRvciA9IChcbiAgcGxvcDogTm9kZVBsb3BBUEksXG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2UsXG4gIGdpdGh1Yj86IEdpdEh1YlJlcG8sXG4gIGluaXRpYWxBbnN3ZXJzOiBEZXBsb3ltZW50RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyA9IHt9LFxuKSA9PiB7XG4gIGNvbnN0IGNyZWRlbnRpYWwgPSBuZXcgQXp1cmVDbGlDcmVkZW50aWFsKCk7XG4gIGNvbnN0IGNsb3VkQWNjb3VudFJlcG9zaXRvcnkgPSBuZXcgQXp1cmVTdWJzY3JpcHRpb25SZXBvc2l0b3J5KGNyZWRlbnRpYWwpO1xuICBjb25zdCBjbG91ZEFjY291bnRTZXJ2aWNlID0gbmV3IEF6dXJlQ2xvdWRBY2NvdW50U2VydmljZShjcmVkZW50aWFsKTtcblxuICBjcmVhdGVEZXBsb3ltZW50RW52aXJvbm1lbnRHZW5lcmF0b3IoXG4gICAgcGxvcCxcbiAgICByZXNvbHZlVGVtcGxhdGVzUGF0aChcImVudmlyb25tZW50XCIpLFxuICAgIGNsb3VkQWNjb3VudFJlcG9zaXRvcnksXG4gICAgY2xvdWRBY2NvdW50U2VydmljZSxcbiAgICBnaXRIdWJTZXJ2aWNlLFxuICAgIGdpdGh1YixcbiAgICBpbml0aWFsQW5zd2VycyxcbiAgKTtcbn07XG4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvcGxvcC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHbEMsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sb0NBQW9DLEVBQUUsRUFHM0MsYUFBYSxJQUFJLHdCQUF3QixFQUN6QywrQkFBK0IsR0FDaEMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLHVCQUF1QixFQUFFLEVBRTlCLGFBQWEsSUFBSSxxQkFBcUIsRUFDdEMsNEJBQTRCLEdBQzdCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxvQ0FBb0MsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxJQUFpQixFQUNqQixpQkFBMkMsRUFBRSxFQUM3QyxFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLHVCQUF1QixDQUNyQixJQUFJLEVBQ0osb0JBQW9CLENBQUMsVUFBVSxDQUFDLEVBQ2hDLE9BQU8sRUFDUCxjQUFjLENBQ2Ys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QztJQUNyQyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsQ0FDL0MsSUFBaUIsRUFDakIsYUFBNEIsRUFDNUIsTUFBbUIsRUFDbkIsaUJBQXNELEVBQUUsRUFDeEQsRUFBRTtJQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztJQUM1QyxNQUFNLHNCQUFzQixHQUFHLElBQUksMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0UsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJFLG9DQUFvQyxDQUNsQyxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLGFBQWEsQ0FDZCxDQUFDO0lBRUYsb0NBQW9DLENBQ2xDLElBQUksRUFDSixvQkFBb0IsQ0FBQyxhQUFhLENBQUMsRUFDbkMsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsTUFBTSxFQUNOLGNBQWMsQ0FDZixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOb2RlUGxvcEFQSSwgUGxvcEdlbmVyYXRvciB9IGZyb20gXCJwbG9wXCI7XG5cbmltcG9ydCB7IEF6dXJlQ2xpQ3JlZGVudGlhbCB9IGZyb20gXCJAYXp1cmUvaWRlbnRpdHlcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBBbnN3ZXJzIH0gZnJvbSBcImlucXVpcmVyXCI7XG5pbXBvcnQgbm9kZVBsb3AgZnJvbSBcIm5vZGUtcGxvcFwiO1xuaW1wb3J0IHsgT2N0b2tpdCB9IGZyb20gXCJvY3Rva2l0XCI7XG5cbmltcG9ydCB7IEdpdEh1YlJlcG8gfSBmcm9tIFwiLi4vLi4vZG9tYWluL2dpdGh1Yi1yZXBvLmpzXCI7XG5pbXBvcnQgeyBHaXRIdWJTZXJ2aWNlLCBSZXBvc2l0b3J5Tm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi8uLi9kb21haW4vZ2l0aHViLmpzXCI7XG5pbXBvcnQgeyBBenVyZVN1YnNjcmlwdGlvblJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vYXp1cmUvY2xvdWQtYWNjb3VudC1yZXBvc2l0b3J5LmpzXCI7XG5pbXBvcnQgeyBBenVyZUNsb3VkQWNjb3VudFNlcnZpY2UgfSBmcm9tIFwiLi4vYXp1cmUvY2xvdWQtYWNjb3VudC1zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgY3JlYXRlRGVwbG95bWVudEVudmlyb25tZW50R2VuZXJhdG9yLCB7XG4gIEluaXRpYWxBbnN3ZXJzIGFzIERlcGxveW1lbnRFbnZpcm9ubWVudEluaXRpYWxBbnN3ZXJzLFxuICBQYXlsb2FkIGFzIEVudmlyb25tZW50UGF5bG9hZCxcbiAgcGF5bG9hZFNjaGVtYSBhcyBlbnZpcm9ubWVudFBheWxvYWRTY2hlbWEsXG4gIFBMT1BfRU5WSVJPTk1FTlRfR0VORVJBVE9SX05BTUUsXG59IGZyb20gXCIuLi9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvaW5kZXguanNcIjtcbmltcG9ydCBjcmVhdGVNb25vcmVwb0dlbmVyYXRvciwge1xuICBQYXlsb2FkIGFzIE1vbm9yZXBvUGF5bG9hZCxcbiAgcGF5bG9hZFNjaGVtYSBhcyBtb25vcmVwb1BheWxvYWRTY2hlbWEsXG4gIFBMT1BfTU9OT1JFUE9fR0VORVJBVE9SX05BTUUsXG59IGZyb20gXCIuLi9wbG9wL2dlbmVyYXRvcnMvbW9ub3JlcG8vaW5kZXguanNcIjtcbmltcG9ydCBzZXRDb25maWd1cmVHaXRIdWJFbnZpcm9ubWVudHNBY3Rpb24gZnJvbSBcIi4vYWN0aW9ucy9jb25maWd1cmUtZ2l0aHViLWVudmlyb25tZW50cy5qc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZVRlbXBsYXRlc1BhdGggfSBmcm9tIFwiLi90ZW1wbGF0ZXMtcGF0aC5qc1wiO1xuXG5leHBvcnQgY29uc3Qgc2V0TW9ub3JlcG9HZW5lcmF0b3IgPSAoXG4gIHBsb3A6IE5vZGVQbG9wQVBJLFxuICBpbml0aWFsQW5zd2VyczogUGFydGlhbDxNb25vcmVwb1BheWxvYWQ+ID0ge30sXG4pID0+IHtcbiAgY29uc3Qgb2N0b2tpdCA9IG5ldyBPY3Rva2l0KHsgYXV0aDogcHJvY2Vzcy5lbnYuR0lUSFVCX1RPS0VOIH0pO1xuICBjcmVhdGVNb25vcmVwb0dlbmVyYXRvcihcbiAgICBwbG9wLFxuICAgIHJlc29sdmVUZW1wbGF0ZXNQYXRoKFwibW9ub3JlcG9cIiksXG4gICAgb2N0b2tpdCxcbiAgICBpbml0aWFsQW5zd2VycyxcbiAgKTtcbn07XG5cbmNvbnN0IHZhbGlkYXRlUGF5bG9hZCA9IGFzeW5jIChcbiAgcGF5bG9hZDogTW9ub3JlcG9QYXlsb2FkLFxuICBnaXRodWI6IEdpdEh1YlNlcnZpY2UsXG4pID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXBvID0gYXdhaXQgZ2l0aHViLmdldFJlcG9zaXRvcnkoXG4gICAgICBwYXlsb2FkLnJlcG9Pd25lcixcbiAgICAgIHBheWxvYWQucmVwb05hbWUsXG4gICAgKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcG9zaXRvcnkgJHtyZXBvLmZ1bGxOYW1lfSBhbHJlYWR5IGV4aXN0cy5gKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIFJlcG9zaXRvcnlOb3RGb3VuZEVycm9yKSkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UGxvcEluc3RhbmNlID0gYXN5bmMgKCk6IFByb21pc2U8Tm9kZVBsb3BBUEk+ID0+IG5vZGVQbG9wKCk7XG5cbmV4cG9ydCBjb25zdCBydW5BY3Rpb25zID0gYXN5bmMgKFxuICBnZW5lcmF0b3I6IFBsb3BHZW5lcmF0b3IsXG4gIHBheWxvYWQ6IEFuc3dlcnMsXG4pID0+IHtcbiAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImluaXRcIl0pO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZW5lcmF0b3IucnVuQWN0aW9ucyhwYXlsb2FkKTtcbiAgaWYgKHJlc3VsdC5mYWlsdXJlcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gQ29sbGVjdCBldmVyeSBmYWlsdXJlIHRvIHJlcG9ydCByaWNoIGNvbnRleHQuIG5vZGUtcGxvcCdzIGZhaWx1cmVcbiAgICAvLyBvYmplY3RzIGhhdmUgc2hhcGUgYHsgdHlwZSwgcGF0aCwgZXJyb3IgfWAgKHRoZSBgZXJyb3JgIHByb3BlcnR5IGhvbGRzXG4gICAgLy8gdGhlIG9yaWdpbmFsIGVycm9yJ3MgbWVzc2FnZSDigJQgc2VlIG5vZGUtcGxvcCdzIGdlbmVyYXRvci1ydW5uZXIuanMpLlxuICAgIGNvbnN0IHJlbGV2YW50ID0gcmVzdWx0LmZhaWx1cmVzLmZpbHRlcihcbiAgICAgIChmYWlsdXJlKSA9PiBmYWlsdXJlLmVycm9yICE9PSBcIkFib3J0ZWQgZHVlIHRvIHByZXZpb3VzIGFjdGlvbiBmYWlsdXJlXCIsXG4gICAgKTtcbiAgICBpZiAocmVsZXZhbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN1bW1hcnkgPSByZWxldmFudFxuICAgICAgLm1hcChcbiAgICAgICAgKGZhaWx1cmUpID0+XG4gICAgICAgICAgYCR7ZmFpbHVyZS50eXBlIHx8IFwiYWN0aW9uXCJ9OiAke2ZhaWx1cmUuZXJyb3IgPz8gXCJ1bmtub3duIGVycm9yXCJ9YCxcbiAgICAgIClcbiAgICAgIC5qb2luKFwiOyBcIik7XG4gICAgZm9yIChjb25zdCBmYWlsdXJlIG9mIHJlbGV2YW50KSB7XG4gICAgICBsb2dnZXIuZXJyb3IoXCJFcnJvciBvbiB7dHlwZX0gc3RlcDoge2Vycm9yfVwiLCB7XG4gICAgICAgIGVycm9yOiBmYWlsdXJlLmVycm9yID8/IFwidW5rbm93biBlcnJvclwiLFxuICAgICAgICB0eXBlOiBmYWlsdXJlLnR5cGUgfHwgXCJhY3Rpb25cIixcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgT25lIG9yIG1vcmUgYWN0aW9ucyBmYWlsZWQgZHVyaW5nIGdlbmVyYXRpb24gKCR7c3VtbWFyeX0pLmAsXG4gICAgKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDb2xsZWN0IHRoZSBtb25vcmVwbyBwYXlsb2FkIGJ5IHJ1bm5pbmcgdGhlIGdlbmVyYXRvcidzIGludGVyYWN0aXZlIHByb21wdHMuXG4gKlxuICogVGhpcyBwaGFzZSBNVVNUIHJ1biBvdXRzaWRlIGFueSBzcGlubmVyOiBhIHNwaW5uZXIgKGUuZy4gb3JhKSBvY2N1cGllcyB0aGVcbiAqIFRUWSBhbmQgcHJldmVudHMgdGhlIGlucXVpcmVyIHByb21wdHMgZnJvbSBiZWluZyByZW5kZXJlZC4gQ2FsbGVycyBzaG91bGRcbiAqIHRyYWNrIG9ubHkgdGhlIHN1YnNlcXVlbnQge0BsaW5rIHJ1bk1vbm9yZXBvQWN0aW9uc30gcGhhc2UsIHdoaWNoIGlzXG4gKiBub24taW50ZXJhY3RpdmUuXG4gKi9cbmV4cG9ydCBjb25zdCBjb2xsZWN0TW9ub3JlcG9QYXlsb2FkID0gYXN5bmMgKFxuICBwbG9wOiBOb2RlUGxvcEFQSSxcbiAgZ2l0aHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgaW5pdGlhbEFuc3dlcnM6IFBhcnRpYWw8TW9ub3JlcG9QYXlsb2FkPiA9IHt9LFxuKTogUHJvbWlzZTx7IGdlbmVyYXRvcjogUGxvcEdlbmVyYXRvcjsgcGF5bG9hZDogTW9ub3JlcG9QYXlsb2FkIH0+ID0+IHtcbiAgc2V0TW9ub3JlcG9HZW5lcmF0b3IocGxvcCwgaW5pdGlhbEFuc3dlcnMpO1xuICBjb25zdCBnZW5lcmF0b3IgPSBwbG9wLmdldEdlbmVyYXRvcihQTE9QX01PTk9SRVBPX0dFTkVSQVRPUl9OQU1FKTtcbiAgY29uc3QgYW5zd2VycyA9IGF3YWl0IGdlbmVyYXRvci5ydW5Qcm9tcHRzKCk7XG4gIGNvbnN0IHBheWxvYWRSZXN1bHQgPSBtb25vcmVwb1BheWxvYWRTY2hlbWEuc2FmZVBhcnNlKHtcbiAgICAuLi5pbml0aWFsQW5zd2VycyxcbiAgICAuLi5hbnN3ZXJzLFxuICB9KTtcbiAgaWYgKCFwYXlsb2FkUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG1vbm9yZXBvIGdlbmVyYXRvciBhbnN3ZXJzXCIsIHtcbiAgICAgIGNhdXNlOiBwYXlsb2FkUmVzdWx0LmVycm9yLFxuICAgIH0pO1xuICB9XG4gIGNvbnN0IHBheWxvYWQgPSBwYXlsb2FkUmVzdWx0LmRhdGE7XG4gIGF3YWl0IHZhbGlkYXRlUGF5bG9hZChwYXlsb2FkLCBnaXRodWJTZXJ2aWNlKTtcbiAgcmV0dXJuIHsgZ2VuZXJhdG9yLCBwYXlsb2FkIH07XG59O1xuXG4vKipcbiAqIEV4ZWN1dGUgdGhlIG1vbm9yZXBvIGdlbmVyYXRvciBhY3Rpb25zIGZvciBhbiBhbHJlYWR5LWNvbGxlY3RlZCBwYXlsb2FkLlxuICpcbiAqIFRoaXMgcGhhc2UgaXMgbm9uLWludGVyYWN0aXZlLCBzbyBjYWxsZXJzIGFyZSBmcmVlIHRvIHdyYXAgaXQgaW4gYSBzcGlubmVyXG4gKiBvciBvdGhlciBwcm9ncmVzcyBpbmRpY2F0b3IuXG4gKi9cbmV4cG9ydCBjb25zdCBydW5Nb25vcmVwb0FjdGlvbnMgPSBhc3luYyAoXG4gIGdlbmVyYXRvcjogUGxvcEdlbmVyYXRvcixcbiAgcGF5bG9hZDogTW9ub3JlcG9QYXlsb2FkLFxuKTogUHJvbWlzZTxNb25vcmVwb1BheWxvYWQ+ID0+IHtcbiAgYXdhaXQgcnVuQWN0aW9ucyhnZW5lcmF0b3IsIHBheWxvYWQpO1xuICByZXR1cm4gcGF5bG9hZDtcbn07XG5cbi8qKlxuICogQ29sbGVjdCB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBwYXlsb2FkIGJ5IHJ1bm5pbmcgdGhlIGdlbmVyYXRvcidzXG4gKiBpbnRlcmFjdGl2ZSBwcm9tcHRzLlxuICpcbiAqIExpa2Uge0BsaW5rIGNvbGxlY3RNb25vcmVwb1BheWxvYWR9LCB0aGlzIHBoYXNlIE1VU1QgcnVuIG91dHNpZGUgYW55IHNwaW5uZXI6XG4gKiBhIHNwaW5uZXIgKGUuZy4gb3JhKSBvY2N1cGllcyB0aGUgVFRZIGFuZCBwcmV2ZW50cyB0aGUgaW5xdWlyZXIgcHJvbXB0cyBmcm9tXG4gKiBiZWluZyByZW5kZXJlZC4gQ2FsbGVycyBzaG91bGQgdHJhY2sgb25seSB0aGUgc3Vic2VxdWVudFxuICoge0BsaW5rIHJ1bkRlcGxveW1lbnRFbnZpcm9ubWVudEFjdGlvbnN9IHBoYXNlLCB3aGljaCBpcyBub24taW50ZXJhY3RpdmUuXG4gKlxuICogQHBhcmFtIHBsb3AgLSBUaGUgcGxvcCBpbnN0YW5jZVxuICogQHBhcmFtIGdpdGh1YiAtIE9wdGlvbmFsIEdpdEh1YiByZXBvc2l0b3J5IGluZm8uIFdoZW4gcHJvdmlkZWQgKGJ5IGluaXQgY29tbWFuZCksXG4gKiAgICAgICAgICAgICAgICAgdXNlcyB0aGUgZXhwbGljaXRseSBwYXNzZWQgcmVwb3NpdG9yeS4gV2hlbiBvbWl0dGVkIChieSBhZGQgY29tbWFuZCksXG4gKiAgICAgICAgICAgICAgICAgdGhlIGdlbmVyYXRvciBpbmZlcnMgaXQgZnJvbSB0aGUgbG9jYWwgZ2l0IGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjb25zdCBjb2xsZWN0RGVwbG95bWVudEVudmlyb25tZW50UGF5bG9hZCA9IGFzeW5jIChcbiAgcGxvcDogTm9kZVBsb3BBUEksXG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2UsXG4gIGdpdGh1Yj86IEdpdEh1YlJlcG8sXG4gIGluaXRpYWxBbnN3ZXJzOiBEZXBsb3ltZW50RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyA9IHt9LFxuKTogUHJvbWlzZTx7IGdlbmVyYXRvcjogUGxvcEdlbmVyYXRvcjsgcGF5bG9hZDogRW52aXJvbm1lbnRQYXlsb2FkIH0+ID0+IHtcbiAgc2V0RGVwbG95bWVudEVudmlyb25tZW50R2VuZXJhdG9yKFxuICAgIHBsb3AsXG4gICAgZ2l0SHViU2VydmljZSxcbiAgICBnaXRodWIsXG4gICAgaW5pdGlhbEFuc3dlcnMsXG4gICk7XG4gIGNvbnN0IGdlbmVyYXRvciA9IHBsb3AuZ2V0R2VuZXJhdG9yKFBMT1BfRU5WSVJPTk1FTlRfR0VORVJBVE9SX05BTUUpO1xuICBjb25zdCBhbnN3ZXJzID0gYXdhaXQgZ2VuZXJhdG9yLnJ1blByb21wdHMoKTtcbiAgY29uc3QgcGF5bG9hZCA9IGVudmlyb25tZW50UGF5bG9hZFNjaGVtYS5wYXJzZShhbnN3ZXJzKTtcbiAgcmV0dXJuIHsgZ2VuZXJhdG9yLCBwYXlsb2FkIH07XG59O1xuXG4vKipcbiAqIEV4ZWN1dGUgdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgZ2VuZXJhdG9yIGFjdGlvbnMgZm9yIGFuIGFscmVhZHktY29sbGVjdGVkXG4gKiBwYXlsb2FkLlxuICpcbiAqIFRoaXMgcGhhc2UgaXMgbm9uLWludGVyYWN0aXZlLCBzbyBjYWxsZXJzIGFyZSBmcmVlIHRvIHdyYXAgaXQgaW4gYSBzcGlubmVyIG9yXG4gKiBvdGhlciBwcm9ncmVzcyBpbmRpY2F0b3IuXG4gKi9cbmV4cG9ydCBjb25zdCBydW5EZXBsb3ltZW50RW52aXJvbm1lbnRBY3Rpb25zID0gYXN5bmMgKFxuICBnZW5lcmF0b3I6IFBsb3BHZW5lcmF0b3IsXG4gIHBheWxvYWQ6IEVudmlyb25tZW50UGF5bG9hZCxcbik6IFByb21pc2U8RW52aXJvbm1lbnRQYXlsb2FkPiA9PiB7XG4gIGF3YWl0IHJ1bkFjdGlvbnMoZ2VuZXJhdG9yLCBwYXlsb2FkKTtcbiAgcmV0dXJuIHBheWxvYWQ7XG59O1xuXG4vKipcbiAqIENvbmZpZ3VyZSB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBnZW5lcmF0b3JcbiAqXG4gKiBAcGFyYW0gcGxvcCAtIFRoZSBwbG9wIGluc3RhbmNlXG4gKiBAcGFyYW0gZ2l0aHViIC0gT3B0aW9uYWwgR2l0SHViIHJlcG9zaXRvcnkgaW5mby4gV2hlbiBwcm92aWRlZCAoYnkgaW5pdCBjb21tYW5kKSxcbiAqICAgICAgICAgICAgICAgICB1c2VzIHRoZSBleHBsaWNpdGx5IHBhc3NlZCByZXBvc2l0b3J5LiBXaGVuIG9taXR0ZWQgKGJ5IGFkZCBjb21tYW5kKSxcbiAqICAgICAgICAgICAgICAgICB0aGUgZ2VuZXJhdG9yIGluZmVycyBpdCBmcm9tIHRoZSBsb2NhbCBnaXQgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldERlcGxveW1lbnRFbnZpcm9ubWVudEdlbmVyYXRvciA9IChcbiAgcGxvcDogTm9kZVBsb3BBUEksXG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2UsXG4gIGdpdGh1Yj86IEdpdEh1YlJlcG8sXG4gIGluaXRpYWxBbnN3ZXJzOiBEZXBsb3ltZW50RW52aXJvbm1lbnRJbml0aWFsQW5zd2VycyA9IHt9LFxuKSA9PiB7XG4gIGNvbnN0IGNyZWRlbnRpYWwgPSBuZXcgQXp1cmVDbGlDcmVkZW50aWFsKCk7XG4gIGNvbnN0IGNsb3VkQWNjb3VudFJlcG9zaXRvcnkgPSBuZXcgQXp1cmVTdWJzY3JpcHRpb25SZXBvc2l0b3J5KGNyZWRlbnRpYWwpO1xuICBjb25zdCBjbG91ZEFjY291bnRTZXJ2aWNlID0gbmV3IEF6dXJlQ2xvdWRBY2NvdW50U2VydmljZShjcmVkZW50aWFsKTtcblxuICBzZXRDb25maWd1cmVHaXRIdWJFbnZpcm9ubWVudHNBY3Rpb24oXG4gICAgcGxvcCxcbiAgICBjbG91ZEFjY291bnRTZXJ2aWNlLFxuICAgIGdpdEh1YlNlcnZpY2UsXG4gICk7XG5cbiAgY3JlYXRlRGVwbG95bWVudEVudmlyb25tZW50R2VuZXJhdG9yKFxuICAgIHBsb3AsXG4gICAgcmVzb2x2ZVRlbXBsYXRlc1BhdGgoXCJlbnZpcm9ubWVudFwiKSxcbiAgICBjbG91ZEFjY291bnRSZXBvc2l0b3J5LFxuICAgIGNsb3VkQWNjb3VudFNlcnZpY2UsXG4gICAgZ2l0SHViU2VydmljZSxcbiAgICBnaXRodWIsXG4gICAgaW5pdGlhbEFuc3dlcnMsXG4gICk7XG59O1xuIl19
@@ -16,6 +16,7 @@ export type CloudAccountRepository = {
16
16
  list(): Promise<CloudAccount[]>;
17
17
  };
18
18
  export type CloudAccountService = {
19
+ configureGitHubEnvironment(cloudAccount: CloudAccount, environment: EnvironmentId, github: GitHubRepo, gitHubService: GitHubService, runnerAppCredentials?: GitHubAppCredentials): Promise<void>;
19
20
  getTerraformBackend(cloudAccountId: CloudAccount["id"], environment: EnvironmentId): Promise<TerraformBackend | undefined>;
20
21
  hasUserPermissionToInitialize(cloudAccountId: CloudAccount["id"]): Promise<boolean>;
21
22
  initialize(cloudAccount: CloudAccount, environment: EnvironmentId, runnerAppCredentials: GitHubAppCredentials, github: GitHubRepo, gitHubService: GitHubService, tags?: Record<string, string>): Promise<void>;
@@ -10,4 +10,4 @@ export const cloudRegionSchema = z.object({
10
10
  name: z.string().min(1),
11
11
  short: z.string().min(1).toLowerCase(),
12
12
  });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21haW4vY2xvdWQtYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBTzNCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDdkMsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDM0IsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUN0QixDQUFDLENBQUM7QUF1Q0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtDQUN2QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZC92NFwiO1xuXG5pbXBvcnQgeyB0eXBlIEVudmlyb25tZW50SWQgfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBHaXRIdWJSZXBvIH0gZnJvbSBcIi4vZ2l0aHViLXJlcG8uanNcIjtcbmltcG9ydCB7IHR5cGUgR2l0SHViQXBwQ3JlZGVudGlhbHMsIHR5cGUgR2l0SHViU2VydmljZSB9IGZyb20gXCIuL2dpdGh1Yi5qc1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtQmFja2VuZCB9IGZyb20gXCIuL3JlbW90ZS1iYWNrZW5kLmpzXCI7XG5cbmV4cG9ydCBjb25zdCBjbG91ZEFjY291bnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNzcDogei5lbnVtKFtcImF6dXJlXCJdKS5kZWZhdWx0KFwiYXp1cmVcIiksXG4gIGRlZmF1bHRMb2NhdGlvbjogei5zdHJpbmcoKSxcbiAgZGlzcGxheU5hbWU6IHouc3RyaW5nKCkubWluKDEpLFxuICBpZDogei5zdHJpbmcoKS5taW4oMSksXG59KTtcblxuZXhwb3J0IHR5cGUgQ2xvdWRBY2NvdW50ID0gei5pbmZlcjx0eXBlb2YgY2xvdWRBY2NvdW50U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgQ2xvdWRBY2NvdW50UmVwb3NpdG9yeSA9IHtcbiAgbGlzdCgpOiBQcm9taXNlPENsb3VkQWNjb3VudFtdPjtcbn07XG5cbmV4cG9ydCB0eXBlIENsb3VkQWNjb3VudFNlcnZpY2UgPSB7XG4gIGdldFRlcnJhZm9ybUJhY2tlbmQoXG4gICAgY2xvdWRBY2NvdW50SWQ6IENsb3VkQWNjb3VudFtcImlkXCJdLFxuICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudElkLFxuICApOiBQcm9taXNlPFRlcnJhZm9ybUJhY2tlbmQgfCB1bmRlZmluZWQ+O1xuXG4gIGhhc1VzZXJQZXJtaXNzaW9uVG9Jbml0aWFsaXplKFxuICAgIGNsb3VkQWNjb3VudElkOiBDbG91ZEFjY291bnRbXCJpZFwiXSxcbiAgKTogUHJvbWlzZTxib29sZWFuPjtcblxuICBpbml0aWFsaXplKFxuICAgIGNsb3VkQWNjb3VudDogQ2xvdWRBY2NvdW50LFxuICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudElkLFxuICAgIHJ1bm5lckFwcENyZWRlbnRpYWxzOiBHaXRIdWJBcHBDcmVkZW50aWFscyxcbiAgICBnaXRodWI6IEdpdEh1YlJlcG8sXG4gICAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgICB0YWdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgKTogUHJvbWlzZTx2b2lkPjtcblxuICBpc0luaXRpYWxpemVkKFxuICAgIGNsb3VkQWNjb3VudElkOiBDbG91ZEFjY291bnRbXCJpZFwiXSxcbiAgICBlbnZpcm9ubWVudDogRW52aXJvbm1lbnRJZCxcbiAgKTogUHJvbWlzZTxib29sZWFuPjtcblxuICBwcm92aXNpb25UZXJyYWZvcm1CYWNrZW5kKFxuICAgIGNsb3VkQWNjb3VudDogQ2xvdWRBY2NvdW50LFxuICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudElkLFxuICAgIHRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICApOiBQcm9taXNlPFRlcnJhZm9ybUJhY2tlbmQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IGNsb3VkUmVnaW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBkaXNwbGF5TmFtZTogei5zdHJpbmcoKS5taW4oMSksXG4gIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLFxuICBzaG9ydDogei5zdHJpbmcoKS5taW4oMSkudG9Mb3dlckNhc2UoKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBDbG91ZFJlZ2lvbiA9IHouaW5mZXI8dHlwZW9mIGNsb3VkUmVnaW9uU2NoZW1hPjtcbiJdfQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21haW4vY2xvdWQtYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBTzNCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDdkMsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDM0IsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUN0QixDQUFDLENBQUM7QUErQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtDQUN2QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZC92NFwiO1xuXG5pbXBvcnQgeyB0eXBlIEVudmlyb25tZW50SWQgfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBHaXRIdWJSZXBvIH0gZnJvbSBcIi4vZ2l0aHViLXJlcG8uanNcIjtcbmltcG9ydCB7IHR5cGUgR2l0SHViQXBwQ3JlZGVudGlhbHMsIHR5cGUgR2l0SHViU2VydmljZSB9IGZyb20gXCIuL2dpdGh1Yi5qc1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtQmFja2VuZCB9IGZyb20gXCIuL3JlbW90ZS1iYWNrZW5kLmpzXCI7XG5cbmV4cG9ydCBjb25zdCBjbG91ZEFjY291bnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNzcDogei5lbnVtKFtcImF6dXJlXCJdKS5kZWZhdWx0KFwiYXp1cmVcIiksXG4gIGRlZmF1bHRMb2NhdGlvbjogei5zdHJpbmcoKSxcbiAgZGlzcGxheU5hbWU6IHouc3RyaW5nKCkubWluKDEpLFxuICBpZDogei5zdHJpbmcoKS5taW4oMSksXG59KTtcblxuZXhwb3J0IHR5cGUgQ2xvdWRBY2NvdW50ID0gei5pbmZlcjx0eXBlb2YgY2xvdWRBY2NvdW50U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgQ2xvdWRBY2NvdW50UmVwb3NpdG9yeSA9IHtcbiAgbGlzdCgpOiBQcm9taXNlPENsb3VkQWNjb3VudFtdPjtcbn07XG5cbmV4cG9ydCB0eXBlIENsb3VkQWNjb3VudFNlcnZpY2UgPSB7XG4gIGNvbmZpZ3VyZUdpdEh1YkVudmlyb25tZW50KFxuICAgIGNsb3VkQWNjb3VudDogQ2xvdWRBY2NvdW50LFxuICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudElkLFxuICAgIGdpdGh1YjogR2l0SHViUmVwbyxcbiAgICBnaXRIdWJTZXJ2aWNlOiBHaXRIdWJTZXJ2aWNlLFxuICAgIHJ1bm5lckFwcENyZWRlbnRpYWxzPzogR2l0SHViQXBwQ3JlZGVudGlhbHMsXG4gICk6IFByb21pc2U8dm9pZD47XG5cbiAgZ2V0VGVycmFmb3JtQmFja2VuZChcbiAgICBjbG91ZEFjY291bnRJZDogQ2xvdWRBY2NvdW50W1wiaWRcIl0sXG4gICAgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50SWQsXG4gICk6IFByb21pc2U8VGVycmFmb3JtQmFja2VuZCB8IHVuZGVmaW5lZD47XG5cbiAgaGFzVXNlclBlcm1pc3Npb25Ub0luaXRpYWxpemUoXG4gICAgY2xvdWRBY2NvdW50SWQ6IENsb3VkQWNjb3VudFtcImlkXCJdLFxuICApOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIGluaXRpYWxpemUoXG4gICAgY2xvdWRBY2NvdW50OiBDbG91ZEFjY291bnQsXG4gICAgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50SWQsXG4gICAgcnVubmVyQXBwQ3JlZGVudGlhbHM6IEdpdEh1YkFwcENyZWRlbnRpYWxzLFxuICAgIGdpdGh1YjogR2l0SHViUmVwbyxcbiAgICBnaXRIdWJTZXJ2aWNlOiBHaXRIdWJTZXJ2aWNlLFxuICAgIHRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICApOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGlzSW5pdGlhbGl6ZWQoXG4gICAgY2xvdWRBY2NvdW50SWQ6IENsb3VkQWNjb3VudFtcImlkXCJdLFxuICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudElkLFxuICApOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIHByb3Zpc2lvblRlcnJhZm9ybUJhY2tlbmQoXG4gICAgY2xvdWRBY2NvdW50OiBDbG91ZEFjY291bnQsXG4gICAgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50SWQsXG4gICAgdGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICk6IFByb21pc2U8VGVycmFmb3JtQmFja2VuZD47XG59O1xuXG5leHBvcnQgY29uc3QgY2xvdWRSZWdpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGRpc3BsYXlOYW1lOiB6LnN0cmluZygpLm1pbigxKSxcbiAgbmFtZTogei5zdHJpbmcoKS5taW4oMSksXG4gIHNob3J0OiB6LnN0cmluZygpLm1pbigxKS50b0xvd2VyQ2FzZSgpLFxufSk7XG5cbmV4cG9ydCB0eXBlIENsb3VkUmVnaW9uID0gei5pbmZlcjx0eXBlb2YgY2xvdWRSZWdpb25TY2hlbWE+O1xuIl19
@@ -1,11 +1,13 @@
1
1
  import { z } from "zod/v4";
2
2
  import { CloudAccount, CloudAccountService } from "./cloud-account.js";
3
3
  import { TerraformBackend } from "./remote-backend.js";
4
+ export declare const baseEnvironmentNames: readonly ["dev", "prod", "uat"];
4
5
  export declare const environmentShort: {
5
6
  readonly dev: "d";
6
7
  readonly prod: "p";
7
8
  readonly uat: "u";
8
9
  };
10
+ export type BaseEnvironmentName = (typeof baseEnvironmentNames)[number];
9
11
  export type EnvironmentShortValue = (typeof environmentShort)[keyof typeof environmentShort];
10
12
  export declare const environmentSchema: z.ZodObject<{
11
13
  cloudAccounts: z.ZodArray<z.ZodObject<{
@@ -16,15 +18,17 @@ export declare const environmentSchema: z.ZodObject<{
16
18
  displayName: z.ZodString;
17
19
  id: z.ZodString;
18
20
  }, z.core.$strip>>;
19
- name: z.ZodEnum<{
21
+ name: z.ZodPipe<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
20
22
  dev: "dev";
21
23
  prod: "prod";
22
24
  uat: "uat";
23
- }>;
25
+ }>, z.ZodTemplateLiteral<`${string}-dev` | `${string}-prod` | `${string}-uat`>]>>;
24
26
  prefix: z.ZodString;
25
27
  }, z.core.$strip>;
26
28
  export type Environment = z.infer<typeof environmentSchema>;
27
29
  export type EnvironmentId = Pick<Environment, "name" | "prefix">;
30
+ export declare const getBaseEnvironmentName: (environmentName: Environment["name"]) => BaseEnvironmentName;
31
+ export declare const getEnvironmentShort: (environmentName: Environment["name"]) => EnvironmentShortValue;
28
32
  export type EnvironmentInitStatus = {
29
33
  initialized: false;
30
34
  issues: EnvironmentInitIssue[];
@@ -1,13 +1,28 @@
1
1
  import { z } from "zod/v4";
2
2
  import { cloudAccountSchema, } from "./cloud-account.js";
3
+ export const baseEnvironmentNames = ["dev", "prod", "uat"];
3
4
  export const environmentShort = {
4
5
  dev: "d",
5
6
  prod: "p",
6
7
  uat: "u",
7
8
  };
9
+ const baseEnvironmentNameSchema = z.enum(baseEnvironmentNames);
10
+ const tenantNameSchema = z.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);
11
+ const tenantQualifiedEnvironmentNameSchema = z.templateLiteral([
12
+ tenantNameSchema,
13
+ z.literal("-"),
14
+ baseEnvironmentNameSchema,
15
+ ]);
16
+ const environmentNameSchema = z
17
+ .string()
18
+ .trim()
19
+ .toLowerCase()
20
+ // Keep the lifecycle suffix explicit so tenant-qualified names such as
21
+ // `ced-prod` can still reuse the same Azure short code as `prod`.
22
+ .pipe(z.union([baseEnvironmentNameSchema, tenantQualifiedEnvironmentNameSchema]));
8
23
  export const environmentSchema = z.object({
9
24
  cloudAccounts: z.array(cloudAccountSchema).min(1),
10
- name: z.enum(["dev", "prod", "uat"]),
25
+ name: environmentNameSchema,
11
26
  // Trim and lowercase at the schema level so the constraint is enforced
12
27
  // regardless of how the data enters the system (prompt, test, or API).
13
28
  prefix: z
@@ -17,6 +32,13 @@ export const environmentSchema = z.object({
17
32
  .min(2, "Prefix must have at least 2 chars")
18
33
  .max(4, "Prefix must have at most 4 chars"),
19
34
  });
35
+ export const getBaseEnvironmentName = (environmentName) => {
36
+ // Tenant-qualified environments encode the lifecycle as the last segment:
37
+ // `cgn-dev` behaves like `dev`, `ced-prod` behaves like `prod`.
38
+ const baseName = environmentName.split("-").at(-1);
39
+ return baseEnvironmentNameSchema.parse(baseName);
40
+ };
41
+ export const getEnvironmentShort = (environmentName) => environmentShort[getBaseEnvironmentName(environmentName)];
20
42
  export async function getInitializationStatus(cloudAccountService, environment) {
21
43
  const issues = [];
22
44
  for (const cloudAccount of environment.cloudAccounts) {
@@ -62,4 +84,4 @@ export async function hasUserPermissionToInitialize(cloudAccountService, environ
62
84
  }
63
85
  return true;
64
86
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZG9tYWluL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFM0IsT0FBTyxFQUVMLGtCQUFrQixHQUVuQixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLEdBQUcsRUFBRSxHQUFHO0lBQ1IsSUFBSSxFQUFFLEdBQUc7SUFDVCxHQUFHLEVBQUUsR0FBRztDQUM4QyxDQUFDO0FBS3pELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEMsYUFBYSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyx1RUFBdUU7SUFDdkUsdUVBQXVFO0lBQ3ZFLE1BQU0sRUFBRSxDQUFDO1NBQ04sTUFBTSxFQUFFO1NBQ1IsSUFBSSxFQUFFO1NBQ04sV0FBVyxFQUFFO1NBQ2IsR0FBRyxDQUFDLENBQUMsRUFBRSxtQ0FBbUMsQ0FBQztTQUMzQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGtDQUFrQyxDQUFDO0NBQzlDLENBQUMsQ0FBQztBQTRCSCxNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxtQkFBd0MsRUFDeEMsV0FBd0I7SUFFeEIsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztJQUMxQyxLQUFLLE1BQU0sWUFBWSxJQUFJLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBRyxNQUFNLG1CQUFtQixDQUFDLGFBQWEsQ0FDekQsWUFBWSxDQUFDLEVBQUUsRUFDZixXQUFXLENBQ1osQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLFlBQVk7Z0JBQ1osSUFBSSxFQUFFLCtCQUErQjthQUN0QyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxtQkFBbUIsQ0FDaEQsbUJBQW1CLEVBQ25CLFdBQVcsQ0FDWixDQUFDO0lBQ0YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNWLElBQUksRUFBRSx3QkFBd0I7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPO1lBQ0wsV0FBVyxFQUFFLEtBQUs7WUFDbEIsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTztRQUNMLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsbUJBQXdDLEVBQ3hDLFdBQXdCO0lBRXhCLEtBQUssTUFBTSxZQUFZLElBQUksV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JELE1BQU0sT0FBTyxHQUFHLE1BQU0sbUJBQW1CLENBQUMsbUJBQW1CLENBQzNELFlBQVksQ0FBQyxFQUFFLEVBQ2YsV0FBVyxDQUNaLENBQUM7UUFDRixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSw2QkFBNkIsQ0FDakQsbUJBQXdDLEVBQ3hDLFdBQXdCO0lBRXhCLEtBQUssTUFBTSxZQUFZLElBQUksV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsNkJBQTZCLENBQ3BFLFlBQVksQ0FBQyxFQUFFLENBQ2hCLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2QvdjRcIjtcblxuaW1wb3J0IHtcbiAgQ2xvdWRBY2NvdW50LFxuICBjbG91ZEFjY291bnRTY2hlbWEsXG4gIENsb3VkQWNjb3VudFNlcnZpY2UsXG59IGZyb20gXCIuL2Nsb3VkLWFjY291bnQuanNcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUJhY2tlbmQgfSBmcm9tIFwiLi9yZW1vdGUtYmFja2VuZC5qc1wiO1xuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnRTaG9ydCA9IHtcbiAgZGV2OiBcImRcIixcbiAgcHJvZDogXCJwXCIsXG4gIHVhdDogXCJ1XCIsXG59IGFzIGNvbnN0IHNhdGlzZmllcyBSZWNvcmQ8RW52aXJvbm1lbnRbXCJuYW1lXCJdLCBzdHJpbmc+O1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudFNob3J0VmFsdWUgPVxuICAodHlwZW9mIGVudmlyb25tZW50U2hvcnQpW2tleW9mIHR5cGVvZiBlbnZpcm9ubWVudFNob3J0XTtcblxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBjbG91ZEFjY291bnRzOiB6LmFycmF5KGNsb3VkQWNjb3VudFNjaGVtYSkubWluKDEpLFxuICBuYW1lOiB6LmVudW0oW1wiZGV2XCIsIFwicHJvZFwiLCBcInVhdFwiXSksXG4gIC8vIFRyaW0gYW5kIGxvd2VyY2FzZSBhdCB0aGUgc2NoZW1hIGxldmVsIHNvIHRoZSBjb25zdHJhaW50IGlzIGVuZm9yY2VkXG4gIC8vIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSBkYXRhIGVudGVycyB0aGUgc3lzdGVtIChwcm9tcHQsIHRlc3QsIG9yIEFQSSkuXG4gIHByZWZpeDogelxuICAgIC5zdHJpbmcoKVxuICAgIC50cmltKClcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5taW4oMiwgXCJQcmVmaXggbXVzdCBoYXZlIGF0IGxlYXN0IDIgY2hhcnNcIilcbiAgICAubWF4KDQsIFwiUHJlZml4IG11c3QgaGF2ZSBhdCBtb3N0IDQgY2hhcnNcIiksXG59KTtcblxuZXhwb3J0IHR5cGUgRW52aXJvbm1lbnQgPSB6LmluZmVyPHR5cGVvZiBlbnZpcm9ubWVudFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50SWQgPSBQaWNrPEVudmlyb25tZW50LCBcIm5hbWVcIiB8IFwicHJlZml4XCI+O1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudEluaXRTdGF0dXMgPVxuICB8IHtcbiAgICAgIGluaXRpYWxpemVkOiBmYWxzZTtcbiAgICAgIGlzc3VlczogRW52aXJvbm1lbnRJbml0SXNzdWVbXTtcbiAgICB9XG4gIHwge1xuICAgICAgaW5pdGlhbGl6ZWQ6IHRydWU7XG4gICAgfTtcblxudHlwZSBDbG91ZEFjY291bnROb3RJbml0aWFsaXplZElzc3VlID0ge1xuICBjbG91ZEFjY291bnQ6IENsb3VkQWNjb3VudDtcbiAgdHlwZTogXCJDTE9VRF9BQ0NPVU5UX05PVF9JTklUSUFMSVpFRFwiO1xufTtcblxudHlwZSBFbnZpcm9ubWVudEluaXRJc3N1ZSA9XG4gIHwgQ2xvdWRBY2NvdW50Tm90SW5pdGlhbGl6ZWRJc3N1ZVxuICB8IE1pc3NpbmdSZW1vdGVCYWNrZW5kSXNzdWU7XG5cbnR5cGUgTWlzc2luZ1JlbW90ZUJhY2tlbmRJc3N1ZSA9IHtcbiAgdHlwZTogXCJNSVNTSU5HX1JFTU9URV9CQUNLRU5EXCI7XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SW5pdGlhbGl6YXRpb25TdGF0dXMoXG4gIGNsb3VkQWNjb3VudFNlcnZpY2U6IENsb3VkQWNjb3VudFNlcnZpY2UsXG4gIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbik6IFByb21pc2U8RW52aXJvbm1lbnRJbml0U3RhdHVzPiB7XG4gIGNvbnN0IGlzc3VlczogRW52aXJvbm1lbnRJbml0SXNzdWVbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGNsb3VkQWNjb3VudCBvZiBlbnZpcm9ubWVudC5jbG91ZEFjY291bnRzKSB7XG4gICAgY29uc3QgaW5pdGlhbGl6ZWQgPSBhd2FpdCBjbG91ZEFjY291bnRTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQoXG4gICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgICBlbnZpcm9ubWVudCxcbiAgICApO1xuICAgIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlzc3Vlcy5wdXNoKHtcbiAgICAgICAgY2xvdWRBY2NvdW50LFxuICAgICAgICB0eXBlOiBcIkNMT1VEX0FDQ09VTlRfTk9UX0lOSVRJQUxJWkVEXCIsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdGVycmFmb3JtQmFja2VuZCA9IGF3YWl0IGdldFRlcnJhZm9ybUJhY2tlbmQoXG4gICAgY2xvdWRBY2NvdW50U2VydmljZSxcbiAgICBlbnZpcm9ubWVudCxcbiAgKTtcbiAgaWYgKCF0ZXJyYWZvcm1CYWNrZW5kKSB7XG4gICAgaXNzdWVzLnB1c2goe1xuICAgICAgdHlwZTogXCJNSVNTSU5HX1JFTU9URV9CQUNLRU5EXCIsXG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzc3Vlcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICAgIGlzc3VlcyxcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgaW5pdGlhbGl6ZWQ6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUZXJyYWZvcm1CYWNrZW5kKFxuICBjbG91ZEFjY291bnRTZXJ2aWNlOiBDbG91ZEFjY291bnRTZXJ2aWNlLFxuICBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4pOiBQcm9taXNlPFRlcnJhZm9ybUJhY2tlbmQgfCB1bmRlZmluZWQ+IHtcbiAgZm9yIChjb25zdCBjbG91ZEFjY291bnQgb2YgZW52aXJvbm1lbnQuY2xvdWRBY2NvdW50cykge1xuICAgIGNvbnN0IGJhY2tlbmQgPSBhd2FpdCBjbG91ZEFjY291bnRTZXJ2aWNlLmdldFRlcnJhZm9ybUJhY2tlbmQoXG4gICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgICBlbnZpcm9ubWVudCxcbiAgICApO1xuICAgIGlmIChiYWNrZW5kKSB7XG4gICAgICByZXR1cm4gYmFja2VuZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhc1VzZXJQZXJtaXNzaW9uVG9Jbml0aWFsaXplKFxuICBjbG91ZEFjY291bnRTZXJ2aWNlOiBDbG91ZEFjY291bnRTZXJ2aWNlLFxuICBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgZm9yIChjb25zdCBjbG91ZEFjY291bnQgb2YgZW52aXJvbm1lbnQuY2xvdWRBY2NvdW50cykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNsb3VkQWNjb3VudFNlcnZpY2UuaGFzVXNlclBlcm1pc3Npb25Ub0luaXRpYWxpemUoXG4gICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgKTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZG9tYWluL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFM0IsT0FBTyxFQUVMLGtCQUFrQixHQUVuQixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQVUsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixHQUFHLEVBQUUsR0FBRztJQUNSLElBQUksRUFBRSxHQUFHO0lBQ1QsR0FBRyxFQUFFLEdBQUc7Q0FDOEMsQ0FBQztBQU16RCxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUUvRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUV4RSxNQUFNLG9DQUFvQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUM7SUFDN0QsZ0JBQWdCO0lBQ2hCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQ2QseUJBQXlCO0NBQzFCLENBQUMsQ0FBQztBQUVILE1BQU0scUJBQXFCLEdBQUcsQ0FBQztLQUM1QixNQUFNLEVBQUU7S0FDUixJQUFJLEVBQUU7S0FDTixXQUFXLEVBQUU7SUFDZCx1RUFBdUU7SUFDdkUsa0VBQWtFO0tBQ2pFLElBQUksQ0FDSCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMseUJBQXlCLEVBQUUsb0NBQW9DLENBQUMsQ0FBQyxDQUMzRSxDQUFDO0FBRUosTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEtB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Q0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZC92NFwiO1xuXG5pbXBvcnQge1xuICBDbG91ZEFjY291bnQsXG4gIGNsb3VkQWNjb3VudFNjaGVtYSxcbiAgQ2xvdWRBY2NvdW50U2VydmljZSxcbn0gZnJvbSBcIi4vY2xvdWQtYWNjb3VudC5qc1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtQmFja2VuZCB9IGZyb20gXCIuL3JlbW90ZS1iYWNrZW5kLmpzXCI7XG5cbmV4cG9ydCBjb25zdCBiYXNlRW52aXJvbm1lbnROYW1lcyA9IFtcImRldlwiLCBcInByb2RcIiwgXCJ1YXRcIl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBlbnZpcm9ubWVudFNob3J0ID0ge1xuICBkZXY6IFwiZFwiLFxuICBwcm9kOiBcInBcIixcbiAgdWF0OiBcInVcIixcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFJlY29yZDxCYXNlRW52aXJvbm1lbnROYW1lLCBzdHJpbmc+O1xuXG5leHBvcnQgdHlwZSBCYXNlRW52aXJvbm1lbnROYW1lID0gKHR5cGVvZiBiYXNlRW52aXJvbm1lbnROYW1lcylbbnVtYmVyXTtcbmV4cG9ydCB0eXBlIEVudmlyb25tZW50U2hvcnRWYWx1ZSA9XG4gICh0eXBlb2YgZW52aXJvbm1lbnRTaG9ydClba2V5b2YgdHlwZW9mIGVudmlyb25tZW50U2hvcnRdO1xuXG5jb25zdCBiYXNlRW52aXJvbm1lbnROYW1lU2NoZW1hID0gei5lbnVtKGJhc2VFbnZpcm9ubWVudE5hbWVzKTtcblxuY29uc3QgdGVuYW50TmFtZVNjaGVtYSA9IHouc3RyaW5nKCkucmVnZXgoL15bYS16MC05XSsoPzotW2EtejAtOV0rKSokLyk7XG5cbmNvbnN0IHRlbmFudFF1YWxpZmllZEVudmlyb25tZW50TmFtZVNjaGVtYSA9IHoudGVtcGxhdGVMaXRlcmFsKFtcbiAgdGVuYW50TmFtZVNjaGVtYSxcbiAgei5saXRlcmFsKFwiLVwiKSxcbiAgYmFzZUVudmlyb25tZW50TmFtZVNjaGVtYSxcbl0pO1xuXG5jb25zdCBlbnZpcm9ubWVudE5hbWVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAudHJpbSgpXG4gIC50b0xvd2VyQ2FzZSgpXG4gIC8vIEtlZXAgdGhlIGxpZmVjeWNsZSBzdWZmaXggZXhwbGljaXQgc28gdGVuYW50LXF1YWxpZmllZCBuYW1lcyBzdWNoIGFzXG4gIC8vIGBjZWQtcHJvZGAgY2FuIHN0aWxsIHJldXNlIHRoZSBzYW1lIEF6dXJlIHNob3J0IGNvZGUgYXMgYHByb2RgLlxuICAucGlwZShcbiAgICB6LnVuaW9uKFtiYXNlRW52aXJvbm1lbnROYW1lU2NoZW1hLCB0ZW5hbnRRdWFsaWZpZWRFbnZpcm9ubWVudE5hbWVTY2hlbWFdKSxcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBjbG91ZEFjY291bnRzOiB6LmFycmF5KGNsb3VkQWNjb3VudFNjaGVtYSkubWluKDEpLFxuICBuYW1lOiBlbnZpcm9ubWVudE5hbWVTY2hlbWEsXG4gIC8vIFRyaW0gYW5kIGxvd2VyY2FzZSBhdCB0aGUgc2NoZW1hIGxldmVsIHNvIHRoZSBjb25zdHJhaW50IGlzIGVuZm9yY2VkXG4gIC8vIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSBkYXRhIGVudGVycyB0aGUgc3lzdGVtIChwcm9tcHQsIHRlc3QsIG9yIEFQSSkuXG4gIHByZWZpeDogelxuICAgIC5zdHJpbmcoKVxuICAgIC50cmltKClcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5taW4oMiwgXCJQcmVmaXggbXVzdCBoYXZlIGF0IGxlYXN0IDIgY2hhcnNcIilcbiAgICAubWF4KDQsIFwiUHJlZml4IG11c3QgaGF2ZSBhdCBtb3N0IDQgY2hhcnNcIiksXG59KTtcblxuZXhwb3J0IHR5cGUgRW52aXJvbm1lbnQgPSB6LmluZmVyPHR5cGVvZiBlbnZpcm9ubWVudFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50SWQgPSBQaWNrPEVudmlyb25tZW50LCBcIm5hbWVcIiB8IFwicHJlZml4XCI+O1xuXG5leHBvcnQgY29uc3QgZ2V0QmFzZUVudmlyb25tZW50TmFtZSA9IChcbiAgZW52aXJvbm1lbnROYW1lOiBFbnZpcm9ubWVudFtcIm5hbWVcIl0sXG4pOiBCYXNlRW52aXJvbm1lbnROYW1lID0+IHtcbiAgLy8gVGVuYW50LXF1YWxpZmllZCBlbnZpcm9ubWVudHMgZW5jb2RlIHRoZSBsaWZlY3ljbGUgYXMgdGhlIGxhc3Qgc2VnbWVudDpcbiAgLy8gYGNnbi1kZXZgIGJlaGF2ZXMgbGlrZSBgZGV2YCwgYGNlZC1wcm9kYCBiZWhhdmVzIGxpa2UgYHByb2RgLlxuICBjb25zdCBiYXNlTmFtZSA9IGVudmlyb25tZW50TmFtZS5zcGxpdChcIi1cIikuYXQoLTEpO1xuICByZXR1cm4gYmFzZUVudmlyb25tZW50TmFtZVNjaGVtYS5wYXJzZShiYXNlTmFtZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RW52aXJvbm1lbnRTaG9ydCA9IChcbiAgZW52aXJvbm1lbnROYW1lOiBFbnZpcm9ubWVudFtcIm5hbWVcIl0sXG4pOiBFbnZpcm9ubWVudFNob3J0VmFsdWUgPT5cbiAgZW52aXJvbm1lbnRTaG9ydFtnZXRCYXNlRW52aXJvbm1lbnROYW1lKGVudmlyb25tZW50TmFtZSldO1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudEluaXRTdGF0dXMgPVxuICB8IHtcbiAgICAgIGluaXRpYWxpemVkOiBmYWxzZTtcbiAgICAgIGlzc3VlczogRW52aXJvbm1lbnRJbml0SXNzdWVbXTtcbiAgICB9XG4gIHwge1xuICAgICAgaW5pdGlhbGl6ZWQ6IHRydWU7XG4gICAgfTtcblxudHlwZSBDbG91ZEFjY291bnROb3RJbml0aWFsaXplZElzc3VlID0ge1xuICBjbG91ZEFjY291bnQ6IENsb3VkQWNjb3VudDtcbiAgdHlwZTogXCJDTE9VRF9BQ0NPVU5UX05PVF9JTklUSUFMSVpFRFwiO1xufTtcblxudHlwZSBFbnZpcm9ubWVudEluaXRJc3N1ZSA9XG4gIENsb3VkQWNjb3VudE5vdEluaXRpYWxpemVkSXNzdWUgfCBNaXNzaW5nUmVtb3RlQmFja2VuZElzc3VlO1xuXG50eXBlIE1pc3NpbmdSZW1vdGVCYWNrZW5kSXNzdWUgPSB7XG4gIHR5cGU6IFwiTUlTU0lOR19SRU1PVEVfQkFDS0VORFwiO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEluaXRpYWxpemF0aW9uU3RhdHVzKFxuICBjbG91ZEFjY291bnRTZXJ2aWNlOiBDbG91ZEFjY291bnRTZXJ2aWNlLFxuICBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4pOiBQcm9taXNlPEVudmlyb25tZW50SW5pdFN0YXR1cz4ge1xuICBjb25zdCBpc3N1ZXM6IEVudmlyb25tZW50SW5pdElzc3VlW10gPSBbXTtcbiAgZm9yIChjb25zdCBjbG91ZEFjY291bnQgb2YgZW52aXJvbm1lbnQuY2xvdWRBY2NvdW50cykge1xuICAgIGNvbnN0IGluaXRpYWxpemVkID0gYXdhaXQgY2xvdWRBY2NvdW50U2VydmljZS5pc0luaXRpYWxpemVkKFxuICAgICAgY2xvdWRBY2NvdW50LmlkLFxuICAgICAgZW52aXJvbm1lbnQsXG4gICAgKTtcbiAgICBpZiAoIWluaXRpYWxpemVkKSB7XG4gICAgICBpc3N1ZXMucHVzaCh7XG4gICAgICAgIGNsb3VkQWNjb3VudCxcbiAgICAgICAgdHlwZTogXCJDTE9VRF9BQ0NPVU5UX05PVF9JTklUSUFMSVpFRFwiLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHRlcnJhZm9ybUJhY2tlbmQgPSBhd2FpdCBnZXRUZXJyYWZvcm1CYWNrZW5kKFxuICAgIGNsb3VkQWNjb3VudFNlcnZpY2UsXG4gICAgZW52aXJvbm1lbnQsXG4gICk7XG4gIGlmICghdGVycmFmb3JtQmFja2VuZCkge1xuICAgIGlzc3Vlcy5wdXNoKHtcbiAgICAgIHR5cGU6IFwiTUlTU0lOR19SRU1PVEVfQkFDS0VORFwiLFxuICAgIH0pO1xuICB9XG4gIGlmIChpc3N1ZXMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbml0aWFsaXplZDogZmFsc2UsXG4gICAgICBpc3N1ZXMsXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGluaXRpYWxpemVkOiB0cnVlLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VGVycmFmb3JtQmFja2VuZChcbiAgY2xvdWRBY2NvdW50U2VydmljZTogQ2xvdWRBY2NvdW50U2VydmljZSxcbiAgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuKTogUHJvbWlzZTxUZXJyYWZvcm1CYWNrZW5kIHwgdW5kZWZpbmVkPiB7XG4gIGZvciAoY29uc3QgY2xvdWRBY2NvdW50IG9mIGVudmlyb25tZW50LmNsb3VkQWNjb3VudHMpIHtcbiAgICBjb25zdCBiYWNrZW5kID0gYXdhaXQgY2xvdWRBY2NvdW50U2VydmljZS5nZXRUZXJyYWZvcm1CYWNrZW5kKFxuICAgICAgY2xvdWRBY2NvdW50LmlkLFxuICAgICAgZW52aXJvbm1lbnQsXG4gICAgKTtcbiAgICBpZiAoYmFja2VuZCkge1xuICAgICAgcmV0dXJuIGJhY2tlbmQ7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYXNVc2VyUGVybWlzc2lvblRvSW5pdGlhbGl6ZShcbiAgY2xvdWRBY2NvdW50U2VydmljZTogQ2xvdWRBY2NvdW50U2VydmljZSxcbiAgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGZvciAoY29uc3QgY2xvdWRBY2NvdW50IG9mIGVudmlyb25tZW50LmNsb3VkQWNjb3VudHMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbG91ZEFjY291bnRTZXJ2aWNlLmhhc1VzZXJQZXJtaXNzaW9uVG9Jbml0aWFsaXplKFxuICAgICAgY2xvdWRBY2NvdW50LmlkLFxuICAgICk7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/dx-cli",
3
- "version": "0.26.2",
3
+ "version": "0.27.0",
4
4
  "type": "module",
5
5
  "description": "A CLI useful to manage DX tools.",
6
6
  "repository": {
@@ -26,26 +26,26 @@
26
26
  "@azure/arm-msi": "^2.2.0",
27
27
  "@azure/arm-resourcegraph": "^4.2.1",
28
28
  "@azure/arm-resources": "^7.0.0",
29
- "@azure/arm-resources-subscriptions": "^2.1.0",
29
+ "@azure/arm-resources-subscriptions": "^2.1.1",
30
30
  "@azure/arm-storage": "^19.1.0",
31
31
  "@azure/identity": "^4.13.1",
32
32
  "@azure/keyvault-secrets": "^4.11.2",
33
- "@azure/monitor-opentelemetry": "1.18.1",
33
+ "@azure/monitor-opentelemetry": "1.18.2",
34
34
  "@azure/storage-blob": "^12.33.0",
35
35
  "@logtape/logtape": "^1.3.11",
36
36
  "@logtape/otel": "1.3.8",
37
37
  "@microsoft/microsoft-graph-client": "^3.0.7",
38
38
  "@opentelemetry/api": "^1.9.1",
39
- "@opentelemetry/api-logs": "^0.218.0",
40
- "@opentelemetry/instrumentation": "^0.218.0",
41
- "@opentelemetry/instrumentation-undici": "^0.28.0",
42
- "@opentelemetry/sdk-logs": "^0.218.0",
39
+ "@opentelemetry/api-logs": "^0.221.0",
40
+ "@opentelemetry/instrumentation": "^0.221.0",
41
+ "@opentelemetry/instrumentation-undici": "^0.31.0",
42
+ "@opentelemetry/sdk-logs": "^0.221.0",
43
43
  "chalk": "^5.6.2",
44
44
  "commander": "^14.0.3",
45
45
  "core-js": "^3.49.0",
46
46
  "execa": "^9.6.1",
47
47
  "glob": "^11.1.0",
48
- "import-in-the-middle": "^3.2.0",
48
+ "import-in-the-middle": "^3.3.2",
49
49
  "inquirer": "^9.3.8",
50
50
  "libsodium-wrappers": "^0.8.4",
51
51
  "neverthrow": "^8.2.0",
@@ -56,24 +56,24 @@
56
56
  "semver": "^7.8.5",
57
57
  "yaml": "^2.9.0",
58
58
  "zod": "^4.4.3",
59
- "@pagopa/dx-savemoney": "^0.5.0"
59
+ "@pagopa/dx-savemoney": "^0.6.1"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@tsconfig/node24": "24.0.4",
63
63
  "@types/inquirer": "^9.0.10",
64
64
  "@types/libsodium-wrappers": "^0.8.2",
65
- "@types/node": "^22.20.0",
65
+ "@types/node": "^22.20.1",
66
66
  "@types/semver": "^7.7.1",
67
- "@vitest/coverage-v8": "^4.1.9",
68
- "eslint": "^10.6.0",
69
- "fast-check": "^4.8.0",
70
- "memfs": "^4.57.8",
67
+ "@vitest/coverage-v8": "^4.1.10",
68
+ "eslint": "^10.8.0",
69
+ "fast-check": "^4.9.0",
70
+ "memfs": "^4.64.0",
71
71
  "plop": "^4.0.5",
72
- "prettier": "3.8.3",
72
+ "prettier": "3.9.6",
73
73
  "typescript": "~5.9.3",
74
- "vitest": "^4.1.9",
74
+ "vitest": "^4.1.10",
75
75
  "vitest-mock-extended": "^4.0.0",
76
- "@pagopa/eslint-config": "^6.2.0"
76
+ "@pagopa/eslint-config": "^6.2.2"
77
77
  },
78
78
  "engines": {
79
79
  "node": ">=22.0.0"