@pagopa/dx-cli 0.25.1 → 0.25.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -179,6 +179,8 @@ const createRemoteRepositoryWithPresenter = (presenter) => ({ repoName, repoOwne
179
179
  * See https://git-scm.com/docs/git-remote#_exit_status
180
180
  */
181
181
  const GIT_REMOTE_ALREADY_EXISTS_EXIT_CODE = 3;
182
+ const DEFAULT_SCAFFOLD_GIT_USER_EMAIL = "dx-pagopa-github-bot@pagopa.it";
183
+ const DEFAULT_SCAFFOLD_GIT_USER_NAME = "dx-pagopa-bot";
182
184
  /**
183
185
  * Translates a failure of the git remote setup step into an actionable error.
184
186
  *
@@ -199,6 +201,36 @@ const initializeGitRepositoryWithPresenter = (presenter) => (repository) => {
199
201
  const git$ = $({
200
202
  shell: true,
201
203
  });
204
+ const gitRead$ = $({
205
+ reject: false,
206
+ shell: true,
207
+ });
208
+ const readGitConfigValue = async (key) => {
209
+ const result = await gitRead$ `git config --get ${key}`;
210
+ const value = result.stdout.trim();
211
+ const stderr = (result.stderr ?? "").trim();
212
+ const isMissingValue = result.exitCode === 1 && value === "" && stderr === "";
213
+ if (isMissingValue || value === "") {
214
+ return undefined;
215
+ }
216
+ if (result.exitCode !== 0) {
217
+ throw new Error(stderr === "" ? `Failed to read git config ${key}` : stderr, { cause: result });
218
+ }
219
+ return value;
220
+ };
221
+ const commitScaffold = async () => {
222
+ const [configuredGitUserName, configuredGitUserEmail] = await Promise.all([readGitConfigValue("user.name"), readGitConfigValue("user.email")]);
223
+ const hasConfiguredGitIdentity = configuredGitUserName !== undefined &&
224
+ configuredGitUserEmail !== undefined;
225
+ if (hasConfiguredGitIdentity) {
226
+ await git$ `git commit --no-gpg-sign -m "Scaffold workspace"`;
227
+ }
228
+ else {
229
+ // `git -c` applies the fallback identity only to this scaffold commit, so
230
+ // the generated repository does not persist bot defaults in local config.
231
+ await git$ `git -c user.name=${DEFAULT_SCAFFOLD_GIT_USER_NAME} -c user.email=${DEFAULT_SCAFFOLD_GIT_USER_EMAIL} commit --no-gpg-sign -m "Scaffold workspace"`;
232
+ }
233
+ };
202
234
  // `git remote add` is tracked separately from the push so its documented
203
235
  // exit codes (e.g. 3 = remote already exists) surface a specific, actionable
204
236
  // message instead of being misreported as a push failure.
@@ -214,7 +246,7 @@ const initializeGitRepositoryWithPresenter = (presenter) => (repository) => {
214
246
  // while keeping the scaffolded local files in the working tree for a clean PR diff.
215
247
  await git$ `git reset origin/main`;
216
248
  await git$ `git add .`;
217
- await git$ `git commit --no-gpg-sign -m "Scaffold workspace"`;
249
+ await commitScaffold();
218
250
  await git$ `git push -u origin ${branchName}`;
219
251
  };
220
252
  return trackStep(presenter, "Configuring the git remote...", configureRemote, mapGitRemoteAddError)
@@ -323,4 +355,4 @@ export const makeInitCommand = (requireGitHubAuth, env) => new Command()
323
355
  })))
324
356
  .match(reportSummary(presenter, outputMode), reportCommandError(this, presenter, outputMode));
325
357
  });
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb21tYW5kZXIvY29tbWFuZHMvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQU94QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9DLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixpQkFBaUIsR0FDbEIsTUFBTSx3QkFBd0IsQ0FBQztBQWNoQyxNQUFNLDJCQUEyQixHQUFHLENBQ2xDLEtBQW1CLEVBQ3VCLEVBQUUsQ0FDNUMsMkJBQTJCLElBQUksS0FBSyxDQUFDO0FBc0J2QyxNQUFNLFNBQVMsR0FBRyxDQUNoQixTQUEyQixF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QUFJLEVBQUUsRUFBRSxDQUNoQixhQUFhLENBQUM7UUFDWixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7UUFDakMsY0FBYyxFQUFFLHlCQUF5QixDQUFDLFdBQVcsQ0FBQztRQUN0RCxTQUFTO0tBQ1YsQ0FBQyxDQUNILENBQ0o7U0FDQSxLQUFLLENBQ0osYUFBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFDcEMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FDaEQsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7ICQsIEV4ZWNhRXJyb3IgfSBmcm9tIFwiZXhlY2FcIjtcbmltcG9ydCBpbnF1aXJlciBmcm9tIFwiaW5xdWlyZXJcIjtcbmltcG9ydCB7IGVyckFzeW5jLCBva0FzeW5jLCBSZXN1bHRBc3luYyB9IGZyb20gXCJuZXZlcnRocm93XCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWFuZFByZXNlbnRlciB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vY29tbWFuZC1wcmVzZW50ZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgQ2xpRW52IH0gZnJvbSBcIi4uL2Vudi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxPcHRpb25zIH0gZnJvbSBcIi4uL2dsb2JhbC1vcHRpb25zLmpzXCI7XG5cbmltcG9ydCB7IEdpdEh1YkF1dGhGYWN0b3J5IH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9kZXBlbmRlbmNpZXMuanNcIjtcbmltcG9ydCB7XG4gIEdpdEh1YlNlcnZpY2UsXG4gIFB1bGxSZXF1ZXN0LFxuICBSZXBvc2l0b3J5LFxufSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2dpdGh1Yi5qc1wiO1xuaW1wb3J0IHsgdGYkIH0gZnJvbSBcIi4uLy4uL2V4ZWNhL3RlcnJhZm9ybS5qc1wiO1xuaW1wb3J0IHsgUGF5bG9hZCBhcyBNb25vcmVwb1BheWxvYWQgfSBmcm9tIFwiLi4vLi4vcGxvcC9nZW5lcmF0b3JzL21vbm9yZXBvL2luZGV4LmpzXCI7XG5pbXBvcnQge1xuICBjb2xsZWN0TW9ub3JlcG9QYXlsb2FkLFxuICBnZXRQbG9wSW5zdGFuY2UsXG4gIHJ1bk1vbm9yZXBvQWN0aW9ucyxcbn0gZnJvbSBcIi4uLy4uL3Bsb3AvaW5kZXguanNcIjtcbmltcG9ydCB7IGFzRXJyb3IsIHJlcG9ydENvbW1hbmRFcnJvciB9IGZyb20gXCIuLi9jb21tYW5kLWVycm9ycy5qc1wiO1xuaW1wb3J0IHsgdG9FcnJvck1lc3NhZ2UgfSBmcm9tIFwiLi4vZXJyb3ItcmVwb3J0aW5nLmpzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVDb21tYW5kUHJlc2VudGVyLFxuICByZXNvbHZlT3V0cHV0TW9kZSxcbn0gZnJvbSBcIi4uL3ByZXNlbnRlcnMvaW5kZXguanNcIjtcblxudHlwZSBHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkUmVzdWx0ID0ge1xuICBnaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkOiB0cnVlO1xuICBwYXlsb2FkOiBNb25vcmVwb1BheWxvYWQ7XG59O1xuXG50eXBlIEluaXRSZXN1bHQgPSB7XG4gIHByPzogUHVsbFJlcXVlc3Q7XG4gIHJlcG9zaXRvcnk/OiBSZXBvc2l0b3J5O1xufTtcblxudHlwZSBTdW1tYXJ5SW5wdXQgPSBHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkUmVzdWx0IHwgSW5pdFJlc3VsdDtcblxuY29uc3QgaXNHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkID0gKFxuICBpbnB1dDogU3VtbWFyeUlucHV0LFxuKTogaW5wdXQgaXMgR2l0SHViUmVwb0NyZWF0aW9uU2tpcHBlZFJlc3VsdCA9PlxuICBcImdpdEh1YlJlcG9DcmVhdGlvblNraXBwZWRcIiBpbiBpbnB1dDtcblxudHlwZSBJbml0QWN0aW9uQ29udGV4dCA9IHtcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZTtcbiAgaW5pdGlhbEFuc3dlcnM/OiBJbml0SW5pdGlhbEFuc3dlcnM7XG4gIHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcjtcbn07XG5cbnR5cGUgSW5pdEluaXRpYWxBbnN3ZXJzID0gUGFydGlhbDxNb25vcmVwb1BheWxvYWQ+ICYge1xuICBwdWJsaXNoVG9HaXRIdWI/OiBib29sZWFuO1xufTtcblxudHlwZSBMb2NhbFdvcmtzcGFjZSA9IHtcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICByZXBvc2l0b3J5OiBSZXBvc2l0b3J5O1xufTtcblxudHlwZSBSZXBvc2l0b3J5UHVsbFJlcXVlc3QgPSB7XG4gIHByPzogUHVsbFJlcXVlc3Q7XG4gIHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG59O1xuXG5jb25zdCB0cmFja1N0ZXAgPSA8VCwgRT4oXG4gIHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcixcbiAgbmFtZTogc3RyaW5nLFxuICB0YXNrOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBtYXBFcnJvcjogKGNhdXNlOiB1bmtub3duKSA9PiBFLFxuKTogUmVzdWx0QXN5bmM8VCwgRT4gPT5cbiAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UocHJlc2VudGVyLnRyYWNrU3RlcChuYW1lLCB0YXNrKSwgbWFwRXJyb3IpO1xuXG5jb25zdCBkaXNwbGF5U3VtbWFyeSA9IChpbnB1dDogU3VtbWFyeUlucHV0KSA9PiB7XG4gIGNvbnN0IGRvY3NVcmwgPSBcImh0dHBzOi8vZHgucGFnb3BhLml0L2dldHRpbmctc3RhcnRlZFwiO1xuXG4gIGlmIChpc0dpdEh1YlJlcG9DcmVhdGlvblNraXBwZWQoaW5wdXQpKSB7XG4gICAgY29uc3QgeyBwYXlsb2FkIH0gPSBpbnB1dDtcbiAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3cuYm9sZChcIlxcbkdpdEh1YiByZXBvc2l0b3J5IGNyZWF0aW9uIHNraXBwZWQuXCIpKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBUaGUgd29ya3NwYWNlIGZpbGVzIGhhdmUgYmVlbiBzY2FmZm9sZGVkIGluICR7Y2hhbGsuY3lhbihwYXlsb2FkLnJlcG9OYW1lICsgXCIvXCIpfS5gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIlxcblRvIGZpbmlzaCB0aGUgc2V0dXAgbWFudWFsbHk6XCIpKTtcbiAgICBsZXQgc3RlcCA9IDE7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwKyt9LiBDcmVhdGUgdGhlIEdpdEh1YiByZXBvc2l0b3J5IGJ5IGFwcGx5aW5nIHRoZSBUZXJyYWZvcm0gY29uZmlnIHNjYWZmb2xkZWQgYXQgJHtjaGFsay5jeWFuKGAke3BheWxvYWQucmVwb05hbWV9L2luZnJhL3JlcG9zaXRvcnlgKX06YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgICAgICAke2NoYWxrLmN5YW4oYGNkICR7cGF5bG9hZC5yZXBvTmFtZX0vaW5mcmEvcmVwb3NpdG9yeSAmJiB0ZXJyYWZvcm0gaW5pdCAmJiB0ZXJyYWZvcm0gYXBwbHlgKX1gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwKyt9LiBQdXNoIHRoZSBzY2FmZm9sZGVkIGNvZGUgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgcmVwb3NpdG9yeTpgLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICAgICAgICR7Y2hhbGsuY3lhbihgY2QgJHtwYXlsb2FkLnJlcG9OYW1lfSAmJiBnaXQgaW5pdCAmJiBnaXQgcmVtb3RlIGFkZCBvcmlnaW4gPHVybD4gJiYgZ2l0IHB1c2hgKX1gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwfS4gVmlzaXQgJHtjaGFsay51bmRlcmxpbmUoZG9jc1VybCl9IHRvIGRlcGxveSB5b3VyIGZpcnN0IHByb2plY3RcXG5gLFxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgeyBwciwgcmVwb3NpdG9yeSB9ID0gaW5wdXQ7XG4gIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuLmJvbGQoXCJcXG5Xb3Jrc3BhY2UgY3JlYXRlZCBzdWNjZXNzZnVsbHkhXCIpKTtcblxuICBpZiAocmVwb3NpdG9yeSkge1xuICAgIGNvbnNvbGUubG9nKGAtIE5hbWU6ICR7Y2hhbGsuY3lhbihyZXBvc2l0b3J5Lm5hbWUpfWApO1xuICAgIGNvbnNvbGUubG9nKGAtIEdpdEh1YiBSZXBvc2l0b3J5OiAke2NoYWxrLmN5YW4ocmVwb3NpdG9yeS51cmwpfVxcbmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY2hhbGsueWVsbG93KFxuICAgICAgICBgXFxu4pqg77iPIEdpdEh1YiByZXBvc2l0b3J5IG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYXV0b21hdGljYWxseS5gLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKHByKSB7XG4gICAgbGV0IHN0ZXAgPSAxO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuLmJvbGQoXCJcXG5OZXh0IFN0ZXBzOlwiKSk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwKyt9LiBSZXZpZXcgdGhlIFB1bGwgUmVxdWVzdCBpbiB0aGUgR2l0SHViIHJlcG9zaXRvcnk6ICR7Y2hhbGsudW5kZXJsaW5lKHByLnVybCl9YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCR7c3RlcH0uIFZpc2l0ICR7Y2hhbGsudW5kZXJsaW5lKGRvY3NVcmwpfSB0byBkZXBsb3kgeW91ciBmaXJzdCBwcm9qZWN0XFxuYCxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY2hhbGsueWVsbG93KGBcXG7imqDvuI8gVGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyBQdWxsIFJlcXVlc3QgY3JlYXRpb24uYCksXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBQbGVhc2UsIG1hbnVhbGx5IGNyZWF0ZSBhIFB1bGwgUmVxdWVzdCBpbiB0aGUgR2l0SHViIHJlcG9zaXRvcnkgdG8gcmV2aWV3IHRoZSBzY2FmZm9sZGVkIGNvZGUuXFxuYCxcbiAgICApO1xuICB9XG59O1xuXG5jb25zdCBjaGVja1RlcnJhZm9ybUNsaSA9ICgpID0+IHRmJGB0ZXJyYWZvcm0gLXZlcnNpb25gO1xuXG5jb25zdCB0cmFja1RlcnJhZm9ybUNsaUlzSW5zdGFsbGVkID0gKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcikgPT5cbiAgdHJhY2tTdGVwKFxuICAgIHByZXNlbnRlcixcbiAgICBcIkNoZWNraW5nIFRlcnJhZm9ybSBpbnN0YWxsYXRpb24uLi5cIixcbiAgICBjaGVja1RlcnJhZm9ybUNsaSxcbiAgICBhc0Vycm9yKFxuICAgICAgXCJQbGVhc2UgaW5zdGFsbCB0ZXJyYWZvcm0gQ0xJIGJlZm9yZSBydW5uaW5nIHRoaXMgY29tbWFuZC4gSWYgeW91IHVzZSB0ZmVudiwgcnVuOiB0ZmVudiBpbnN0YWxsIGxhdGVzdCAmJiB0ZmVudiB1c2UgbGF0ZXN0XCIsXG4gICAgKSxcbiAgKTtcblxuY29uc3QgY2hlY2tDb3JlcGFjayA9ICgpID0+IHRmJGBjb3JlcGFjayAtdmA7XG5cbmNvbnN0IHRyYWNrQ29yZXBhY2tJc0luc3RhbGxlZCA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrU3RlcChcbiAgICBwcmVzZW50ZXIsXG4gICAgXCJDaGVja2luZyBDb3JlcGFjayBpbnN0YWxsYXRpb24uLi5cIixcbiAgICBjaGVja0NvcmVwYWNrLFxuICAgIGFzRXJyb3IoXCJQbGVhc2UgaW5zdGFsbCBDb3JlcGFjayBiZWZvcmUgcnVubmluZyB0aGlzIGNvbW1hbmQuXCIpLFxuICApO1xuXG5jb25zdCBhenVyZUFjY291bnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHVzZXI6IHoub2JqZWN0KHtcbiAgICBuYW1lOiB6LnN0cmluZygpLm1pbigxKSxcbiAgfSksXG59KTtcblxuY29uc3QgQVpfTE9HSU5fUkVRVUlSRURfTUVTU0FHRSA9XG4gIFwiUGxlYXNlIGxvZyBpbiB0byBBenVyZSBDTEkgdXNpbmcgYGF6IGxvZ2luYCBiZWZvcmUgcnVubmluZyB0aGlzIGNvbW1hbmQuXCI7XG5cbmNvbnN0IG1hcEF6QWNjZXNzRXJyb3IgPSAoY2F1c2U6IHVua25vd24pOiBFcnJvciA9PlxuICBuZXcgRXJyb3IodG9FcnJvck1lc3NhZ2UoY2F1c2UpLCB7IGNhdXNlIH0pO1xuXG5jb25zdCBwYXJzZUF6dXJlQWNjb3VudE91dHB1dCA9IChzdGRvdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBwYXJzZWRPdXRwdXQ6IHVua25vd247XG5cbiAgdHJ5IHtcbiAgICBwYXJzZWRPdXRwdXQgPSBKU09OLnBhcnNlKHN0ZG91dCk7XG4gIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQXp1cmUgQ0xJIHJldHVybmVkIGludmFsaWQgYWNjb3VudCBKU09OLlwiLCB7IGNhdXNlIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gYXp1cmVBY2NvdW50U2NoZW1hLnNhZmVQYXJzZShwYXJzZWRPdXRwdXQpO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQXp1cmUgQ0xJIHJldHVybmVkIGFuIHVuZXhwZWN0ZWQgYWNjb3VudCBwYXlsb2FkLlwiLCB7XG4gICAgICBjYXVzZTogcmVzdWx0LmVycm9yLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5kYXRhLnVzZXIubmFtZTtcbn07XG5cbmNvbnN0IGVuc3VyZUF6TG9naW4gPSBhc3luYyAoKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IHRmJGBheiBhY2NvdW50IHNob3dgLmNhdGNoKChjYXVzZTogdW5rbm93bikgPT4ge1xuICAgIHRocm93IGFzRXJyb3IoQVpfTE9HSU5fUkVRVUlSRURfTUVTU0FHRSkoY2F1c2UpO1xuICB9KTtcbiAgLy8gYGF6IGFjY291bnQgc2hvd2AgcmVhZHMgdGhlIGNhY2hlZCBDTEkgY29udGV4dCwgYnV0IGBheiBncm91cCBsaXN0YFxuICAvLyBmYWlscyB3aGVuIHRoZSBjdXJyZW50IHNlc3Npb24gdG9rZW4gaGFzIGV4cGlyZWQuXG4gIGF3YWl0IHRmJGBheiBncm91cCBsaXN0YC5jYXRjaCgoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICB0aHJvdyBtYXBBekFjY2Vzc0Vycm9yKGNhdXNlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlQXp1cmVBY2NvdW50T3V0cHV0KHN0ZG91dCk7XG59O1xuXG5jb25zdCBtYXBBekxvZ2luQ2hlY2tFcnJvciA9IChjYXVzZTogdW5rbm93bik6IEVycm9yID0+XG4gIGNhdXNlIGluc3RhbmNlb2YgRXJyb3JcbiAgICA/IGNhdXNlXG4gICAgOiBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gY2hlY2sgQXp1cmUgQ0xJIGxvZ2luIHN0YXR1cy5cIiwgeyBjYXVzZSB9KTtcblxuY29uc3QgdHJhY2tBekxvZ2luID0gKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcikgPT5cbiAgdHJhY2tTdGVwKFxuICAgIHByZXNlbnRlcixcbiAgICBcIkNoZWNraW5nIEF6dXJlIGxvZ2luIHN0YXR1cy4uLlwiLFxuICAgIGVuc3VyZUF6TG9naW4sXG4gICAgbWFwQXpMb2dpbkNoZWNrRXJyb3IsXG4gICk7XG5cbi8vIFRPRE8oQ0VTLTE4MTApOiBNYWtlIHRoZXNlIGNoZWNrcyBjb25jdXJyZW50IHRvIHNwZWVkIHVwIHRoZSBwcmVjb25kaXRpb25zIGNoZWNrIHBoYXNlXG5leHBvcnQgY29uc3QgcnVuSW5pdFByZWNvbmRpdGlvbnMgPSAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyKSA9PlxuICB0cmFja1RlcnJhZm9ybUNsaUlzSW5zdGFsbGVkKHByZXNlbnRlcikuYW5kVGhlbigoKSA9PlxuICAgIHRyYWNrQ29yZXBhY2tJc0luc3RhbGxlZChwcmVzZW50ZXIpLFxuICApO1xuXG4vLyBUT0RPKENFUy0xODEwKTogTWFrZSB0aGVzZSBjaGVja3MgY29uY3VycmVudCB0byBzcGVlZCB1cCB0aGUgcHJlY29uZGl0aW9ucyBjaGVjayBwaGFzZVxuZXhwb3J0IGNvbnN0IHJ1bkFkZEVudmlyb25tZW50UHJlY29uZGl0aW9ucyA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrVGVycmFmb3JtQ2xpSXNJbnN0YWxsZWQocHJlc2VudGVyKVxuICAgIC5hbmRUaGVuKCgpID0+IHRyYWNrQXpMb2dpbihwcmVzZW50ZXIpKVxuICAgIC5hbmRUaGVuKCgpID0+IHRyYWNrQ29yZXBhY2tJc0luc3RhbGxlZChwcmVzZW50ZXIpKTtcblxuY29uc3QgREVGQVVMVF9HSVRIVUJfUFVCTElTSF9DT05GSVJNQVRJT04gPSB0cnVlO1xuXG5leHBvcnQgY29uc3QgaW5pdENvbW1hbmRPcHRpb25zU2NoZW1hID0gei5vYmplY3Qoe1xuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuYW1lOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSwgXCJSZXBvc2l0b3J5IG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpLm9wdGlvbmFsKCksXG4gIG93bmVyOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSwgXCJHaXRIdWIgb3duZXIgY2Fubm90IGJlIGVtcHR5XCIpLm9wdGlvbmFsKCksXG4gIHB1Ymxpc2g6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IHR5cGUgSW5pdENvbW1hbmRPcHRpb25zID0gei5pbmZlcjx0eXBlb2YgaW5pdENvbW1hbmRPcHRpb25zU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IHBhcnNlSW5pdENvbW1hbmRPcHRpb25zID0gKGlucHV0OiB1bmtub3duKTogSW5pdENvbW1hbmRPcHRpb25zID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gaW5pdENvbW1hbmRPcHRpb25zU2NoZW1hLnNhZmVQYXJzZShpbnB1dCk7XG4gIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBpbml0IGNvbW1hbmQgb3B0aW9uczpcXG4ke3oucHJldHRpZnlFcnJvcihyZXN1bHQuZXJyb3IpfWAsXG4gICAgICB7XG4gICAgICAgIGNhdXNlOiByZXN1bHQuZXJyb3IsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TW9ub3JlcG9Jbml0aWFsQW5zd2VycyA9ICh7XG4gIGRlc2NyaXB0aW9uLFxuICBuYW1lLFxuICBvd25lcixcbiAgcHVibGlzaCxcbn06IEluaXRDb21tYW5kT3B0aW9ucyk6IEluaXRJbml0aWFsQW5zd2VycyA9PiB7XG4gIGNvbnN0IGluaXRpYWxBbnN3ZXJzOiBJbml0SW5pdGlhbEFuc3dlcnMgPSB7fTtcblxuICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICBpbml0aWFsQW5zd2Vycy5yZXBvRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGlmIChvd25lcikge1xuICAgIGluaXRpYWxBbnN3ZXJzLnJlcG9Pd25lciA9IG93bmVyO1xuICB9XG5cbiAgaWYgKG5hbWUpIHtcbiAgICBpbml0aWFsQW5zd2Vycy5yZXBvTmFtZSA9IG5hbWU7XG4gIH1cblxuICBpZiAodHlwZW9mIHB1Ymxpc2ggPT09IFwiYm9vbGVhblwiKSB7XG4gICAgaW5pdGlhbEFuc3dlcnMucHVibGlzaFRvR2l0SHViID0gcHVibGlzaDtcbiAgfVxuXG4gIHJldHVybiBpbml0aWFsQW5zd2Vycztcbn07XG5cbnR5cGUgVGVycmFmb3JtUmVwb3NpdG9yeUNyZWF0aW9uU3RlcCA9IFwiYXBwbHlcIiB8IFwiaW5pdFwiO1xuXG5jb25zdCBmb3JtYXRUZXJyYWZvcm1SZXBvc2l0b3J5Q3JlYXRpb25GYWlsdXJlRGV0YWlscyA9IChcbiAgY2F1c2U6IHVua25vd24sXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkZXRhaWxzID1cbiAgICBjYXVzZSBpbnN0YW5jZW9mIEV4ZWNhRXJyb3JcbiAgICAgID8gW2NhdXNlLnNob3J0TWVzc2FnZSwgY2F1c2Uuc3RkZXJyXVxuICAgICAgOiBbdG9FcnJvck1lc3NhZ2UoY2F1c2UpXTtcblxuICByZXR1cm4gZGV0YWlsc1xuICAgIC5maWx0ZXIoXG4gICAgICAoZGV0YWlsKTogZGV0YWlsIGlzIHN0cmluZyA9PlxuICAgICAgICB0eXBlb2YgZGV0YWlsID09PSBcInN0cmluZ1wiICYmIGRldGFpbC50cmltKCkubGVuZ3RoID4gMCxcbiAgICApXG4gICAgLm1hcCgoZGV0YWlsKSA9PiBkZXRhaWwudHJpbSgpKVxuICAgIC5qb2luKFwiXFxuXCIpO1xufTtcblxuY29uc3QgbWFwVGVycmFmb3JtUmVwb3NpdG9yeUNyZWF0aW9uRXJyb3IgPVxuICAoc3RlcDogVGVycmFmb3JtUmVwb3NpdG9yeUNyZWF0aW9uU3RlcCkgPT5cbiAgKGNhdXNlOiB1bmtub3duKTogRXJyb3IgPT4ge1xuICAgIGNvbnN0IGRldGFpbHMgPSBmb3JtYXRUZXJyYWZvcm1SZXBvc2l0b3J5Q3JlYXRpb25GYWlsdXJlRGV0YWlscyhjYXVzZSk7XG4gICAgY29uc3QgbWVzc2FnZSA9IFtcbiAgICAgIGBUZXJyYWZvcm0gJHtzdGVwfSBmYWlsZWQgd2hpbGUgY3JlYXRpbmcgdGhlIEdpdEh1YiByZXBvc2l0b3J5LmAsXG4gICAgICBkZXRhaWxzLFxuICAgIF1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gICAgcmV0dXJuIG5ldyBFcnJvcihtZXNzYWdlLCB7IGNhdXNlIH0pO1xuICB9O1xuXG5jb25zdCBjcmVhdGVSZW1vdGVSZXBvc2l0b3J5V2l0aFByZXNlbnRlciA9XG4gIChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gICh7XG4gICAgcmVwb05hbWUsXG4gICAgcmVwb093bmVyLFxuICB9OiBNb25vcmVwb1BheWxvYWQpOiBSZXN1bHRBc3luYzxSZXBvc2l0b3J5LCBFcnJvcj4gPT4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJkeC1jbGlcIiwgXCJpbml0XCJdKTtcbiAgICBjb25zdCByZXBvJCA9IHRmJCh7IGN3ZDogcGF0aC5yZXNvbHZlKFwiaW5mcmFcIiwgXCJyZXBvc2l0b3J5XCIpIH0pO1xuICAgIGNvbnN0IHJ1blRlcnJhZm9ybVJlcG9zaXRvcnlDcmVhdGlvblN0ZXAgPSBhc3luYyAoXG4gICAgICBzdGVwOiBUZXJyYWZvcm1SZXBvc2l0b3J5Q3JlYXRpb25TdGVwLFxuICAgICAgZXhlY3V0ZVN0ZXA6ICgpID0+IFByb21pc2U8dW5rbm93bj4sXG4gICAgKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBleGVjdXRlU3RlcCgpO1xuICAgICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBtYXBUZXJyYWZvcm1SZXBvc2l0b3J5Q3JlYXRpb25FcnJvcihzdGVwKShjYXVzZSk7XG4gICAgICAgIGxvZ2dlci5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGFwcGx5VGVycmFmb3JtID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaW5pdGlhbGl6ZVJlcG9zaXRvcnlUZXJyYWZvcm0gPSAoKSA9PiByZXBvJGB0ZXJyYWZvcm0gaW5pdGA7XG4gICAgICBjb25zdCBhcHBseVJlcG9zaXRvcnlUZXJyYWZvcm0gPSAoKSA9PlxuICAgICAgICByZXBvJGB0ZXJyYWZvcm0gYXBwbHkgLWF1dG8tYXBwcm92ZWA7XG5cbiAgICAgIGF3YWl0IHJ1blRlcnJhZm9ybVJlcG9zaXRvcnlDcmVhdGlvblN0ZXAoXG4gICAgICAgIFwiaW5pdFwiLFxuICAgICAgICBpbml0aWFsaXplUmVwb3NpdG9yeVRlcnJhZm9ybSxcbiAgICAgICk7XG4gICAgICBhd2FpdCBydW5UZXJyYWZvcm1SZXBvc2l0b3J5Q3JlYXRpb25TdGVwKFxuICAgICAgICBcImFwcGx5XCIsXG4gICAgICAgIGFwcGx5UmVwb3NpdG9yeVRlcnJhZm9ybSxcbiAgICAgICk7XG4gICAgfTtcbiAgICByZXR1cm4gdHJhY2tTdGVwKFxuICAgICAgcHJlc2VudGVyLFxuICAgICAgXCJDcmVhdGluZyBHaXRIdWIgcmVwb3NpdG9yeS4uLlwiLFxuICAgICAgYXBwbHlUZXJyYWZvcm0sXG4gICAgICAoY2F1c2UpID0+XG4gICAgICAgIGNhdXNlIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICA/IGNhdXNlXG4gICAgICAgICAgOiBhc0Vycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSBHaXRIdWIgcmVwb3NpdG9yeS5cIikoY2F1c2UpLFxuICAgICkubWFwKCgpID0+IG5ldyBSZXBvc2l0b3J5KHJlcG9OYW1lLCByZXBvT3duZXIpKTtcbiAgfTtcbi8qKlxuICogRXhpdCBjb2RlIHJldHVybmVkIGJ5IGBnaXQgcmVtb3RlIGFkZGAgd2hlbiBhIHJlbW90ZSB3aXRoIHRoZSByZXF1ZXN0ZWQgbmFtZVxuICogYWxyZWFkeSBleGlzdHMuIGBnaXQgcmVtb3RlYCBkb2N1bWVudHMgdGhpcyBkZWRpY2F0ZWQgc3RhdHVzIGNvZGUsIHNvIHdlIGNhblxuICogdHVybiBpdCBpbnRvIGFjdGlvbmFibGUgZ3VpZGFuY2UgaW5zdGVhZCBvZiBhIGdlbmVyaWMgZmFpbHVyZSBtZXNzYWdlLlxuICpcbiAqIFNlZSBodHRwczovL2dpdC1zY20uY29tL2RvY3MvZ2l0LXJlbW90ZSNfZXhpdF9zdGF0dXNcbiAqL1xuY29uc3QgR0lUX1JFTU9URV9BTFJFQURZX0VYSVNUU19FWElUX0NPREUgPSAzO1xuXG4vKipcbiAqIFRyYW5zbGF0ZXMgYSBmYWlsdXJlIG9mIHRoZSBnaXQgcmVtb3RlIHNldHVwIHN0ZXAgaW50byBhbiBhY3Rpb25hYmxlIGVycm9yLlxuICpcbiAqIFdoZW4gYGdpdCByZW1vdGUgYWRkIG9yaWdpbmAgZXhpdHMgd2l0aCBjb2RlIDMgdGhlIHJlbW90ZSBhbHJlYWR5IGV4aXN0cyxcbiAqIHdoaWNoIGlzIGEgcmVjb3ZlcmFibGUgc2l0dWF0aW9uOiB0aGUgbWVzc2FnZSB0ZWxscyB0aGUgdXNlciBob3cgdG8gZml4IGl0LlxuICogVGhlIG9yaWdpbmFsIEV4ZWNhRXJyb3IgaXMgcHJlc2VydmVkIGFzIGBjYXVzZWAgc28gYC0tdmVyYm9zZWAgc3RpbGwgc3VyZmFjZXNcbiAqIHRoZSBleGl0IGNvZGUgYW5kIGdpdCdzIG93biBzdGRlcnIuXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBHaXRSZW1vdGVBZGRFcnJvciA9IChjYXVzZTogdW5rbm93bik6IEVycm9yID0+IHtcbiAgaWYgKFxuICAgIGNhdXNlIGluc3RhbmNlb2YgRXhlY2FFcnJvciAmJlxuICAgIGNhdXNlLmV4aXRDb2RlID09PSBHSVRfUkVNT1RFX0FMUkVBRFlfRVhJU1RTX0VYSVRfQ09ERVxuICApIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgICAgXCJBIGdpdCByZW1vdGUgbmFtZWQgJ29yaWdpbicgYWxyZWFkeSBleGlzdHMuIFJlbW92ZSBpdCB3aXRoIGBnaXQgcmVtb3RlIHJlbW92ZSBvcmlnaW5gIGFuZCBydW4gdGhlIGNvbW1hbmQgYWdhaW4sIG9yIHN0YXJ0IGZyb20gYSBjbGVhbiBkaXJlY3RvcnkuXCIsXG4gICAgICB7IGNhdXNlIH0sXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbmV3IEVycm9yKFxuICAgIFwiRmFpbGVkIHRvIHNldCB1cCB0aGUgbG9jYWwgZ2l0IHJlcG9zaXRvcnkgYW5kIGl0cyAnb3JpZ2luJyByZW1vdGUuXCIsXG4gICAgeyBjYXVzZSB9LFxuICApO1xufTtcblxuY29uc3QgaW5pdGlhbGl6ZUdpdFJlcG9zaXRvcnlXaXRoUHJlc2VudGVyID1cbiAgKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcikgPT4gKHJlcG9zaXRvcnk6IFJlcG9zaXRvcnkpID0+IHtcbiAgICBjb25zdCBicmFuY2hOYW1lID0gXCJmZWF0dXJlcy9zY2FmZm9sZC13b3Jrc3BhY2VcIjtcbiAgICBjb25zdCBnaXQkID0gJCh7XG4gICAgICBzaGVsbDogdHJ1ZSxcbiAgICB9KTtcbiAgICAvLyBgZ2l0IHJlbW90ZSBhZGRgIGlzIHRyYWNrZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBwdXNoIHNvIGl0cyBkb2N1bWVudGVkXG4gICAgLy8gZXhpdCBjb2RlcyAoZS5nLiAzID0gcmVtb3RlIGFscmVhZHkgZXhpc3RzKSBzdXJmYWNlIGEgc3BlY2lmaWMsIGFjdGlvbmFibGVcbiAgICAvLyBtZXNzYWdlIGluc3RlYWQgb2YgYmVpbmcgbWlzcmVwb3J0ZWQgYXMgYSBwdXNoIGZhaWx1cmUuXG4gICAgY29uc3QgY29uZmlndXJlUmVtb3RlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgaW5pdGA7XG4gICAgICBhd2FpdCBnaXQkYGdpdCByZW1vdGUgYWRkIG9yaWdpbiAke3JlcG9zaXRvcnkub3JpZ2lufWA7XG4gICAgfTtcbiAgICBjb25zdCBwdXNoVG9PcmlnaW4gPSBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBnaXQkYGdpdCBmZXRjaCBvcmlnaW4gbWFpbmA7XG4gICAgICBhd2FpdCBnaXQkYGdpdCBjaGVja291dCAtYiAke2JyYW5jaE5hbWV9YDtcbiAgICAgIC8vIFRlcnJhZm9ybSBjcmVhdGVzIGBtYWluYCB3aXRoIGFuIGluaXRpYWwgUkVBRE1FIGNvbW1pdC5cbiAgICAgIC8vIFJlc2V0IHRvIGBvcmlnaW4vbWFpbmAgc28gdGhpcyBicmFuY2ggaXMgYmFzZWQgb24gdGhlIHJlbW90ZSBkZWZhdWx0IGJyYW5jaCxcbiAgICAgIC8vIHdoaWxlIGtlZXBpbmcgdGhlIHNjYWZmb2xkZWQgbG9jYWwgZmlsZXMgaW4gdGhlIHdvcmtpbmcgdHJlZSBmb3IgYSBjbGVhbiBQUiBkaWZmLlxuICAgICAgYXdhaXQgZ2l0JGBnaXQgcmVzZXQgb3JpZ2luL21haW5gO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgYWRkIC5gO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgY29tbWl0IC0tbm8tZ3BnLXNpZ24gLW0gXCJTY2FmZm9sZCB3b3Jrc3BhY2VcImA7XG4gICAgICBhd2FpdCBnaXQkYGdpdCBwdXNoIC11IG9yaWdpbiAke2JyYW5jaE5hbWV9YDtcbiAgICB9O1xuICAgIHJldHVybiB0cmFja1N0ZXAoXG4gICAgICBwcmVzZW50ZXIsXG4gICAgICBcIkNvbmZpZ3VyaW5nIHRoZSBnaXQgcmVtb3RlLi4uXCIsXG4gICAgICBjb25maWd1cmVSZW1vdGUsXG4gICAgICBtYXBHaXRSZW1vdGVBZGRFcnJvcixcbiAgICApXG4gICAgICAuYW5kVGhlbigoKSA9PlxuICAgICAgICB0cmFja1N0ZXAoXG4gICAgICAgICAgcHJlc2VudGVyLFxuICAgICAgICAgIFwiUHVzaGluZyBjb2RlIHRvIEdpdEh1Yi4uLlwiLFxuICAgICAgICAgIHB1c2hUb09yaWdpbixcbiAgICAgICAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIHB1c2ggY29kZSB0byBHaXRIdWIuXCIpLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLm1hcCgoKSA9PiAoeyBicmFuY2hOYW1lLCByZXBvc2l0b3J5IH0pKTtcbiAgfTtcblxuY29uc3QgY3JlYXRlUHVsbFJlcXVlc3RXaXRoUHJlc2VudGVyID1cbiAgKHsgZ2l0SHViU2VydmljZSwgcHJlc2VudGVyIH06IEluaXRBY3Rpb25Db250ZXh0KSA9PlxuICAoe1xuICAgIGJyYW5jaE5hbWUsXG4gICAgcmVwb3NpdG9yeSxcbiAgfTogTG9jYWxXb3Jrc3BhY2UpOiBSZXN1bHRBc3luYzxQdWxsUmVxdWVzdCB8IHVuZGVmaW5lZCwgRXJyb3I+ID0+XG4gICAgdHJhY2tTdGVwKFxuICAgICAgcHJlc2VudGVyLFxuICAgICAgXCJDcmVhdGluZyBQdWxsIFJlcXVlc3QuLi5cIixcbiAgICAgICgpID0+XG4gICAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlUHVsbFJlcXVlc3Qoe1xuICAgICAgICAgIGJhc2U6IFwibWFpblwiLFxuICAgICAgICAgIGJvZHk6IFwiVGhpcyBQUiBjb250YWlucyB0aGUgc2NhZmZvbGRlZCBtb25vcmVwbyBzdHJ1Y3R1cmUuXCIsXG4gICAgICAgICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICAgICAgICBvd25lcjogcmVwb3NpdG9yeS5vd25lcixcbiAgICAgICAgICByZXBvOiByZXBvc2l0b3J5Lm5hbWUsXG4gICAgICAgICAgdGl0bGU6IFwiU2NhZmZvbGQgcmVwb3NpdG9yeVwiLFxuICAgICAgICB9KSxcbiAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIFB1bGwgUmVxdWVzdC5cIiksXG4gICAgKVxuICAgICAgLy8gSWYgUFIgY3JlYXRpb24gZmFpbHMsIGRvbid0IGJsb2NrIHRoZSB3b3JrZmxvd1xuICAgICAgLm9yRWxzZSgoKSA9PiBva0FzeW5jKHVuZGVmaW5lZCkpO1xuXG5jb25zdCBoYW5kbGVOZXdHaXRIdWJSZXBvc2l0b3J5V2l0aFByZXNlbnRlciA9XG4gIChjb250ZXh0OiBJbml0QWN0aW9uQ29udGV4dCkgPT5cbiAgKHBheWxvYWQ6IE1vbm9yZXBvUGF5bG9hZCk6IFJlc3VsdEFzeW5jPFJlcG9zaXRvcnlQdWxsUmVxdWVzdCwgRXJyb3I+ID0+XG4gICAgY3JlYXRlUmVtb3RlUmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIoY29udGV4dC5wcmVzZW50ZXIpKHBheWxvYWQpXG4gICAgICAuYW5kVGhlbihpbml0aWFsaXplR2l0UmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIoY29udGV4dC5wcmVzZW50ZXIpKVxuICAgICAgLmFuZFRoZW4oKGxvY2FsV29ya3NwYWNlKSA9PlxuICAgICAgICBjcmVhdGVQdWxsUmVxdWVzdFdpdGhQcmVzZW50ZXIoY29udGV4dCkobG9jYWxXb3Jrc3BhY2UpLm1hcCgocHIpID0+ICh7XG4gICAgICAgICAgcHIsXG4gICAgICAgICAgcmVwb3NpdG9yeTogbG9jYWxXb3Jrc3BhY2UucmVwb3NpdG9yeSxcbiAgICAgICAgfSkpLFxuICAgICAgKTtcblxuY29uc3QgaGFuZGxlR2VuZXJhdG9yRXJyb3IgPSAoZXJyOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJkeC1jbGlcIiwgXCJpbml0XCJdKTtcbiAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVyci5tZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gbmV3IEVycm9yKFwiRmFpbGVkIHRvIHJ1biB0aGUgZ2VuZXJhdG9yXCIsIHsgY2F1c2U6IGVyciB9KTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2hldGhlciB0aGUgc2NhZmZvbGRlZCByZXBvc2l0b3J5IHNob3VsZCBiZSBwdWJsaXNoZWQgdG8gR2l0SHViLlxuICpcbiAqIFdoZW4gdGhlIGNhbGxlciBhbHJlYWR5IGtub3dzIHRoZSBhbnN3ZXIgKGUuZy4gdGhlIHVzZXIgcGFzc2VkIGAtLXB1Ymxpc2hgXG4gKiBvbiB0aGUgY29tbWFuZCBsaW5lKSwgdGhhdCB2YWx1ZSBpcyB1c2VkIGFzLWlzIGFuZCBubyBwcm9tcHQgaXMgc2hvd24uIFdoZW5cbiAqIHRoZSBwcmVmZXJlbmNlIGlzIGxlZnQgdW5kZWZpbmVkIChmbGFnIG9taXR0ZWQpLCB0aGUgdXNlciBpcyBhc2tlZFxuICogaW50ZXJhY3RpdmVseS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbmZpcm1HaXRIdWJSZXBvQ3JlYXRpb24gPSAoXG4gIHBheWxvYWQ6IE1vbm9yZXBvUGF5bG9hZCxcbiAgcHVibGlzaFByZWZlcmVuY2U/OiBib29sZWFuLFxuKTogUmVzdWx0QXN5bmM8Ym9vbGVhbiwgRXJyb3I+ID0+XG4gIC8vIEEgcHJlZmVyZW5jZSBwcm92aWRlZCB1cC1mcm9udCAodmlhIGAtLXB1Ymxpc2hgKSBza2lwcyB0aGUgaW50ZXJhY3RpdmUgcHJvbXB0LlxuICBwdWJsaXNoUHJlZmVyZW5jZSAhPT0gdW5kZWZpbmVkXG4gICAgPyBva0FzeW5jKHB1Ymxpc2hQcmVmZXJlbmNlKVxuICAgIDogUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgIGlucXVpcmVyLnByb21wdCh7XG4gICAgICAgICAgZGVmYXVsdDogREVGQVVMVF9HSVRIVUJfUFVCTElTSF9DT05GSVJNQVRJT04sXG4gICAgICAgICAgbWVzc2FnZTogYFRoZSBwcm9qZWN0IGlzIGNyZWF0ZWQgb24gJHtjaGFsay5ncmVlbihwYXlsb2FkLnJlcG9OYW1lKX0uIFdvdWxkIHlvdSBsaWtlIHRvIHB1Ymxpc2ggaXQgdG8gR2l0SHViIGF0ICR7Y2hhbGsuZ3JlZW4oYCR7cGF5bG9hZC5yZXBvT3duZXJ9LyR7cGF5bG9hZC5yZXBvTmFtZX1gKX0gbm93P2AsXG4gICAgICAgICAgbmFtZTogXCJjb25maXJtXCIsXG4gICAgICAgICAgdHlwZTogXCJjb25maXJtXCIsXG4gICAgICAgIH0pLFxuICAgICAgICAoY2F1c2UpID0+XG4gICAgICAgICAgbmV3IEVycm9yKFwiRmFpbGVkIHRvIHJlYWQgR2l0SHViIHB1Ymxpc2ggY29uZmlybWF0aW9uXCIsIHsgY2F1c2UgfSksXG4gICAgICApLmFuZFRoZW4oKGFuc3dlcikgPT4ge1xuICAgICAgICBjb25zdCBwYXJzZWRBbnN3ZXIgPSB6XG4gICAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgICBjb25maXJtOiB6LmJvb2xlYW4oKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zYWZlUGFyc2UoYW5zd2VyKTtcbiAgICAgICAgaWYgKCFwYXJzZWRBbnN3ZXIuc3VjY2Vzcykge1xuICAgICAgICAgIHJldHVybiBlcnJBc3luYyhcbiAgICAgICAgICAgIG5ldyBFcnJvcihcIkludmFsaWQgR2l0SHViIHB1Ymxpc2ggY29uZmlybWF0aW9uXCIsIHtcbiAgICAgICAgICAgICAgY2F1c2U6IHBhcnNlZEFuc3dlci5lcnJvcixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2tBc3luYyhwYXJzZWRBbnN3ZXIuZGF0YS5jb25maXJtKTtcbiAgICAgIH0pO1xuXG5jb25zdCBydW5Jbml0QWN0aW9uID0gKHtcbiAgZ2l0SHViU2VydmljZSxcbiAgaW5pdGlhbEFuc3dlcnMgPSB7fSxcbiAgcHJlc2VudGVyLFxufTogSW5pdEFjdGlvbkNvbnRleHQpOiBSZXN1bHRBc3luYzxTdW1tYXJ5SW5wdXQsIEVycm9yPiA9PiB7XG4gIGNvbnN0IHsgcHVibGlzaFRvR2l0SHViLCAuLi5tb25vcmVwb0luaXRpYWxBbnN3ZXJzIH0gPSBpbml0aWFsQW5zd2VycztcblxuICByZXR1cm4gdHJhY2tTdGVwKFxuICAgIHByZXNlbnRlcixcbiAgICBcIkluaXRpYWxpemluZyB3b3Jrc3BhY2UgZ2VuZXJhdG9yLi4uXCIsXG4gICAgZ2V0UGxvcEluc3RhbmNlLFxuICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwbG9wXCIpLFxuICApXG4gICAgLmFuZFRoZW4oKHBsb3ApID0+XG4gICAgICAvLyBUaGUgcHJvbXB0IHBoYXNlIG11c3QgcnVuIG91dHNpZGUgdHJhY2tTdGVwOiBpbiB0ZXh0IG1vZGUgdHJhY2tTdGVwXG4gICAgICAvLyByZW5kZXJzIGEgc3Bpbm5lciB0aGF0IG9jY3VwaWVzIHRoZSBUVFkgYW5kIGhpZGVzIHRoZSBwcm9tcHRzLlxuICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgIGNvbGxlY3RNb25vcmVwb1BheWxvYWQocGxvcCwgZ2l0SHViU2VydmljZSwgbW9ub3JlcG9Jbml0aWFsQW5zd2VycyksXG4gICAgICAgIGhhbmRsZUdlbmVyYXRvckVycm9yLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRoZW4oKHsgZ2VuZXJhdG9yLCBwYXlsb2FkIH0pID0+XG4gICAgICB0cmFja1N0ZXAoXG4gICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgXCJTY2FmZm9sZGluZyB3b3Jrc3BhY2UuLi5cIixcbiAgICAgICAgKCkgPT4gcnVuTW9ub3JlcG9BY3Rpb25zKGdlbmVyYXRvciwgcGF5bG9hZCksXG4gICAgICAgIGhhbmRsZUdlbmVyYXRvckVycm9yLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRlZSgocGF5bG9hZCkgPT4ge1xuICAgICAgcHJvY2Vzcy5jaGRpcihwYXlsb2FkLnJlcG9OYW1lKTtcbiAgICB9KVxuICAgIC5hbmRUaGVuKChwYXlsb2FkKSA9PlxuICAgICAgY29uZmlybUdpdEh1YlJlcG9DcmVhdGlvbihwYXlsb2FkLCBwdWJsaXNoVG9HaXRIdWIpLmFuZFRoZW48XG4gICAgICAgIFN1bW1hcnlJbnB1dCxcbiAgICAgICAgRXJyb3JcbiAgICAgID4oKGNvbmZpcm1lZCkgPT5cbiAgICAgICAgY29uZmlybWVkXG4gICAgICAgICAgPyBoYW5kbGVOZXdHaXRIdWJSZXBvc2l0b3J5V2l0aFByZXNlbnRlcih7XG4gICAgICAgICAgICAgIGdpdEh1YlNlcnZpY2UsXG4gICAgICAgICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgICAgIH0pKHBheWxvYWQpXG4gICAgICAgICAgOiBva0FzeW5jKHsgZ2l0SHViUmVwb0NyZWF0aW9uU2tpcHBlZDogdHJ1ZSwgcGF5bG9hZCB9KSxcbiAgICAgICksXG4gICAgKTtcbn07XG5cbmNvbnN0IHJlcG9ydFN1bW1hcnkgPVxuICAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLCBvdXRwdXRNb2RlOiBcImpzb25cIiB8IFwidGV4dFwiKSA9PlxuICAocmVzdWx0OiBTdW1tYXJ5SW5wdXQpID0+IHtcbiAgICBpZiAob3V0cHV0TW9kZSA9PT0gXCJqc29uXCIpIHtcbiAgICAgIHByZXNlbnRlci5yZXBvcnRSZXN1bHQocmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGxheVN1bW1hcnkocmVzdWx0KTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBtYWtlSW5pdENvbW1hbmQgPSAoXG4gIHJlcXVpcmVHaXRIdWJBdXRoOiBHaXRIdWJBdXRoRmFjdG9yeSxcbiAgZW52OiBDbGlFbnYsXG4pOiBDb21tYW5kID0+XG4gIG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImluaXRcIilcbiAgICAuZGVzY3JpcHRpb24oXCJJbml0aWFsaXplIGEgbmV3IERYIHdvcmtzcGFjZVwiKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbihcIi0tbmFtZSA8bmFtZT5cIiwgXCJSZXBvc2l0b3J5IG5hbWVcIikpXG4gICAgLmFkZE9wdGlvbihcbiAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgIFwiLS1vd25lciA8b3duZXI+XCIsXG4gICAgICAgIFwiR2l0SHViIG9yZ2FuaXphdGlvbiBvciB1c2VyIHRoYXQgd2lsbCBvd24gdGhlIHJlcG9zaXRvcnlcIixcbiAgICAgICksXG4gICAgKVxuICAgIC5hZGRPcHRpb24oXG4gICAgICBuZXcgT3B0aW9uKFwiLS1kZXNjcmlwdGlvbiA8ZGVzY3JpcHRpb24+XCIsIFwiUmVwb3NpdG9yeSBkZXNjcmlwdGlvblwiKSxcbiAgICApXG4gICAgLmFkZE9wdGlvbihcbiAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgIFwiLS1wdWJsaXNoXCIsXG4gICAgICAgIFwiUHVibGlzaCB0aGUgc2NhZmZvbGRlZCByZXBvc2l0b3J5IHRvIEdpdEh1YiB3aXRob3V0IHByb21wdGluZ1wiLFxuICAgICAgKS5kZWZhdWx0KHVuZGVmaW5lZCksXG4gICAgKVxuICAgIC5hY3Rpb24oYXN5bmMgZnVuY3Rpb24gKG9wdGlvbnM6IHVua25vd24pIHtcbiAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSB0aGlzLm9wdHNXaXRoR2xvYmFsczxHbG9iYWxPcHRpb25zPigpO1xuICAgICAgY29uc3Qgb3V0cHV0TW9kZSA9IHJlc29sdmVPdXRwdXRNb2RlKGVudiwgb3V0cHV0KTtcbiAgICAgIGNvbnN0IHByZXNlbnRlciA9IGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIob3V0cHV0TW9kZSk7XG5cbiAgICAgIGF3YWl0IFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHBhcnNlSW5pdENvbW1hbmRPcHRpb25zKG9wdGlvbnMpKSxcbiAgICAgICAgKGNhdXNlKSA9PlxuICAgICAgICAgIGNhdXNlIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgID8gY2F1c2VcbiAgICAgICAgICAgIDogbmV3IEVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIGluaXQgY29tbWFuZCBvcHRpb25zXCIsIHsgY2F1c2UgfSksXG4gICAgICApXG4gICAgICAgIC5hbmRUaGVuKChpbml0T3B0aW9ucykgPT5cbiAgICAgICAgICBydW5Jbml0UHJlY29uZGl0aW9ucyhwcmVzZW50ZXIpXG4gICAgICAgICAgICAuYW5kVGhlbigoKSA9PiByZXF1aXJlR2l0SHViQXV0aCgpKVxuICAgICAgICAgICAgLmFuZFRoZW4oKGF1dGgpID0+XG4gICAgICAgICAgICAgIHJ1bkluaXRBY3Rpb24oe1xuICAgICAgICAgICAgICAgIGdpdEh1YlNlcnZpY2U6IGF1dGguZ2l0SHViU2VydmljZSxcbiAgICAgICAgICAgICAgICBpbml0aWFsQW5zd2VyczogZ2V0TW9ub3JlcG9Jbml0aWFsQW5zd2Vycyhpbml0T3B0aW9ucyksXG4gICAgICAgICAgICAgICAgcHJlc2VudGVyLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgLm1hdGNoKFxuICAgICAgICAgIHJlcG9ydFN1bW1hcnkocHJlc2VudGVyLCBvdXRwdXRNb2RlKSxcbiAgICAgICAgICByZXBvcnRDb21tYW5kRXJyb3IodGhpcywgcHJlc2VudGVyLCBvdXRwdXRNb2RlKSxcbiAgICAgICAgKTtcbiAgICB9KTtcbiJdfQ==
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb21tYW5kZXIvY29tbWFuZHMvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQU94QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9DLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixpQkFBaUIsR0FDbEIsTUFBTSx3QkFBd0IsQ0FBQztBQWNoQyxNQUFNLDJCQUEyQixHQUFHLENBQ2xDLEtBQW1CLEVBQ3VCLEVBQUUsQ0FDNUMsMkJBQTJCLElBQUksS0FBSyxDQUFDO0FBc0J2QyxNQUFNLFNBQVMsR0FBRyxDQUNoQixTQUEyQixF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QUFJLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDOUQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUssWUFBWSxLQUFLO1FBQ3BCLENBQUMsQ0FBQyxLQUFLO1FBQ1AsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLHNDQUFzQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FDbkU7U0FDRSxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUN2QixvQkFBb0IsQ0FBQyxTQUFTLENBQUM7U0FDNUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDbEMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDaEIsYUFBYSxDQUFDO1FBQ1osYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1FBQ2pDLGNBQWMsRUFBRSx5QkFBeUIsQ0FBQyxXQUFXLENBQUM7UUFDdEQsU0FBUztLQUNWLENBQUMsQ0FDSCxDQUNKO1NBQ0EsS0FBSyxDQUNKLGFBQWEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQ3BDLGtCQUFrQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQ2hELENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyAkLCBFeGVjYUVycm9yIH0gZnJvbSBcImV4ZWNhXCI7XG5pbXBvcnQgaW5xdWlyZXIgZnJvbSBcImlucXVpcmVyXCI7XG5pbXBvcnQgeyBlcnJBc3luYywgb2tBc3luYywgUmVzdWx0QXN5bmMgfSBmcm9tIFwibmV2ZXJ0aHJvd1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1hbmRQcmVzZW50ZXIgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2NvbW1hbmQtcHJlc2VudGVyLmpzXCI7XG5pbXBvcnQgdHlwZSB7IENsaUVudiB9IGZyb20gXCIuLi9lbnYuanNcIjtcbmltcG9ydCB0eXBlIHsgR2xvYmFsT3B0aW9ucyB9IGZyb20gXCIuLi9nbG9iYWwtb3B0aW9ucy5qc1wiO1xuXG5pbXBvcnQgeyBHaXRIdWJBdXRoRmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vZGVwZW5kZW5jaWVzLmpzXCI7XG5pbXBvcnQge1xuICBHaXRIdWJTZXJ2aWNlLFxuICBQdWxsUmVxdWVzdCxcbiAgUmVwb3NpdG9yeSxcbn0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9naXRodWIuanNcIjtcbmltcG9ydCB7IHRmJCB9IGZyb20gXCIuLi8uLi9leGVjYS90ZXJyYWZvcm0uanNcIjtcbmltcG9ydCB7IFBheWxvYWQgYXMgTW9ub3JlcG9QYXlsb2FkIH0gZnJvbSBcIi4uLy4uL3Bsb3AvZ2VuZXJhdG9ycy9tb25vcmVwby9pbmRleC5qc1wiO1xuaW1wb3J0IHtcbiAgY29sbGVjdE1vbm9yZXBvUGF5bG9hZCxcbiAgZ2V0UGxvcEluc3RhbmNlLFxuICBydW5Nb25vcmVwb0FjdGlvbnMsXG59IGZyb20gXCIuLi8uLi9wbG9wL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBhc0Vycm9yLCByZXBvcnRDb21tYW5kRXJyb3IgfSBmcm9tIFwiLi4vY29tbWFuZC1lcnJvcnMuanNcIjtcbmltcG9ydCB7IHRvRXJyb3JNZXNzYWdlIH0gZnJvbSBcIi4uL2Vycm9yLXJlcG9ydGluZy5qc1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlQ29tbWFuZFByZXNlbnRlcixcbiAgcmVzb2x2ZU91dHB1dE1vZGUsXG59IGZyb20gXCIuLi9wcmVzZW50ZXJzL2luZGV4LmpzXCI7XG5cbnR5cGUgR2l0SHViUmVwb0NyZWF0aW9uU2tpcHBlZFJlc3VsdCA9IHtcbiAgZ2l0SHViUmVwb0NyZWF0aW9uU2tpcHBlZDogdHJ1ZTtcbiAgcGF5bG9hZDogTW9ub3JlcG9QYXlsb2FkO1xufTtcblxudHlwZSBJbml0UmVzdWx0ID0ge1xuICBwcj86IFB1bGxSZXF1ZXN0O1xuICByZXBvc2l0b3J5PzogUmVwb3NpdG9yeTtcbn07XG5cbnR5cGUgU3VtbWFyeUlucHV0ID0gR2l0SHViUmVwb0NyZWF0aW9uU2tpcHBlZFJlc3VsdCB8IEluaXRSZXN1bHQ7XG5cbmNvbnN0IGlzR2l0SHViUmVwb0NyZWF0aW9uU2tpcHBlZCA9IChcbiAgaW5wdXQ6IFN1bW1hcnlJbnB1dCxcbik6IGlucHV0IGlzIEdpdEh1YlJlcG9DcmVhdGlvblNraXBwZWRSZXN1bHQgPT5cbiAgXCJnaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkXCIgaW4gaW5wdXQ7XG5cbnR5cGUgSW5pdEFjdGlvbkNvbnRleHQgPSB7XG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2U7XG4gIGluaXRpYWxBbnN3ZXJzPzogSW5pdEluaXRpYWxBbnN3ZXJzO1xuICBwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXI7XG59O1xuXG50eXBlIEluaXRJbml0aWFsQW5zd2VycyA9IFBhcnRpYWw8TW9ub3JlcG9QYXlsb2FkPiAmIHtcbiAgcHVibGlzaFRvR2l0SHViPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgTG9jYWxXb3Jrc3BhY2UgPSB7XG4gIGJyYW5jaE5hbWU6IHN0cmluZztcbiAgcmVwb3NpdG9yeTogUmVwb3NpdG9yeTtcbn07XG5cbnR5cGUgUmVwb3NpdG9yeVB1bGxSZXF1ZXN0ID0ge1xuICBwcj86IFB1bGxSZXF1ZXN0O1xuICByZXBvc2l0b3J5OiBSZXBvc2l0b3J5O1xufTtcblxuY29uc3QgdHJhY2tTdGVwID0gPFQsIEU+KFxuICBwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIsXG4gIG5hbWU6IHN0cmluZyxcbiAgdGFzazogKCkgPT4gUHJvbWlzZTxUPixcbiAgbWFwRXJyb3I6IChjYXVzZTogdW5rbm93bikgPT4gRSxcbik6IFJlc3VsdEFzeW5jPFQsIEU+ID0+XG4gIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKHByZXNlbnRlci50cmFja1N0ZXAobmFtZSwgdGFzayksIG1hcEVycm9yKTtcblxuY29uc3QgZGlzcGxheVN1bW1hcnkgPSAoaW5wdXQ6IFN1bW1hcnlJbnB1dCkgPT4ge1xuICBjb25zdCBkb2NzVXJsID0gXCJodHRwczovL2R4LnBhZ29wYS5pdC9nZXR0aW5nLXN0YXJ0ZWRcIjtcblxuICBpZiAoaXNHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkKGlucHV0KSkge1xuICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gaW5wdXQ7XG4gICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93LmJvbGQoXCJcXG5HaXRIdWIgcmVwb3NpdG9yeSBjcmVhdGlvbiBza2lwcGVkLlwiKSk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVGhlIHdvcmtzcGFjZSBmaWxlcyBoYXZlIGJlZW4gc2NhZmZvbGRlZCBpbiAke2NoYWxrLmN5YW4ocGF5bG9hZC5yZXBvTmFtZSArIFwiL1wiKX0uYCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmJvbGQoXCJcXG5UbyBmaW5pc2ggdGhlIHNldHVwIG1hbnVhbGx5OlwiKSk7XG4gICAgbGV0IHN0ZXAgPSAxO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCR7c3RlcCsrfS4gQ3JlYXRlIHRoZSBHaXRIdWIgcmVwb3NpdG9yeSBieSBhcHBseWluZyB0aGUgVGVycmFmb3JtIGNvbmZpZyBzY2FmZm9sZGVkIGF0ICR7Y2hhbGsuY3lhbihgJHtwYXlsb2FkLnJlcG9OYW1lfS9pbmZyYS9yZXBvc2l0b3J5YCl9OmAsXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAgICAgICAgJHtjaGFsay5jeWFuKGBjZCAke3BheWxvYWQucmVwb05hbWV9L2luZnJhL3JlcG9zaXRvcnkgJiYgdGVycmFmb3JtIGluaXQgJiYgdGVycmFmb3JtIGFwcGx5YCl9YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCR7c3RlcCsrfS4gUHVzaCB0aGUgc2NhZmZvbGRlZCBjb2RlIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJlcG9zaXRvcnk6YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgICAgICAke2NoYWxrLmN5YW4oYGNkICR7cGF5bG9hZC5yZXBvTmFtZX0gJiYgZ2l0IGluaXQgJiYgZ2l0IHJlbW90ZSBhZGQgb3JpZ2luIDx1cmw+ICYmIGdpdCBwdXNoYCl9YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCR7c3RlcH0uIFZpc2l0ICR7Y2hhbGsudW5kZXJsaW5lKGRvY3NVcmwpfSB0byBkZXBsb3kgeW91ciBmaXJzdCBwcm9qZWN0XFxuYCxcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgcHIsIHJlcG9zaXRvcnkgfSA9IGlucHV0O1xuICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbi5ib2xkKFwiXFxuV29ya3NwYWNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiKSk7XG5cbiAgaWYgKHJlcG9zaXRvcnkpIHtcbiAgICBjb25zb2xlLmxvZyhgLSBOYW1lOiAke2NoYWxrLmN5YW4ocmVwb3NpdG9yeS5uYW1lKX1gKTtcbiAgICBjb25zb2xlLmxvZyhgLSBHaXRIdWIgUmVwb3NpdG9yeTogJHtjaGFsay5jeWFuKHJlcG9zaXRvcnkudXJsKX1cXG5gKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgYFxcbuKaoO+4jyBHaXRIdWIgcmVwb3NpdG9yeSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGlmIChwcikge1xuICAgIGxldCBzdGVwID0gMTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbi5ib2xkKFwiXFxuTmV4dCBTdGVwczpcIikpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCR7c3RlcCsrfS4gUmV2aWV3IHRoZSBQdWxsIFJlcXVlc3QgaW4gdGhlIEdpdEh1YiByZXBvc2l0b3J5OiAke2NoYWxrLnVuZGVybGluZShwci51cmwpfWAsXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAke3N0ZXB9LiBWaXNpdCAke2NoYWxrLnVuZGVybGluZShkb2NzVXJsKX0gdG8gZGVwbG95IHlvdXIgZmlyc3QgcHJvamVjdFxcbmAsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGNoYWxrLnllbGxvdyhgXFxu4pqg77iPIFRoZXJlIHdhcyBhbiBlcnJvciBkdXJpbmcgUHVsbCBSZXF1ZXN0IGNyZWF0aW9uLmApLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgUGxlYXNlLCBtYW51YWxseSBjcmVhdGUgYSBQdWxsIFJlcXVlc3QgaW4gdGhlIEdpdEh1YiByZXBvc2l0b3J5IHRvIHJldmlldyB0aGUgc2NhZmZvbGRlZCBjb2RlLlxcbmAsXG4gICAgKTtcbiAgfVxufTtcblxuY29uc3QgY2hlY2tUZXJyYWZvcm1DbGkgPSAoKSA9PiB0ZiRgdGVycmFmb3JtIC12ZXJzaW9uYDtcblxuY29uc3QgdHJhY2tUZXJyYWZvcm1DbGlJc0luc3RhbGxlZCA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrU3RlcChcbiAgICBwcmVzZW50ZXIsXG4gICAgXCJDaGVja2luZyBUZXJyYWZvcm0gaW5zdGFsbGF0aW9uLi4uXCIsXG4gICAgY2hlY2tUZXJyYWZvcm1DbGksXG4gICAgYXNFcnJvcihcbiAgICAgIFwiUGxlYXNlIGluc3RhbGwgdGVycmFmb3JtIENMSSBiZWZvcmUgcnVubmluZyB0aGlzIGNvbW1hbmQuIElmIHlvdSB1c2UgdGZlbnYsIHJ1bjogdGZlbnYgaW5zdGFsbCBsYXRlc3QgJiYgdGZlbnYgdXNlIGxhdGVzdFwiLFxuICAgICksXG4gICk7XG5cbmNvbnN0IGNoZWNrQ29yZXBhY2sgPSAoKSA9PiB0ZiRgY29yZXBhY2sgLXZgO1xuXG5jb25zdCB0cmFja0NvcmVwYWNrSXNJbnN0YWxsZWQgPSAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyKSA9PlxuICB0cmFja1N0ZXAoXG4gICAgcHJlc2VudGVyLFxuICAgIFwiQ2hlY2tpbmcgQ29yZXBhY2sgaW5zdGFsbGF0aW9uLi4uXCIsXG4gICAgY2hlY2tDb3JlcGFjayxcbiAgICBhc0Vycm9yKFwiUGxlYXNlIGluc3RhbGwgQ29yZXBhY2sgYmVmb3JlIHJ1bm5pbmcgdGhpcyBjb21tYW5kLlwiKSxcbiAgKTtcblxuY29uc3QgYXp1cmVBY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICB1c2VyOiB6Lm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoKS5taW4oMSksXG4gIH0pLFxufSk7XG5cbmNvbnN0IEFaX0xPR0lOX1JFUVVJUkVEX01FU1NBR0UgPVxuICBcIlBsZWFzZSBsb2cgaW4gdG8gQXp1cmUgQ0xJIHVzaW5nIGBheiBsb2dpbmAgYmVmb3JlIHJ1bm5pbmcgdGhpcyBjb21tYW5kLlwiO1xuXG5jb25zdCBtYXBBekFjY2Vzc0Vycm9yID0gKGNhdXNlOiB1bmtub3duKTogRXJyb3IgPT5cbiAgbmV3IEVycm9yKHRvRXJyb3JNZXNzYWdlKGNhdXNlKSwgeyBjYXVzZSB9KTtcblxuY29uc3QgcGFyc2VBenVyZUFjY291bnRPdXRwdXQgPSAoc3Rkb3V0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgcGFyc2VkT3V0cHV0OiB1bmtub3duO1xuXG4gIHRyeSB7XG4gICAgcGFyc2VkT3V0cHV0ID0gSlNPTi5wYXJzZShzdGRvdXQpO1xuICB9IGNhdGNoIChjYXVzZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkF6dXJlIENMSSByZXR1cm5lZCBpbnZhbGlkIGFjY291bnQgSlNPTi5cIiwgeyBjYXVzZSB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF6dXJlQWNjb3VudFNjaGVtYS5zYWZlUGFyc2UocGFyc2VkT3V0cHV0KTtcbiAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkF6dXJlIENMSSByZXR1cm5lZCBhbiB1bmV4cGVjdGVkIGFjY291bnQgcGF5bG9hZC5cIiwge1xuICAgICAgY2F1c2U6IHJlc3VsdC5lcnJvcixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuZGF0YS51c2VyLm5hbWU7XG59O1xuXG5jb25zdCBlbnN1cmVBekxvZ2luID0gYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCB0ZiRgYXogYWNjb3VudCBzaG93YC5jYXRjaCgoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICB0aHJvdyBhc0Vycm9yKEFaX0xPR0lOX1JFUVVJUkVEX01FU1NBR0UpKGNhdXNlKTtcbiAgfSk7XG4gIC8vIGBheiBhY2NvdW50IHNob3dgIHJlYWRzIHRoZSBjYWNoZWQgQ0xJIGNvbnRleHQsIGJ1dCBgYXogZ3JvdXAgbGlzdGBcbiAgLy8gZmFpbHMgd2hlbiB0aGUgY3VycmVudCBzZXNzaW9uIHRva2VuIGhhcyBleHBpcmVkLlxuICBhd2FpdCB0ZiRgYXogZ3JvdXAgbGlzdGAuY2F0Y2goKGNhdXNlOiB1bmtub3duKSA9PiB7XG4gICAgdGhyb3cgbWFwQXpBY2Nlc3NFcnJvcihjYXVzZSk7XG4gIH0pO1xuXG4gIHJldHVybiBwYXJzZUF6dXJlQWNjb3VudE91dHB1dChzdGRvdXQpO1xufTtcblxuY29uc3QgbWFwQXpMb2dpbkNoZWNrRXJyb3IgPSAoY2F1c2U6IHVua25vd24pOiBFcnJvciA9PlxuICBjYXVzZSBpbnN0YW5jZW9mIEVycm9yXG4gICAgPyBjYXVzZVxuICAgIDogbmV3IEVycm9yKFwiRmFpbGVkIHRvIGNoZWNrIEF6dXJlIENMSSBsb2dpbiBzdGF0dXMuXCIsIHsgY2F1c2UgfSk7XG5cbmNvbnN0IHRyYWNrQXpMb2dpbiA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrU3RlcChcbiAgICBwcmVzZW50ZXIsXG4gICAgXCJDaGVja2luZyBBenVyZSBsb2dpbiBzdGF0dXMuLi5cIixcbiAgICBlbnN1cmVBekxvZ2luLFxuICAgIG1hcEF6TG9naW5DaGVja0Vycm9yLFxuICApO1xuXG4vLyBUT0RPKENFUy0xODEwKTogTWFrZSB0aGVzZSBjaGVja3MgY29uY3VycmVudCB0byBzcGVlZCB1cCB0aGUgcHJlY29uZGl0aW9ucyBjaGVjayBwaGFzZVxuZXhwb3J0IGNvbnN0IHJ1bkluaXRQcmVjb25kaXRpb25zID0gKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcikgPT5cbiAgdHJhY2tUZXJyYWZvcm1DbGlJc0luc3RhbGxlZChwcmVzZW50ZXIpLmFuZFRoZW4oKCkgPT5cbiAgICB0cmFja0NvcmVwYWNrSXNJbnN0YWxsZWQocHJlc2VudGVyKSxcbiAgKTtcblxuLy8gVE9ETyhDRVMtMTgxMCk6IE1ha2UgdGhlc2UgY2hlY2tzIGNvbmN1cnJlbnQgdG8gc3BlZWQgdXAgdGhlIHByZWNvbmRpdGlvbnMgY2hlY2sgcGhhc2VcbmV4cG9ydCBjb25zdCBydW5BZGRFbnZpcm9ubWVudFByZWNvbmRpdGlvbnMgPSAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyKSA9PlxuICB0cmFja1RlcnJhZm9ybUNsaUlzSW5zdGFsbGVkKHByZXNlbnRlcilcbiAgICAuYW5kVGhlbigoKSA9PiB0cmFja0F6TG9naW4ocHJlc2VudGVyKSlcbiAgICAuYW5kVGhlbigoKSA9PiB0cmFja0NvcmVwYWNrSXNJbnN0YWxsZWQocHJlc2VudGVyKSk7XG5cbmNvbnN0IERFRkFVTFRfR0lUSFVCX1BVQkxJU0hfQ09ORklSTUFUSU9OID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IGluaXRDb21tYW5kT3B0aW9uc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbmFtZTogei5zdHJpbmcoKS50cmltKCkubWluKDEsIFwiUmVwb3NpdG9yeSBuYW1lIGNhbm5vdCBiZSBlbXB0eVwiKS5vcHRpb25hbCgpLFxuICBvd25lcjogei5zdHJpbmcoKS50cmltKCkubWluKDEsIFwiR2l0SHViIG93bmVyIGNhbm5vdCBiZSBlbXB0eVwiKS5vcHRpb25hbCgpLFxuICBwdWJsaXNoOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSk7XG5cbmV4cG9ydCB0eXBlIEluaXRDb21tYW5kT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIGluaXRDb21tYW5kT3B0aW9uc1NjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBwYXJzZUluaXRDb21tYW5kT3B0aW9ucyA9IChpbnB1dDogdW5rbm93bik6IEluaXRDb21tYW5kT3B0aW9ucyA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGluaXRDb21tYW5kT3B0aW9uc1NjaGVtYS5zYWZlUGFyc2UoaW5wdXQpO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgaW5pdCBjb21tYW5kIG9wdGlvbnM6XFxuJHt6LnByZXR0aWZ5RXJyb3IocmVzdWx0LmVycm9yKX1gLFxuICAgICAge1xuICAgICAgICBjYXVzZTogcmVzdWx0LmVycm9yLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5kYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1vbm9yZXBvSW5pdGlhbEFuc3dlcnMgPSAoe1xuICBkZXNjcmlwdGlvbixcbiAgbmFtZSxcbiAgb3duZXIsXG4gIHB1Ymxpc2gsXG59OiBJbml0Q29tbWFuZE9wdGlvbnMpOiBJbml0SW5pdGlhbEFuc3dlcnMgPT4ge1xuICBjb25zdCBpbml0aWFsQW5zd2VyczogSW5pdEluaXRpYWxBbnN3ZXJzID0ge307XG5cbiAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgaW5pdGlhbEFuc3dlcnMucmVwb0Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gIH1cblxuICBpZiAob3duZXIpIHtcbiAgICBpbml0aWFsQW5zd2Vycy5yZXBvT3duZXIgPSBvd25lcjtcbiAgfVxuXG4gIGlmIChuYW1lKSB7XG4gICAgaW5pdGlhbEFuc3dlcnMucmVwb05hbWUgPSBuYW1lO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwdWJsaXNoID09PSBcImJvb2xlYW5cIikge1xuICAgIGluaXRpYWxBbnN3ZXJzLnB1Ymxpc2hUb0dpdEh1YiA9IHB1Ymxpc2g7XG4gIH1cblxuICByZXR1cm4gaW5pdGlhbEFuc3dlcnM7XG59O1xuXG50eXBlIFRlcnJhZm9ybVJlcG9zaXRvcnlDcmVhdGlvblN0ZXAgPSBcImFwcGx5XCIgfCBcImluaXRcIjtcblxuY29uc3QgZm9ybWF0VGVycmFmb3JtUmVwb3NpdG9yeUNyZWF0aW9uRmFpbHVyZURldGFpbHMgPSAoXG4gIGNhdXNlOiB1bmtub3duLFxuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZGV0YWlscyA9XG4gICAgY2F1c2UgaW5zdGFuY2VvZiBFeGVjYUVycm9yXG4gICAgICA/IFtjYXVzZS5zaG9ydE1lc3NhZ2UsIGNhdXNlLnN0ZGVycl1cbiAgICAgIDogW3RvRXJyb3JNZXNzYWdlKGNhdXNlKV07XG5cbiAgcmV0dXJuIGRldGFpbHNcbiAgICAuZmlsdGVyKFxuICAgICAgKGRldGFpbCk6IGRldGFpbCBpcyBzdHJpbmcgPT5cbiAgICAgICAgdHlwZW9mIGRldGFpbCA9PT0gXCJzdHJpbmdcIiAmJiBkZXRhaWwudHJpbSgpLmxlbmd0aCA+IDAsXG4gICAgKVxuICAgIC5tYXAoKGRldGFpbCkgPT4gZGV0YWlsLnRyaW0oKSlcbiAgICAuam9pbihcIlxcblwiKTtcbn07XG5cbmNvbnN0IG1hcFRlcnJhZm9ybVJlcG9zaXRvcnlDcmVhdGlvbkVycm9yID1cbiAgKHN0ZXA6IFRlcnJhZm9ybVJlcG9zaXRvcnlDcmVhdGlvblN0ZXApID0+XG4gIChjYXVzZTogdW5rbm93bik6IEVycm9yID0+IHtcbiAgICBjb25zdCBkZXRhaWxzID0gZm9ybWF0VGVycmFmb3JtUmVwb3NpdG9yeUNyZWF0aW9uRmFpbHVyZURldGFpbHMoY2F1c2UpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBbXG4gICAgICBgVGVycmFmb3JtICR7c3RlcH0gZmFpbGVkIHdoaWxlIGNyZWF0aW5nIHRoZSBHaXRIdWIgcmVwb3NpdG9yeS5gLFxuICAgICAgZGV0YWlscyxcbiAgICBdXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIHJldHVybiBuZXcgRXJyb3IobWVzc2FnZSwgeyBjYXVzZSB9KTtcbiAgfTtcblxuY29uc3QgY3JlYXRlUmVtb3RlUmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIgPVxuICAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyKSA9PlxuICAoe1xuICAgIHJlcG9OYW1lLFxuICAgIHJlcG9Pd25lcixcbiAgfTogTW9ub3JlcG9QYXlsb2FkKTogUmVzdWx0QXN5bmM8UmVwb3NpdG9yeSwgRXJyb3I+ID0+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwiaW5pdFwiXSk7XG4gICAgY29uc3QgcmVwbyQgPSB0ZiQoeyBjd2Q6IHBhdGgucmVzb2x2ZShcImluZnJhXCIsIFwicmVwb3NpdG9yeVwiKSB9KTtcbiAgICBjb25zdCBydW5UZXJyYWZvcm1SZXBvc2l0b3J5Q3JlYXRpb25TdGVwID0gYXN5bmMgKFxuICAgICAgc3RlcDogVGVycmFmb3JtUmVwb3NpdG9yeUNyZWF0aW9uU3RlcCxcbiAgICAgIGV4ZWN1dGVTdGVwOiAoKSA9PiBQcm9taXNlPHVua25vd24+LFxuICAgICkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZXhlY3V0ZVN0ZXAoKTtcbiAgICAgIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbWFwVGVycmFmb3JtUmVwb3NpdG9yeUNyZWF0aW9uRXJyb3Ioc3RlcCkoY2F1c2UpO1xuICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBhcHBseVRlcnJhZm9ybSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVSZXBvc2l0b3J5VGVycmFmb3JtID0gKCkgPT4gcmVwbyRgdGVycmFmb3JtIGluaXRgO1xuICAgICAgY29uc3QgYXBwbHlSZXBvc2l0b3J5VGVycmFmb3JtID0gKCkgPT5cbiAgICAgICAgcmVwbyRgdGVycmFmb3JtIGFwcGx5IC1hdXRvLWFwcHJvdmVgO1xuXG4gICAgICBhd2FpdCBydW5UZXJyYWZvcm1SZXBvc2l0b3J5Q3JlYXRpb25TdGVwKFxuICAgICAgICBcImluaXRcIixcbiAgICAgICAgaW5pdGlhbGl6ZVJlcG9zaXRvcnlUZXJyYWZvcm0sXG4gICAgICApO1xuICAgICAgYXdhaXQgcnVuVGVycmFmb3JtUmVwb3NpdG9yeUNyZWF0aW9uU3RlcChcbiAgICAgICAgXCJhcHBseVwiLFxuICAgICAgICBhcHBseVJlcG9zaXRvcnlUZXJyYWZvcm0sXG4gICAgICApO1xuICAgIH07XG4gICAgcmV0dXJuIHRyYWNrU3RlcChcbiAgICAgIHByZXNlbnRlcixcbiAgICAgIFwiQ3JlYXRpbmcgR2l0SHViIHJlcG9zaXRvcnkuLi5cIixcbiAgICAgIGFwcGx5VGVycmFmb3JtLFxuICAgICAgKGNhdXNlKSA9PlxuICAgICAgICBjYXVzZSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgPyBjYXVzZVxuICAgICAgICAgIDogYXNFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgR2l0SHViIHJlcG9zaXRvcnkuXCIpKGNhdXNlKSxcbiAgICApLm1hcCgoKSA9PiBuZXcgUmVwb3NpdG9yeShyZXBvTmFtZSwgcmVwb093bmVyKSk7XG4gIH07XG4vKipcbiAqIEV4aXQgY29kZSByZXR1cm5lZCBieSBgZ2l0IHJlbW90ZSBhZGRgIHdoZW4gYSByZW1vdGUgd2l0aCB0aGUgcmVxdWVzdGVkIG5hbWVcbiAqIGFscmVhZHkgZXhpc3RzLiBgZ2l0IHJlbW90ZWAgZG9jdW1lbnRzIHRoaXMgZGVkaWNhdGVkIHN0YXR1cyBjb2RlLCBzbyB3ZSBjYW5cbiAqIHR1cm4gaXQgaW50byBhY3Rpb25hYmxlIGd1aWRhbmNlIGluc3RlYWQgb2YgYSBnZW5lcmljIGZhaWx1cmUgbWVzc2FnZS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9naXQtc2NtLmNvbS9kb2NzL2dpdC1yZW1vdGUjX2V4aXRfc3RhdHVzXG4gKi9cbmNvbnN0IEdJVF9SRU1PVEVfQUxSRUFEWV9FWElTVFNfRVhJVF9DT0RFID0gMztcbmNvbnN0IERFRkFVTFRfU0NBRkZPTERfR0lUX1VTRVJfRU1BSUwgPSBcImR4LXBhZ29wYS1naXRodWItYm90QHBhZ29wYS5pdFwiO1xuY29uc3QgREVGQVVMVF9TQ0FGRk9MRF9HSVRfVVNFUl9OQU1FID0gXCJkeC1wYWdvcGEtYm90XCI7XG5cbi8qKlxuICogVHJhbnNsYXRlcyBhIGZhaWx1cmUgb2YgdGhlIGdpdCByZW1vdGUgc2V0dXAgc3RlcCBpbnRvIGFuIGFjdGlvbmFibGUgZXJyb3IuXG4gKlxuICogV2hlbiBgZ2l0IHJlbW90ZSBhZGQgb3JpZ2luYCBleGl0cyB3aXRoIGNvZGUgMyB0aGUgcmVtb3RlIGFscmVhZHkgZXhpc3RzLFxuICogd2hpY2ggaXMgYSByZWNvdmVyYWJsZSBzaXR1YXRpb246IHRoZSBtZXNzYWdlIHRlbGxzIHRoZSB1c2VyIGhvdyB0byBmaXggaXQuXG4gKiBUaGUgb3JpZ2luYWwgRXhlY2FFcnJvciBpcyBwcmVzZXJ2ZWQgYXMgYGNhdXNlYCBzbyBgLS12ZXJib3NlYCBzdGlsbCBzdXJmYWNlc1xuICogdGhlIGV4aXQgY29kZSBhbmQgZ2l0J3Mgb3duIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1hcEdpdFJlbW90ZUFkZEVycm9yID0gKGNhdXNlOiB1bmtub3duKTogRXJyb3IgPT4ge1xuICBpZiAoXG4gICAgY2F1c2UgaW5zdGFuY2VvZiBFeGVjYUVycm9yICYmXG4gICAgY2F1c2UuZXhpdENvZGUgPT09IEdJVF9SRU1PVEVfQUxSRUFEWV9FWElTVFNfRVhJVF9DT0RFXG4gICkge1xuICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAgICBcIkEgZ2l0IHJlbW90ZSBuYW1lZCAnb3JpZ2luJyBhbHJlYWR5IGV4aXN0cy4gUmVtb3ZlIGl0IHdpdGggYGdpdCByZW1vdGUgcmVtb3ZlIG9yaWdpbmAgYW5kIHJ1biB0aGUgY29tbWFuZCBhZ2Fpbiwgb3Igc3RhcnQgZnJvbSBhIGNsZWFuIGRpcmVjdG9yeS5cIixcbiAgICAgIHsgY2F1c2UgfSxcbiAgICApO1xuICB9XG4gIHJldHVybiBuZXcgRXJyb3IoXG4gICAgXCJGYWlsZWQgdG8gc2V0IHVwIHRoZSBsb2NhbCBnaXQgcmVwb3NpdG9yeSBhbmQgaXRzICdvcmlnaW4nIHJlbW90ZS5cIixcbiAgICB7IGNhdXNlIH0sXG4gICk7XG59O1xuXG5jb25zdCBpbml0aWFsaXplR2l0UmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIgPVxuICAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyKSA9PiAocmVwb3NpdG9yeTogUmVwb3NpdG9yeSkgPT4ge1xuICAgIGNvbnN0IGJyYW5jaE5hbWUgPSBcImZlYXR1cmVzL3NjYWZmb2xkLXdvcmtzcGFjZVwiO1xuICAgIGNvbnN0IGdpdCQgPSAkKHtcbiAgICAgIHNoZWxsOiB0cnVlLFxuICAgIH0pO1xuICAgIGNvbnN0IGdpdFJlYWQkID0gJCh7XG4gICAgICByZWplY3Q6IGZhbHNlLFxuICAgICAgc2hlbGw6IHRydWUsXG4gICAgfSk7XG4gICAgY29uc3QgcmVhZEdpdENvbmZpZ1ZhbHVlID0gYXN5bmMgKFxuICAgICAga2V5OiBcInVzZXIuZW1haWxcIiB8IFwidXNlci5uYW1lXCIsXG4gICAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdpdFJlYWQkYGdpdCBjb25maWcgLS1nZXQgJHtrZXl9YDtcbiAgICAgIGNvbnN0IHZhbHVlID0gcmVzdWx0LnN0ZG91dC50cmltKCk7XG4gICAgICBjb25zdCBzdGRlcnIgPSAocmVzdWx0LnN0ZGVyciA/PyBcIlwiKS50cmltKCk7XG4gICAgICBjb25zdCBpc01pc3NpbmdWYWx1ZSA9XG4gICAgICAgIHJlc3VsdC5leGl0Q29kZSA9PT0gMSAmJiB2YWx1ZSA9PT0gXCJcIiAmJiBzdGRlcnIgPT09IFwiXCI7XG5cbiAgICAgIGlmIChpc01pc3NpbmdWYWx1ZSB8fCB2YWx1ZSA9PT0gXCJcIikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0LmV4aXRDb2RlICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBzdGRlcnIgPT09IFwiXCIgPyBgRmFpbGVkIHRvIHJlYWQgZ2l0IGNvbmZpZyAke2tleX1gIDogc3RkZXJyLFxuICAgICAgICAgIHsgY2F1c2U6IHJlc3VsdCB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBjb25zdCBjb21taXRTY2FmZm9sZCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IFtjb25maWd1cmVkR2l0VXNlck5hbWUsIGNvbmZpZ3VyZWRHaXRVc2VyRW1haWxdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIFtyZWFkR2l0Q29uZmlnVmFsdWUoXCJ1c2VyLm5hbWVcIiksIHJlYWRHaXRDb25maWdWYWx1ZShcInVzZXIuZW1haWxcIildLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGhhc0NvbmZpZ3VyZWRHaXRJZGVudGl0eSA9XG4gICAgICAgIGNvbmZpZ3VyZWRHaXRVc2VyTmFtZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGNvbmZpZ3VyZWRHaXRVc2VyRW1haWwgIT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGhhc0NvbmZpZ3VyZWRHaXRJZGVudGl0eSkge1xuICAgICAgICBhd2FpdCBnaXQkYGdpdCBjb21taXQgLS1uby1ncGctc2lnbiAtbSBcIlNjYWZmb2xkIHdvcmtzcGFjZVwiYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGBnaXQgLWNgIGFwcGxpZXMgdGhlIGZhbGxiYWNrIGlkZW50aXR5IG9ubHkgdG8gdGhpcyBzY2FmZm9sZCBjb21taXQsIHNvXG4gICAgICAgIC8vIHRoZSBnZW5lcmF0ZWQgcmVwb3NpdG9yeSBkb2VzIG5vdCBwZXJzaXN0IGJvdCBkZWZhdWx0cyBpbiBsb2NhbCBjb25maWcuXG4gICAgICAgIGF3YWl0IGdpdCRgZ2l0IC1jIHVzZXIubmFtZT0ke0RFRkFVTFRfU0NBRkZPTERfR0lUX1VTRVJfTkFNRX0gLWMgdXNlci5lbWFpbD0ke0RFRkFVTFRfU0NBRkZPTERfR0lUX1VTRVJfRU1BSUx9IGNvbW1pdCAtLW5vLWdwZy1zaWduIC1tIFwiU2NhZmZvbGQgd29ya3NwYWNlXCJgO1xuICAgICAgfVxuICAgIH07XG4gICAgLy8gYGdpdCByZW1vdGUgYWRkYCBpcyB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSB0aGUgcHVzaCBzbyBpdHMgZG9jdW1lbnRlZFxuICAgIC8vIGV4aXQgY29kZXMgKGUuZy4gMyA9IHJlbW90ZSBhbHJlYWR5IGV4aXN0cykgc3VyZmFjZSBhIHNwZWNpZmljLCBhY3Rpb25hYmxlXG4gICAgLy8gbWVzc2FnZSBpbnN0ZWFkIG9mIGJlaW5nIG1pc3JlcG9ydGVkIGFzIGEgcHVzaCBmYWlsdXJlLlxuICAgIGNvbnN0IGNvbmZpZ3VyZVJlbW90ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGdpdCRgZ2l0IGluaXRgO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgcmVtb3RlIGFkZCBvcmlnaW4gJHtyZXBvc2l0b3J5Lm9yaWdpbn1gO1xuICAgIH07XG4gICAgY29uc3QgcHVzaFRvT3JpZ2luID0gYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgZmV0Y2ggb3JpZ2luIG1haW5gO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgY2hlY2tvdXQgLWIgJHticmFuY2hOYW1lfWA7XG4gICAgICAvLyBUZXJyYWZvcm0gY3JlYXRlcyBgbWFpbmAgd2l0aCBhbiBpbml0aWFsIFJFQURNRSBjb21taXQuXG4gICAgICAvLyBSZXNldCB0byBgb3JpZ2luL21haW5gIHNvIHRoaXMgYnJhbmNoIGlzIGJhc2VkIG9uIHRoZSByZW1vdGUgZGVmYXVsdCBicmFuY2gsXG4gICAgICAvLyB3aGlsZSBrZWVwaW5nIHRoZSBzY2FmZm9sZGVkIGxvY2FsIGZpbGVzIGluIHRoZSB3b3JraW5nIHRyZWUgZm9yIGEgY2xlYW4gUFIgZGlmZi5cbiAgICAgIGF3YWl0IGdpdCRgZ2l0IHJlc2V0IG9yaWdpbi9tYWluYDtcbiAgICAgIGF3YWl0IGdpdCRgZ2l0IGFkZCAuYDtcbiAgICAgIGF3YWl0IGNvbW1pdFNjYWZmb2xkKCk7XG4gICAgICBhd2FpdCBnaXQkYGdpdCBwdXNoIC11IG9yaWdpbiAke2JyYW5jaE5hbWV9YDtcbiAgICB9O1xuICAgIHJldHVybiB0cmFja1N0ZXAoXG4gICAgICBwcmVzZW50ZXIsXG4gICAgICBcIkNvbmZpZ3VyaW5nIHRoZSBnaXQgcmVtb3RlLi4uXCIsXG4gICAgICBjb25maWd1cmVSZW1vdGUsXG4gICAgICBtYXBHaXRSZW1vdGVBZGRFcnJvcixcbiAgICApXG4gICAgICAuYW5kVGhlbigoKSA9PlxuICAgICAgICB0cmFja1N0ZXAoXG4gICAgICAgICAgcHJlc2VudGVyLFxuICAgICAgICAgIFwiUHVzaGluZyBjb2RlIHRvIEdpdEh1Yi4uLlwiLFxuICAgICAgICAgIHB1c2hUb09yaWdpbixcbiAgICAgICAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIHB1c2ggY29kZSB0byBHaXRIdWIuXCIpLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLm1hcCgoKSA9PiAoeyBicmFuY2hOYW1lLCByZXBvc2l0b3J5IH0pKTtcbiAgfTtcblxuY29uc3QgY3JlYXRlUHVsbFJlcXVlc3RXaXRoUHJlc2VudGVyID1cbiAgKHsgZ2l0SHViU2VydmljZSwgcHJlc2VudGVyIH06IEluaXRBY3Rpb25Db250ZXh0KSA9PlxuICAoe1xuICAgIGJyYW5jaE5hbWUsXG4gICAgcmVwb3NpdG9yeSxcbiAgfTogTG9jYWxXb3Jrc3BhY2UpOiBSZXN1bHRBc3luYzxQdWxsUmVxdWVzdCB8IHVuZGVmaW5lZCwgRXJyb3I+ID0+XG4gICAgdHJhY2tTdGVwKFxuICAgICAgcHJlc2VudGVyLFxuICAgICAgXCJDcmVhdGluZyBQdWxsIFJlcXVlc3QuLi5cIixcbiAgICAgICgpID0+XG4gICAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlUHVsbFJlcXVlc3Qoe1xuICAgICAgICAgIGJhc2U6IFwibWFpblwiLFxuICAgICAgICAgIGJvZHk6IFwiVGhpcyBQUiBjb250YWlucyB0aGUgc2NhZmZvbGRlZCBtb25vcmVwbyBzdHJ1Y3R1cmUuXCIsXG4gICAgICAgICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICAgICAgICBvd25lcjogcmVwb3NpdG9yeS5vd25lcixcbiAgICAgICAgICByZXBvOiByZXBvc2l0b3J5Lm5hbWUsXG4gICAgICAgICAgdGl0bGU6IFwiU2NhZmZvbGQgcmVwb3NpdG9yeVwiLFxuICAgICAgICB9KSxcbiAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIFB1bGwgUmVxdWVzdC5cIiksXG4gICAgKVxuICAgICAgLy8gSWYgUFIgY3JlYXRpb24gZmFpbHMsIGRvbid0IGJsb2NrIHRoZSB3b3JrZmxvd1xuICAgICAgLm9yRWxzZSgoKSA9PiBva0FzeW5jKHVuZGVmaW5lZCkpO1xuXG5jb25zdCBoYW5kbGVOZXdHaXRIdWJSZXBvc2l0b3J5V2l0aFByZXNlbnRlciA9XG4gIChjb250ZXh0OiBJbml0QWN0aW9uQ29udGV4dCkgPT5cbiAgKHBheWxvYWQ6IE1vbm9yZXBvUGF5bG9hZCk6IFJlc3VsdEFzeW5jPFJlcG9zaXRvcnlQdWxsUmVxdWVzdCwgRXJyb3I+ID0+XG4gICAgY3JlYXRlUmVtb3RlUmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIoY29udGV4dC5wcmVzZW50ZXIpKHBheWxvYWQpXG4gICAgICAuYW5kVGhlbihpbml0aWFsaXplR2l0UmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIoY29udGV4dC5wcmVzZW50ZXIpKVxuICAgICAgLmFuZFRoZW4oKGxvY2FsV29ya3NwYWNlKSA9PlxuICAgICAgICBjcmVhdGVQdWxsUmVxdWVzdFdpdGhQcmVzZW50ZXIoY29udGV4dCkobG9jYWxXb3Jrc3BhY2UpLm1hcCgocHIpID0+ICh7XG4gICAgICAgICAgcHIsXG4gICAgICAgICAgcmVwb3NpdG9yeTogbG9jYWxXb3Jrc3BhY2UucmVwb3NpdG9yeSxcbiAgICAgICAgfSkpLFxuICAgICAgKTtcblxuY29uc3QgaGFuZGxlR2VuZXJhdG9yRXJyb3IgPSAoZXJyOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJkeC1jbGlcIiwgXCJpbml0XCJdKTtcbiAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVyci5tZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gbmV3IEVycm9yKFwiRmFpbGVkIHRvIHJ1biB0aGUgZ2VuZXJhdG9yXCIsIHsgY2F1c2U6IGVyciB9KTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2hldGhlciB0aGUgc2NhZmZvbGRlZCByZXBvc2l0b3J5IHNob3VsZCBiZSBwdWJsaXNoZWQgdG8gR2l0SHViLlxuICpcbiAqIFdoZW4gdGhlIGNhbGxlciBhbHJlYWR5IGtub3dzIHRoZSBhbnN3ZXIgKGUuZy4gdGhlIHVzZXIgcGFzc2VkIGAtLXB1Ymxpc2hgXG4gKiBvbiB0aGUgY29tbWFuZCBsaW5lKSwgdGhhdCB2YWx1ZSBpcyB1c2VkIGFzLWlzIGFuZCBubyBwcm9tcHQgaXMgc2hvd24uIFdoZW5cbiAqIHRoZSBwcmVmZXJlbmNlIGlzIGxlZnQgdW5kZWZpbmVkIChmbGFnIG9taXR0ZWQpLCB0aGUgdXNlciBpcyBhc2tlZFxuICogaW50ZXJhY3RpdmVseS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbmZpcm1HaXRIdWJSZXBvQ3JlYXRpb24gPSAoXG4gIHBheWxvYWQ6IE1vbm9yZXBvUGF5bG9hZCxcbiAgcHVibGlzaFByZWZlcmVuY2U/OiBib29sZWFuLFxuKTogUmVzdWx0QXN5bmM8Ym9vbGVhbiwgRXJyb3I+ID0+XG4gIC8vIEEgcHJlZmVyZW5jZSBwcm92aWRlZCB1cC1mcm9udCAodmlhIGAtLXB1Ymxpc2hgKSBza2lwcyB0aGUgaW50ZXJhY3RpdmUgcHJvbXB0LlxuICBwdWJsaXNoUHJlZmVyZW5jZSAhPT0gdW5kZWZpbmVkXG4gICAgPyBva0FzeW5jKHB1Ymxpc2hQcmVmZXJlbmNlKVxuICAgIDogUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgIGlucXVpcmVyLnByb21wdCh7XG4gICAgICAgICAgZGVmYXVsdDogREVGQVVMVF9HSVRIVUJfUFVCTElTSF9DT05GSVJNQVRJT04sXG4gICAgICAgICAgbWVzc2FnZTogYFRoZSBwcm9qZWN0IGlzIGNyZWF0ZWQgb24gJHtjaGFsay5ncmVlbihwYXlsb2FkLnJlcG9OYW1lKX0uIFdvdWxkIHlvdSBsaWtlIHRvIHB1Ymxpc2ggaXQgdG8gR2l0SHViIGF0ICR7Y2hhbGsuZ3JlZW4oYCR7cGF5bG9hZC5yZXBvT3duZXJ9LyR7cGF5bG9hZC5yZXBvTmFtZX1gKX0gbm93P2AsXG4gICAgICAgICAgbmFtZTogXCJjb25maXJtXCIsXG4gICAgICAgICAgdHlwZTogXCJjb25maXJtXCIsXG4gICAgICAgIH0pLFxuICAgICAgICAoY2F1c2UpID0+XG4gICAgICAgICAgbmV3IEVycm9yKFwiRmFpbGVkIHRvIHJlYWQgR2l0SHViIHB1Ymxpc2ggY29uZmlybWF0aW9uXCIsIHsgY2F1c2UgfSksXG4gICAgICApLmFuZFRoZW4oKGFuc3dlcikgPT4ge1xuICAgICAgICBjb25zdCBwYXJzZWRBbnN3ZXIgPSB6XG4gICAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgICBjb25maXJtOiB6LmJvb2xlYW4oKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zYWZlUGFyc2UoYW5zd2VyKTtcbiAgICAgICAgaWYgKCFwYXJzZWRBbnN3ZXIuc3VjY2Vzcykge1xuICAgICAgICAgIHJldHVybiBlcnJBc3luYyhcbiAgICAgICAgICAgIG5ldyBFcnJvcihcIkludmFsaWQgR2l0SHViIHB1Ymxpc2ggY29uZmlybWF0aW9uXCIsIHtcbiAgICAgICAgICAgICAgY2F1c2U6IHBhcnNlZEFuc3dlci5lcnJvcixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2tBc3luYyhwYXJzZWRBbnN3ZXIuZGF0YS5jb25maXJtKTtcbiAgICAgIH0pO1xuXG5jb25zdCBydW5Jbml0QWN0aW9uID0gKHtcbiAgZ2l0SHViU2VydmljZSxcbiAgaW5pdGlhbEFuc3dlcnMgPSB7fSxcbiAgcHJlc2VudGVyLFxufTogSW5pdEFjdGlvbkNvbnRleHQpOiBSZXN1bHRBc3luYzxTdW1tYXJ5SW5wdXQsIEVycm9yPiA9PiB7XG4gIGNvbnN0IHsgcHVibGlzaFRvR2l0SHViLCAuLi5tb25vcmVwb0luaXRpYWxBbnN3ZXJzIH0gPSBpbml0aWFsQW5zd2VycztcblxuICByZXR1cm4gdHJhY2tTdGVwKFxuICAgIHByZXNlbnRlcixcbiAgICBcIkluaXRpYWxpemluZyB3b3Jrc3BhY2UgZ2VuZXJhdG9yLi4uXCIsXG4gICAgZ2V0UGxvcEluc3RhbmNlLFxuICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwbG9wXCIpLFxuICApXG4gICAgLmFuZFRoZW4oKHBsb3ApID0+XG4gICAgICAvLyBUaGUgcHJvbXB0IHBoYXNlIG11c3QgcnVuIG91dHNpZGUgdHJhY2tTdGVwOiBpbiB0ZXh0IG1vZGUgdHJhY2tTdGVwXG4gICAgICAvLyByZW5kZXJzIGEgc3Bpbm5lciB0aGF0IG9jY3VwaWVzIHRoZSBUVFkgYW5kIGhpZGVzIHRoZSBwcm9tcHRzLlxuICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgIGNvbGxlY3RNb25vcmVwb1BheWxvYWQocGxvcCwgZ2l0SHViU2VydmljZSwgbW9ub3JlcG9Jbml0aWFsQW5zd2VycyksXG4gICAgICAgIGhhbmRsZUdlbmVyYXRvckVycm9yLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRoZW4oKHsgZ2VuZXJhdG9yLCBwYXlsb2FkIH0pID0+XG4gICAgICB0cmFja1N0ZXAoXG4gICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgXCJTY2FmZm9sZGluZyB3b3Jrc3BhY2UuLi5cIixcbiAgICAgICAgKCkgPT4gcnVuTW9ub3JlcG9BY3Rpb25zKGdlbmVyYXRvciwgcGF5bG9hZCksXG4gICAgICAgIGhhbmRsZUdlbmVyYXRvckVycm9yLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRlZSgocGF5bG9hZCkgPT4ge1xuICAgICAgcHJvY2Vzcy5jaGRpcihwYXlsb2FkLnJlcG9OYW1lKTtcbiAgICB9KVxuICAgIC5hbmRUaGVuKChwYXlsb2FkKSA9PlxuICAgICAgY29uZmlybUdpdEh1YlJlcG9DcmVhdGlvbihwYXlsb2FkLCBwdWJsaXNoVG9HaXRIdWIpLmFuZFRoZW48XG4gICAgICAgIFN1bW1hcnlJbnB1dCxcbiAgICAgICAgRXJyb3JcbiAgICAgID4oKGNvbmZpcm1lZCkgPT5cbiAgICAgICAgY29uZmlybWVkXG4gICAgICAgICAgPyBoYW5kbGVOZXdHaXRIdWJSZXBvc2l0b3J5V2l0aFByZXNlbnRlcih7XG4gICAgICAgICAgICAgIGdpdEh1YlNlcnZpY2UsXG4gICAgICAgICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgICAgIH0pKHBheWxvYWQpXG4gICAgICAgICAgOiBva0FzeW5jKHsgZ2l0SHViUmVwb0NyZWF0aW9uU2tpcHBlZDogdHJ1ZSwgcGF5bG9hZCB9KSxcbiAgICAgICksXG4gICAgKTtcbn07XG5cbmNvbnN0IHJlcG9ydFN1bW1hcnkgPVxuICAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLCBvdXRwdXRNb2RlOiBcImpzb25cIiB8IFwidGV4dFwiKSA9PlxuICAocmVzdWx0OiBTdW1tYXJ5SW5wdXQpID0+IHtcbiAgICBpZiAob3V0cHV0TW9kZSA9PT0gXCJqc29uXCIpIHtcbiAgICAgIHByZXNlbnRlci5yZXBvcnRSZXN1bHQocmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGxheVN1bW1hcnkocmVzdWx0KTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBtYWtlSW5pdENvbW1hbmQgPSAoXG4gIHJlcXVpcmVHaXRIdWJBdXRoOiBHaXRIdWJBdXRoRmFjdG9yeSxcbiAgZW52OiBDbGlFbnYsXG4pOiBDb21tYW5kID0+XG4gIG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImluaXRcIilcbiAgICAuZGVzY3JpcHRpb24oXCJJbml0aWFsaXplIGEgbmV3IERYIHdvcmtzcGFjZVwiKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbihcIi0tbmFtZSA8bmFtZT5cIiwgXCJSZXBvc2l0b3J5IG5hbWVcIikpXG4gICAgLmFkZE9wdGlvbihcbiAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgIFwiLS1vd25lciA8b3duZXI+XCIsXG4gICAgICAgIFwiR2l0SHViIG9yZ2FuaXphdGlvbiBvciB1c2VyIHRoYXQgd2lsbCBvd24gdGhlIHJlcG9zaXRvcnlcIixcbiAgICAgICksXG4gICAgKVxuICAgIC5hZGRPcHRpb24oXG4gICAgICBuZXcgT3B0aW9uKFwiLS1kZXNjcmlwdGlvbiA8ZGVzY3JpcHRpb24+XCIsIFwiUmVwb3NpdG9yeSBkZXNjcmlwdGlvblwiKSxcbiAgICApXG4gICAgLmFkZE9wdGlvbihcbiAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgIFwiLS1wdWJsaXNoXCIsXG4gICAgICAgIFwiUHVibGlzaCB0aGUgc2NhZmZvbGRlZCByZXBvc2l0b3J5IHRvIEdpdEh1YiB3aXRob3V0IHByb21wdGluZ1wiLFxuICAgICAgKS5kZWZhdWx0KHVuZGVmaW5lZCksXG4gICAgKVxuICAgIC5hY3Rpb24oYXN5bmMgZnVuY3Rpb24gKG9wdGlvbnM6IHVua25vd24pIHtcbiAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSB0aGlzLm9wdHNXaXRoR2xvYmFsczxHbG9iYWxPcHRpb25zPigpO1xuICAgICAgY29uc3Qgb3V0cHV0TW9kZSA9IHJlc29sdmVPdXRwdXRNb2RlKGVudiwgb3V0cHV0KTtcbiAgICAgIGNvbnN0IHByZXNlbnRlciA9IGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIob3V0cHV0TW9kZSk7XG5cbiAgICAgIGF3YWl0IFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHBhcnNlSW5pdENvbW1hbmRPcHRpb25zKG9wdGlvbnMpKSxcbiAgICAgICAgKGNhdXNlKSA9PlxuICAgICAgICAgIGNhdXNlIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgID8gY2F1c2VcbiAgICAgICAgICAgIDogbmV3IEVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIGluaXQgY29tbWFuZCBvcHRpb25zXCIsIHsgY2F1c2UgfSksXG4gICAgICApXG4gICAgICAgIC5hbmRUaGVuKChpbml0T3B0aW9ucykgPT5cbiAgICAgICAgICBydW5Jbml0UHJlY29uZGl0aW9ucyhwcmVzZW50ZXIpXG4gICAgICAgICAgICAuYW5kVGhlbigoKSA9PiByZXF1aXJlR2l0SHViQXV0aCgpKVxuICAgICAgICAgICAgLmFuZFRoZW4oKGF1dGgpID0+XG4gICAgICAgICAgICAgIHJ1bkluaXRBY3Rpb24oe1xuICAgICAgICAgICAgICAgIGdpdEh1YlNlcnZpY2U6IGF1dGguZ2l0SHViU2VydmljZSxcbiAgICAgICAgICAgICAgICBpbml0aWFsQW5zd2VyczogZ2V0TW9ub3JlcG9Jbml0aWFsQW5zd2Vycyhpbml0T3B0aW9ucyksXG4gICAgICAgICAgICAgICAgcHJlc2VudGVyLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgLm1hdGNoKFxuICAgICAgICAgIHJlcG9ydFN1bW1hcnkocHJlc2VudGVyLCBvdXRwdXRNb2RlKSxcbiAgICAgICAgICByZXBvcnRDb21tYW5kRXJyb3IodGhpcywgcHJlc2VudGVyLCBvdXRwdXRNb2RlKSxcbiAgICAgICAgKTtcbiAgICB9KTtcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/dx-cli",
3
- "version": "0.25.1",
3
+ "version": "0.25.3",
4
4
  "type": "module",
5
5
  "description": "A CLI useful to manage DX tools.",
6
6
  "repository": {
@@ -14,7 +14,7 @@ terraform {
14
14
 
15
15
  github = {
16
16
  source = "integrations/github"
17
- version = "~> 6.0"
17
+ version = "~> 6.12"
18
18
  }
19
19
  }
20
20
  }
@@ -2,7 +2,7 @@ terraform {
2
2
  required_providers {
3
3
  github = {
4
4
  source = "integrations/github"
5
- version = "~> 6.0"
5
+ version = "~> 6.12"
6
6
  }
7
7
  }
8
8
  }