sliftutils 1.9.3 → 1.9.7

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.
Files changed (35) hide show
  1. package/misc/dist/strings.ts.cache +2 -2
  2. package/misc/https/dist/certs.ts.cache +2 -2
  3. package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
  4. package/package.json +1 -1
  5. package/render-utils/Input.tsx +5 -0
  6. package/security/authorizedKeys/daemon/dist/changes.ts.cache +2 -2
  7. package/security/authorizedKeys/daemon/dist/git.ts.cache +2 -2
  8. package/security/authorizedKeys/daemon/dist/notify.ts.cache +2 -2
  9. package/security/authorizedKeys/daemon/dist/paths.ts.cache +2 -2
  10. package/security/authorizedKeys/daemon/dist/readSignedRepo.ts.cache +2 -2
  11. package/security/authorizedKeys/daemon/dist/repoFiles.ts.cache +2 -2
  12. package/security/authorizedKeys/daemon/dist/revocation.ts.cache +6 -6
  13. package/security/authorizedKeys/daemon/dist/sessions.ts.cache +2 -2
  14. package/security/authorizedKeys/daemon/dist/state.ts.cache +2 -2
  15. package/security/authorizedKeys/daemon/revocation.d.ts +2 -2
  16. package/security/authorizedKeys/daemon/revocation.ts +4 -3
  17. package/security/authorizedKeys/dist/authorizedKeys.ts.cache +2 -2
  18. package/security/authorizedKeys/dist/keysRepo.ts.cache +2 -2
  19. package/security/authorizedKeys/dist/revokeSource.ts.cache +2 -2
  20. package/security/authorizedKeys/dist/sources.ts.cache +2 -2
  21. package/security/authorizedKeys/dist/unrevoke.ts.cache +16 -7
  22. package/security/authorizedKeys/unrevoke.ts +12 -5
  23. package/security/helpers/dist/paths.ts.cache +2 -2
  24. package/security/helpers/dist/remoteSSH.ts.cache +2 -2
  25. package/security/helpers/dist/spawn.ts.cache +2 -2
  26. package/security/keys/dist/deriveKey.ts.cache +2 -2
  27. package/security/keys/dist/sshKeyFile.ts.cache +2 -2
  28. package/security/machines/dist/machines.ts.cache +26 -14
  29. package/security/machines/dist/printMachineId.ts.cache +4 -3
  30. package/security/machines/machines.d.ts +1 -0
  31. package/security/machines/machines.ts +25 -12
  32. package/security/notifications/dist/discord.ts.cache +2 -2
  33. package/security/signedFiles/dist/manifest.ts.cache +2 -2
  34. package/security/signedFiles/dist/sshsig.ts.cache +2 -2
  35. package/storage/remoteStorage/storageController.ts +2 -1
@@ -66,15 +66,22 @@ export async function readRemoteRevocations(config: { sourceURL: string }) {
66
66
  }
67
67
  let revocations: Revocation[] = [];
68
68
  let directory = path.join(repoPath, REVOCATIONS_DIR);
69
+ let names: string[] = [];
69
70
  try {
70
- for (let name of (await fs.readdir(directory)).sort()) {
71
- if (name.endsWith(".json")) {
72
- revocations.push(JSON.parse(await fs.readFile(path.join(directory, name), "utf8")));
73
- }
74
- }
71
+ names = (await fs.readdir(directory)).sort();
75
72
  } catch (e) {
76
73
  // No revocations directory at all just means nothing has ever been revoked.
77
74
  }
75
+ for (let name of names) {
76
+ if (!name.endsWith(".json")) {
77
+ continue;
78
+ }
79
+ try {
80
+ revocations.push(JSON.parse(await fs.readFile(path.join(directory, name), "utf8")));
81
+ } catch (e) {
82
+ console.log(`Ignoring unreadable revocation ${REVOCATIONS_DIR}/${name} in ${revokeRepoURL(sourceURL)}. ${(e as Error).stack ?? e}`);
83
+ }
84
+ }
78
85
  await fs.rm(temporaryDirectory, { recursive: true, force: true });
79
86
  return revocations;
80
87
  }
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -25,4 +25,4 @@ function expandHome(filePath) {
25
25
  }
26
26
  exports.expandHome = expandHome;
27
27
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBRXhCOztnQ0FFZ0M7QUFDaEMsU0FBZ0IsVUFBVSxDQUFDLFFBQWdCO0lBQ3ZDLElBQUksUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE9BQU8sWUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFELE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxZQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQix5RkFBeUY7UUFDekYsa0RBQWtEO1FBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLFFBQVEsaUVBQWlFLENBQUMsQ0FBQztJQUN0SSxDQUFDO0lBQ0QsT0FBTyxjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFiRCxnQ0FhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbi8qKiBXaW5kb3dzIHNoZWxscyBkbyBub3QgZXhwYW5kIH4gdGhlbXNlbHZlcywgYW5kIGh1bnRpbmcgZG93biB5b3VyIGhvbWUgZm9sZGVyIGJ5IGhhbmQgaXNcbiAgICBhbm5veWluZywgc28gd2UgZXhwYW5kIGl0IG9uIGV2ZXJ5IHBsYXRmb3JtLiBCb3RoIHNlcGFyYXRvcnMgYXJlIGFjY2VwdGVkLCBiZWNhdXNlIGEgV2luZG93c1xuICAgIHVzZXIgbWF5IHR5cGUgZWl0aGVyIG9uZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBhbmRIb21lKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAoZmlsZVBhdGggPT09IFwiflwiKSB7XG4gICAgICAgIHJldHVybiBvcy5ob21lZGlyKCk7XG4gICAgfVxuICAgIGlmIChmaWxlUGF0aC5zdGFydHNXaXRoKFwifi9cIikgfHwgZmlsZVBhdGguc3RhcnRzV2l0aChcIn5cXFxcXCIpKSB7XG4gICAgICAgIHJldHVybiBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCBmaWxlUGF0aC5zbGljZSgyKSk7XG4gICAgfVxuICAgIGlmIChmaWxlUGF0aC5zdGFydHNXaXRoKFwiflwiKSkge1xuICAgICAgICAvLyB+b3RoZXJ1c2VyIG5lZWRzIGFuIGFjY291bnQgZGF0YWJhc2Ugd2UgY2Fubm90IHJlYWQgcG9ydGFibHksIGFuZCBxdWlldGx5IHJlc29sdmluZyBpdFxuICAgICAgICAvLyB0byB0aGUgd3JvbmcgaG9tZSB3b3VsZCBiZSB3b3JzZSB0aGFuIHJlZnVzaW5nLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIH4gb3IgYW4gb3JkaW5hcnkgcGF0aCwgd2FzICR7ZmlsZVBhdGh9LiBSZWZlcnJpbmcgdG8gYW5vdGhlciB1c2VyJ3MgaG9tZSB3aXRoIH5uYW1lIGlzIG5vdCBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoLnJlc29sdmUoZmlsZVBhdGgpO1xufVxuIl19
28
- /* _JS_SOURCE_HASH = "493654cc4781cc00e46bb1f87e8f539ef3884ca93d7ce6173bbd46a2bd648be8"; */
28
+ /* _JS_SOURCE_HASH = "aa5698729d5def416d177e211ac514eed7d8c8fcb796c68dcc520ddf0d83526b"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.remoteCommandExists = exports.writeRemoteFile = exports.readRemoteFile = exports.runOverSSH = exports.describeHost = exports.THIS_MACHINE = exports.SUDO_PREAMBLE = void 0;
4
4
  const spawn_1 = require("./spawn");
@@ -97,4 +97,4 @@ async function remoteCommandExists(config) {
97
97
  }
98
98
  exports.remoteCommandExists = remoteCommandExists;
99
99
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlU1NILmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVtb3RlU1NILnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUF1QztBQUV2QyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQUMvQixNQUFNLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQztBQUM5QyxNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQztBQUNoRCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUVsQyw4RUFBOEU7QUFDakUsUUFBQSxhQUFhLEdBQUcsMkRBQTJELENBQUM7QUFFekY7OzZCQUU2QjtBQUNoQixRQUFBLFlBQVksR0FBRyxFQUFFLENBQUM7QUFFL0IsU0FBZ0IsWUFBWSxDQUFDLElBQVk7SUFDckMsT0FBTyxJQUFJLElBQUksY0FBYyxDQUFDO0FBQ2xDLENBQUM7QUFGRCxvQ0FFQztBQUVEO3dGQUN3RjtBQUNqRixLQUFLLFVBQVUsVUFBVSxDQUFDLE1BQWdGO0lBQzdHLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDbkQsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFBLG9CQUFZLEVBQUM7UUFDNUIsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLElBQUksSUFBSTtRQUM5QixJQUFJLEVBQUUsSUFBSSxJQUFJO1lBQ1YsSUFBSSxFQUFFLGVBQWU7WUFDckIsSUFBSSxFQUFFLGtCQUFrQixtQkFBbUIsRUFBRTtZQUM3QyxJQUFJO1lBQ0osTUFBTTtTQUNULElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ25CLEtBQUs7UUFDTCxhQUFhLEVBQUUsQ0FBQyxZQUFZO0tBQy9CLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIs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LEdBQUcsTUFBTSxVQUFVLENBQUM7UUFDMUIsSUFBSTtRQUNKLE1BQU0sRUFBRSxlQUFlLE9BQU8sMkNBQTJDO1FBQ3pFLFlBQVksRUFBRSxJQUFJO0tBQ3JCLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUM7QUFDMUMsQ0FBQztBQVJELGtEQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd25Qcm9taXNlIH0gZnJvbSBcIi4vc3Bhd25cIjtcblxuY29uc3QgU1NIX0NPTk5FQ1RfVElNRU9VVCA9IDEwO1xuY29uc3QgRVhJU1RTX01BUktFUiA9IFwiX19QT1JUU0VDVVJFX0VYSVNUU19fXCI7XG5jb25zdCBNSVNTSU5HX01BUktFUiA9IFwiX19QT1JUU0VDVVJFX01JU1NJTkdfX1wiO1xuY29uc3QgTUFYX0VSUk9SX0JPRFlfTEVOR1RIID0gNTAwO1xuXG4vLyAvZXRjIGlzIHJvb3Qgb3duZWQsIHNvIGZhbGwgYmFjayB0byBzdWRvIHdoZW5ldmVyIHRoZSBTU0ggdXNlciBpcyBub3Qgcm9vdC5cbmV4cG9ydCBjb25zdCBTVURPX1BSRUFNQkxFID0gYFNVRE89XCJcIjsgaWYgWyBcIiQoaWQgLXUpXCIgLW5lIDAgXTsgdGhlbiBTVURPPVwic3VkbyAtblwiOyBmaWA7XG5cbi8qKiBObyBob3N0IG1lYW5zIHRoaXMgbWFjaGluZSwgc28gdGhlIHZlcnkgc2FtZSBzY3JpcHQgcnVucyB3aXRoIG5vdGhpbmcgaW4gZnJvbnQgb2YgaXQuIExvY2FsIGFuZFxuICAgIHJlbW90ZSB0aGVuIGRvIGV4YWN0bHkgdGhlIHNhbWUgdGhpbmcsIHJhdGhlciB0aGFuIGJlaW5nIHR3byBwaWVjZXMgb2YgY29kZSB0aGF0IGhhdmUgdG8gYmUga2VwdFxuICAgIHNheWluZyB0aGUgc2FtZSB0aGluZy4gKi9cbmV4cG9ydCBjb25zdCBUSElTX01BQ0hJTkUgPSBcIlwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVIb3N0KGhvc3Q6IHN0cmluZykge1xuICAgIHJldHVybiBob3N0IHx8IFwidGhpcyBtYWNoaW5lXCI7XG59XG5cbi8qKiBUaGUgaG9zdCBzdHJpbmcgaXMgaGFuZGVkIHRvIHNzaCB1bnRvdWNoZWQuIFVzZXJzLCBrZXlzIGFuZCBwb3J0cyBiZWxvbmcgaW4gdGhlIGNhbGxlcidzIHNzaFxuICAgIGNvbmZpZywgc28gQmF0Y2hNb2RlIG1ha2VzIGEgbWlzc2luZyBzZXR1cCBmYWlsIGltbWVkaWF0ZWx5IGluc3RlYWQgb2YgcHJvbXB0aW5nLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bk92ZXJTU0goY29uZmlnOiB7IGhvc3Q6IHN0cmluZzsgc2NyaXB0OiBzdHJpbmc7IGlucHV0Pzogc3RyaW5nOyBhbGxvd0ZhaWx1cmU/OiBib29sZWFuIH0pIHtcbiAgICBsZXQgeyBob3N0LCBzY3JpcHQsIGlucHV0LCBhbGxvd0ZhaWx1cmUgfSA9IGNvbmZpZztcbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgc3Bhd25Qcm9taXNlKHtcbiAgICAgICAgY29tbWFuZDogaG9zdCAmJiBcInNzaFwiIHx8IFwic2hcIixcbiAgICAgICAgYXJnczogaG9zdCAmJiBbXG4gICAgICAgICAgICBcIi1vXCIsIFwiQmF0Y2hNb2RlPXllc1wiLFxuICAgICAgICAgICAgXCItb1wiLCBgQ29ubmVjdFRpbWVvdXQ9JHtTU0hfQ09OTkVDVF9USU1FT1VUfWAsXG4gICAgICAgICAgICBob3N0LFxuICAgICAgICAgICAgc2NyaXB0LFxuICAgICAgICBdIHx8IFtcIi1jXCIsIHNjcmlwdF0sXG4gICAgICAgIGlucHV0LFxuICAgICAgICBpbmhlcml0U3RkZXJyOiAhYWxsb3dGYWlsdXJlLFxuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0byBydW4gYWdhaW5zdCAke2Rlc2NyaWJlSG9zdChob3N0KX0sIGZhaWxlZCB3aXRoICR7cmVzdWx0LmVycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQuc3RhdHVzICE9PSAwICYmICFhbGxvd0ZhaWx1cmUpIHtcbiAgICAgICAgbGV0IGFkdmljZSA9IGhvc3RcbiAgICAgICAgICAgICYmIGAgTm9uLWludGVyYWN0aXZlIHNzaCBhY2Nlc3MgdG8gJHtob3N0fSBoYXMgdG8gd29yayBvbiBpdHMgb3duIC0gZml4IGl0IGluIHlvdXIgc3NoIGNvbmZpZy5gXG4gICAgICAgICAgICB8fCBcIlwiO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgRXhwZWN0ZWQgdGhlIHNjcmlwdCBvbiAke2Rlc2NyaWJlSG9zdChob3N0KX0gdG8gZXhpdCAwLCB3YXMgJHtyZXN1bHQuc3RhdHVzfS4ke2FkdmljZX1cXG5gXG4gICAgICAgICAgICArIGAkeyhyZXN1bHQuc3Rkb3V0ICsgcmVzdWx0LnN0ZGVycikudHJpbSgpLnNsaWNlKDAsIE1BWF9FUlJPUl9CT0RZX0xFTkdUSCl9YFxuICAgICAgICApO1xuICAgIH1cbiAgICByZXR1cm4geyBzdGRvdXQ6IHJlc3VsdC5zdGRvdXQgfHwgXCJcIiwgc3RkZXJyOiByZXN1bHQuc3RkZXJyIHx8IFwiXCIsIHN0YXR1czogcmVzdWx0LnN0YXR1cyB9O1xufVxuXG4vKiogUmV0dXJucyB1bmRlZmluZWQgd2hlbiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgc28gYSBtaXNzaW5nIGZpbGUgcmVhZHMgZGlmZmVyZW50bHkgZnJvbSBhblxuICAgIGVtcHR5IG9uZS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUmVtb3RlRmlsZShjb25maWc6IHsgaG9zdDogc3RyaW5nOyBmaWxlUGF0aDogc3RyaW5nIH0pIHtcbiAgICBsZXQgeyBob3N0LCBmaWxlUGF0aCB9ID0gY29uZmlnO1xuICAgIGxldCBvdXRwdXQgPSAoYXdhaXQgcnVuT3ZlclNTSCh7XG4gICAgICAgIGhvc3QsXG4gICAgICAgIHNjcmlwdDogYCR7U1VET19QUkVBTUJMRX1cbmlmICRTVURPIHRlc3QgLWYgXCIke2ZpbGVQYXRofVwiOyB0aGVuXG4gICAgZWNobyBcIiR7RVhJU1RTX01BUktFUn1cIlxuICAgICRTVURPIGNhdCBcIiR7ZmlsZVBhdGh9XCJcbmVsc2VcbiAgICBlY2hvIFwiJHtNSVNTSU5HX01BUktFUn1cIlxuZmlgLFxuICAgIH0pKS5zdGRvdXQ7XG4gICAgbGV0IG5ld2xpbmVJbmRleCA9IG91dHB1dC5pbmRleE9mKFwiXFxuXCIpO1xuICAgIGxldCBtYXJrZXIgPSBvdXRwdXQuc2xpY2UoMCwgbmV3bGluZUluZGV4KS50cmltKCk7XG4gICAgaWYgKG1hcmtlciA9PT0gTUlTU0lOR19NQVJLRVIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKG1hcmtlciAhPT0gRVhJU1RTX01BUktFUikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7RVhJU1RTX01BUktFUn0gb3IgJHtNSVNTSU5HX01BUktFUn0gZnJvbSAke2hvc3R9LCB3YXMgJHtvdXRwdXQuc2xpY2UoMCwgTUFYX0VSUk9SX0JPRFlfTEVOR1RIKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5zbGljZShuZXdsaW5lSW5kZXggKyAxKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUmVtb3RlRmlsZShjb25maWc6IHtcbiAgICBob3N0OiBzdHJpbmc7XG4gICAgZmlsZVBhdGg6IHN0cmluZztcbiAgICBjb250ZW50czogc3RyaW5nO1xuICAgIGZpbGVNb2RlOiBzdHJpbmc7XG4gICAgZGlyZWN0b3J5TW9kZTogc3RyaW5nO1xufSkge1xuICAgIGxldCB7IGhvc3QsIGZpbGVQYXRoLCBjb250ZW50cywgZmlsZU1vZGUsIGRpcmVjdG9yeU1vZGUgfSA9IGNvbmZpZztcbiAgICBsZXQgZGlyZWN0b3J5ID0gZmlsZVBhdGguc2xpY2UoMCwgZmlsZVBhdGgubGFzdEluZGV4T2YoXCIvXCIpKTtcbiAgICBhd2FpdCBydW5PdmVyU1NIKHtcbiAgICAgICAgaG9zdCxcbiAgICAgICAgLy8gRGVwbG95aW5nIGZyb20gV2luZG93cyBtdXN0IG5vdCBjYXJyeSBDUkxGIG9udG8gdGhlIHRhcmdldCwgd2hlcmUgaXQgYnJlYWtzIHN5c3RlbWRcbiAgICAgICAgLy8gdW5pdHMgYW5kIG1ha2VzIHByaXZhdGUga2V5cyB1bnJlYWRhYmxlIHRvIHNzaC5cbiAgICAgICAgaW5wdXQ6IGNvbnRlbnRzLnJlcGxhY2UoL1xcclxcbi9nLCBcIlxcblwiKSxcbiAgICAgICAgc2NyaXB0OiBgJHtTVURPX1BSRUFNQkxFfVxuc2V0IC1lXG4kU1VETyBta2RpciAtcCBcIiR7ZGlyZWN0b3J5fVwiXG4kU1VETyBjaG1vZCAke2RpcmVjdG9yeU1vZGV9IFwiJHtkaXJlY3Rvcnl9XCJcbiRTVURPIHRlZSBcIiR7ZmlsZVBhdGh9XCIgPiAvZGV2L251bGxcbiRTVURPIGNobW9kICR7ZmlsZU1vZGV9IFwiJHtmaWxlUGF0aH1cImAsXG4gICAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdGVDb21tYW5kRXhpc3RzKGNvbmZpZzogeyBob3N0OiBzdHJpbmc7IGNvbW1hbmQ6IHN0cmluZyB9KSB7XG4gICAgbGV0IHsgaG9zdCwgY29tbWFuZCB9ID0gY29uZmlnO1xuICAgIGxldCByZXN1bHQgPSBhd2FpdCBydW5PdmVyU1NIKHtcbiAgICAgICAgaG9zdCxcbiAgICAgICAgc2NyaXB0OiBgY29tbWFuZCAtdiBcIiR7Y29tbWFuZH1cIiA+IC9kZXYvbnVsbCAyPiYxICYmIGVjaG8geWVzIHx8IGVjaG8gbm9gLFxuICAgICAgICBhbGxvd0ZhaWx1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQudHJpbSgpID09PSBcInllc1wiO1xufVxuIl19
100
- /* _JS_SOURCE_HASH = "2bb084f8935f8ec03fde1d65be1a14ffcc51f8bbfefc04b9363fea0639a2a721"; */
100
+ /* _JS_SOURCE_HASH = "50b1a08f2aa4b96f04f676f20c516bc6c2897a47ad7c12729c0f651735c71057"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.spawnPromise = void 0;
4
4
  const child_process_1 = require("child_process");
@@ -31,4 +31,4 @@ function spawnPromise(config) {
31
31
  }
32
32
  exports.spawnPromise = spawnPromise;
33
33
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcGF3bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBc0M7QUFFdEMsMEhBQTBIO0FBQzFILGtGQUFrRjtBQUVsRjs7MEZBRTBGO0FBQzFGLFNBQWdCLFlBQVksQ0FBQyxNQU81QjtJQUNHLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN2RSxPQUFPLElBQUksT0FBTyxDQUEyRixPQUFPLENBQUMsRUFBRTs7UUFDbkgsSUFBSSxLQUFLLEdBQUcsSUFBQSxxQkFBSyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7WUFDN0IsR0FBRztZQUNILEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUM7U0FDaEUsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQiw2RUFBNkU7UUFDN0UsSUFBSSxLQUFLLEdBQUcsV0FBVyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUM3RixLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEQsTUFBQSxLQUFLLENBQUMsTUFBTSwwQ0FBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE1BQUEsS0FBSyxDQUFDLE1BQU0sMENBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQztRQUNuRCxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEYsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4Ryw0RUFBNEU7UUFDNUUsTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUEzQkQsb0NBMkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24gfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuXG4vLyBQT1JURUQgQ09ERTogc2VjdXJpdHkvYXV0aG9yaXplZEtleXMvZGFlbW9uL3BvcnRzZWN1cmVEYWVtb24uanMgY29udGFpbnMgYSBwbGFpbiBKUyBwb3J0IG9mIHNwYXduUHJvbWlzZSwgc28gaXQgY2FuIHJ1blxuLy8gd2l0aCBubyBkZXBlbmRlbmNpZXMuIElmIHlvdSBjaGFuZ2Ugb25lLCBtYWtlIHRoZSBtYXRjaGluZyBjaGFuZ2UgaW4gdGhlIG90aGVyLlxuXG4vKiogQW4gYXJndW1lbnQgbGlzdCByYXRoZXIgdGhhbiBhIHNoZWxsIHN0cmluZywgc28gaG9zdG5hbWVzIGFuZCBwYXRocyBjYW4gbmV2ZXIgYmUgcGFyc2VkIGFzXG4gICAgc2hlbGwgc3ludGF4LiBSZXNvbHZlcyB3aXRoIHRoZSBleGl0IGNvZGUgaW5zdGVhZCBvZiB0aHJvd2luZywgY2FsbGVycyBkZWNpZGUgd2hhdCBhIGZhaWx1cmVcbiAgICBtZWFucy4gYGluaGVyaXRTdGRlcnJgIGxldHMgYSBjaGlsZCdzIG93biBlcnJvcnMgcmVhY2ggdGhlIHRlcm1pbmFsIGFzIHRoZXkgaGFwcGVuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYXduUHJvbWlzZShjb25maWc6IHtcbiAgICBjb21tYW5kOiBzdHJpbmc7XG4gICAgYXJnczogc3RyaW5nW107XG4gICAgY3dkPzogc3RyaW5nO1xuICAgIGlucHV0Pzogc3RyaW5nO1xuICAgIGluaGVyaXRTdGRlcnI/OiBib29sZWFuO1xuICAgIHRpbWVvdXRUaW1lPzogbnVtYmVyO1xufSkge1xuICAgIGxldCB7IGNvbW1hbmQsIGFyZ3MsIGN3ZCwgaW5wdXQsIGluaGVyaXRTdGRlcnIsIHRpbWVvdXRUaW1lIH0gPSBjb25maWc7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHsgc3Rkb3V0OiBzdHJpbmc7IHN0ZGVycjogc3RyaW5nOyBzdGF0dXM6IG51bWJlciB8IHVuZGVmaW5lZDsgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkIH0+KHJlc29sdmUgPT4ge1xuICAgICAgICBsZXQgY2hpbGQgPSBzcGF3bihjb21tYW5kLCBhcmdzLCB7XG4gICAgICAgICAgICBjd2QsXG4gICAgICAgICAgICBzdGRpbzogW1wicGlwZVwiLCBcInBpcGVcIiwgaW5oZXJpdFN0ZGVyciAmJiBcImluaGVyaXRcIiB8fCBcInBpcGVcIl0sXG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgc3Rkb3V0ID0gXCJcIjtcbiAgICAgICAgbGV0IHN0ZGVyciA9IFwiXCI7XG4gICAgICAgIC8vIEEgY29tbWFuZCB0aGF0IG5ldmVyIHJldHVybnMgd291bGQgb3RoZXJ3aXNlIGhvbGQgdXAgZXZlcnl0aGluZyBiZWhpbmQgaXQuXG4gICAgICAgIGxldCB0aW1lciA9IHRpbWVvdXRUaW1lICYmIHNldFRpbWVvdXQoKCkgPT4gY2hpbGQua2lsbChcIlNJR0tJTExcIiksIHRpbWVvdXRUaW1lKSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIGNoaWxkLm9uKFwiY2xvc2VcIiwgKCkgPT4gdGltZXIgJiYgY2xlYXJUaW1lb3V0KHRpbWVyKSk7XG4gICAgICAgIGNoaWxkLnN0ZG91dD8ub24oXCJkYXRhXCIsIGNodW5rID0+IHN0ZG91dCArPSBjaHVuayk7XG4gICAgICAgIGNoaWxkLnN0ZGVycj8ub24oXCJkYXRhXCIsIGNodW5rID0+IHN0ZGVyciArPSBjaHVuayk7XG4gICAgICAgIGNoaWxkLm9uKFwiZXJyb3JcIiwgZXJyb3IgPT4gcmVzb2x2ZSh7IHN0ZG91dCwgc3RkZXJyLCBzdGF0dXM6IHVuZGVmaW5lZCwgZXJyb3IgfSkpO1xuICAgICAgICBjaGlsZC5vbihcImNsb3NlXCIsIHN0YXR1cyA9PiByZXNvbHZlKHsgc3Rkb3V0LCBzdGRlcnIsIHN0YXR1czogc3RhdHVzID8/IHVuZGVmaW5lZCwgZXJyb3I6IHVuZGVmaW5lZCB9KSk7XG4gICAgICAgIC8vIEEgY2hpbGQgdGhhdCBleGl0cyBiZWZvcmUgcmVhZGluZyBldmVyeXRoaW5nIHdvdWxkIG90aGVyd2lzZSByYWlzZSBFUElQRS5cbiAgICAgICAgY2hpbGQuc3RkaW4/Lm9uKFwiZXJyb3JcIiwgKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgICAgY2hpbGQuc3RkaW4/LmVuZChpbnB1dCB8fCBcIlwiKTtcbiAgICB9KTtcbn1cbiJdfQ==
34
- /* _JS_SOURCE_HASH = "d2f47a3b98d8645feac1558871c6670685fd9583f40bccb7d60d8f0ced0051ac"; */
34
+ /* _JS_SOURCE_HASH = "148887f3afb42a330df49eb955396403fab2e558c30741383b1a17b19a134288"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -22,4 +22,4 @@ function deriveEd25519Key(config) {
22
22
  }
23
23
  exports.deriveEd25519Key = deriveEd25519Key;
24
24
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZlS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVyaXZlS2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1Qiw2Q0FBaUQ7QUFFakQ7Ozs7O2tGQUtrRjtBQUNsRixTQUFnQixnQkFBZ0IsQ0FBQyxNQUF1QztJQUNwRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ0QsSUFBSSxXQUFXLEdBQUcsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbkYsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUEsOEJBQWlCLEVBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztBQUM1RSxDQUFDO0FBUEQsNENBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCB7IHB1YmxpY0tleUZyb21TZWVkIH0gZnJvbSBcIi4vc3NoS2V5RmlsZVwiO1xuXG4vKiogQSBsYWJlbCBtaXhlZCBpbnRvIGEga2V5J3Mgc2VjcmV0IHRvIGdldCBhbm90aGVyIGtleSwgc28gb25lIGtleSBjYW4gc3RhbmQgYmVoaW5kIHNldmVyYWxcbiAgICBpZGVudGl0aWVzIHdpdGhvdXQgYW55IG9mIHRoZW0gYmVpbmcgc3RvcmVkLlxuXG4gICAgSE1BQyByYXRoZXIgdGhhbiBoYXNoaW5nIHRoZSB0d28gam9pbmVkIHRvZ2V0aGVyOiB3aXRoIGEgcGxhaW4gaGFzaCwgYW55b25lIHdobyBvYnRhaW5lZCBvbmVcbiAgICBkZXJpdmVkIGtleSBjb3VsZCBleHRlbmQgaXQgaW50byBmdXJ0aGVyIGxhYmVscyB3aXRob3V0IGV2ZXIga25vd2luZyB0aGUgc291cmNlIGtleS4gVGhlIGxhYmVsXG4gICAgaXMgdGhlIG1lc3NhZ2UgYW5kIHRoZSBzb3VyY2Ugc2VjcmV0IGlzIHRoZSBrZXksIHdoaWNoIGlzIHdoYXQgSE1BQyBpcyBmb3IuICovXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlRWQyNTUxOUtleShjb25maWc6IHsgc2VlZDogQnVmZmVyOyBsYWJlbDogc3RyaW5nIH0pIHtcbiAgICBsZXQgeyBzZWVkLCBsYWJlbCB9ID0gY29uZmlnO1xuICAgIGlmICghbGFiZWwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIGxhYmVsIHRvIGRlcml2ZSB3aXRoLCB3YXMgJHtKU09OLnN0cmluZ2lmeShsYWJlbCl9YCk7XG4gICAgfVxuICAgIGxldCBkZXJpdmVkU2VlZCA9IGNyeXB0by5jcmVhdGVIbWFjKFwic2hhMjU2XCIsIHNlZWQpLnVwZGF0ZShsYWJlbCwgXCJ1dGY4XCIpLmRpZ2VzdCgpO1xuICAgIHJldHVybiB7IHNlZWQ6IGRlcml2ZWRTZWVkLCBwdWJsaWNLZXk6IHB1YmxpY0tleUZyb21TZWVkKGRlcml2ZWRTZWVkKSB9O1xufVxuIl19
25
- /* _JS_SOURCE_HASH = "75e42547d4bd83c3e959146be41b8ccc9673817c2f5e581d7a1a17675e8b9548"; */
25
+ /* _JS_SOURCE_HASH = "8ed7b96889dad455f0be88dda13ba8f278a053b4af3787f5012c605e2da5db8a"; */
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -152,4 +152,4 @@ function formatPublicKeyLine(config) {
152
152
  }
153
153
  exports.formatPublicKeyLine = formatPublicKeyLine;
154
154
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NoS2V5RmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNzaEtleUZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLGlHQUFpRztBQUNqRyxtR0FBbUc7QUFDbkcsK0JBQStCO0FBRS9CLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDO0FBQ2pDLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztBQUMvQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDcEIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN6QixvRUFBb0U7QUFDcEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBRyxxQ0FBcUMsQ0FBQztBQUM3RCxNQUFNLGNBQWMsR0FBRyxtQ0FBbUMsQ0FBQztBQUMzRCx1RkFBdUY7QUFDdkYsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRXBGLE1BQU0sVUFBVTtJQUVaLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRDFCLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFDbUIsQ0FBQztJQUV2QyxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDcEUsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxNQUFNLG9CQUFvQixJQUFJLENBQUMsTUFBTSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFD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SyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sZUFBZSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEcsT0FBTyxHQUFHLGNBQWMsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLGNBQWMsSUFBSSxDQUFDO0FBQzNFLENBQUM7QUEvQkQsMERBK0JDO0FBRUQsaUZBQWlGO0FBQ2pGLFNBQWdCLG1CQUFtQixDQUFDLE1BQThDO0lBQzlFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3BDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRSxPQUFPLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxJQUFJLElBQUksT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdkYsQ0FBQztBQUpELGtEQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCI7XG5cbi8vIE9wZW5TU0gga2VlcHMgcHJpdmF0ZSBrZXlzIGluIGl0cyBvd24gY29udGFpbmVyIHJhdGhlciB0aGFuIGFueXRoaW5nIG5vZGUgY2FuIHJlYWQsIHNvIHRoZSBmZXdcbi8vIGJ5dGVzIG9mIGl0IHdlIG5lZWQgYXJlIGhhbmRsZWQgaGVyZS4gT25seSB1bmVuY3J5cHRlZCBlZDI1NTE5IGtleXMgYXJlIHN1cHBvcnRlZCwgd2hpY2ggaXMgd2hhdFxuLy8gYSBrZXkgdXNlZCBieSBhdXRvbWF0aW9uIGlzLlxuXG5jb25zdCBNQUdJQyA9IFwib3BlbnNzaC1rZXktdjFcXDBcIjtcbmNvbnN0IEtFWV9UWVBFID0gXCJzc2gtZWQyNTUxOVwiO1xuY29uc3QgTk9ORSA9IFwibm9uZVwiO1xuY29uc3QgU0VFRF9MRU5HVEggPSAzMjtcbmNvbnN0IFBVQkxJQ19MRU5HVEggPSAzMjtcbi8vIFRoZSBvbmUgYmxvY2sgc2l6ZSB0aGF0IG1hdHRlcnMgaGVyZSwgc2luY2Ugbm90aGluZyBpcyBlbmNyeXB0ZWQuXG5jb25zdCBQQURESU5HX0JMT0NLID0gODtcbmNvbnN0IFBFTV9MSU5FX0xFTkdUSCA9IDcwO1xuY29uc3QgUFJJVkFURV9IRUFERVIgPSBcIi0tLS0tQkVHSU4gT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tXCI7XG5jb25zdCBQUklWQVRFX0ZPT1RFUiA9IFwiLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tXCI7XG4vLyBUaGUgcHJlZml4IHRoYXQgdHVybnMgYSBiYXJlIDMyIGJ5dGUgc2VlZCBpbnRvIGEgcGtjczggZWQyNTUxOSBrZXkgbm9kZSB3aWxsIGFjY2VwdC5cbmNvbnN0IFBLQ1M4X0VEMjU1MTlfUFJFRklYID0gQnVmZmVyLmZyb20oXCIzMDJlMDIwMTAwMzAwNTA2MDMyYjY1NzAwNDIyMDQyMFwiLCBcImhleFwiKTtcblxuY2xhc3MgQnl0ZVJlYWRlciB7XG4gICAgcHJpdmF0ZSBvZmZzZXQgPSAwO1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYnVmZmVyOiBCdWZmZXIpIHsgfVxuXG4gICAgcmVhZEJ5dGVzKGxlbmd0aDogbnVtYmVyKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuYnVmZmVyLnN1YmFycmF5KHRoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArIGxlbmd0aCk7XG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggIT09IGxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2xlbmd0aH0gYnl0ZXMgYXQgb2Zmc2V0ICR7dGhpcy5vZmZzZXR9LCB3YXMgJHt2YWx1ZS5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXQgKz0gbGVuZ3RoO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVhZFVJbnQzMigpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkJFKHRoaXMub2Zmc2V0KTtcbiAgICAgICAgdGhpcy5vZmZzZXQgKz0gNDtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJlYWRTdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRCeXRlcyh0aGlzLnJlYWRVSW50MzIoKSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB3cml0ZVN0cmluZyh2YWx1ZTogQnVmZmVyIHwgc3RyaW5nKSB7XG4gICAgbGV0IGNvbnRlbnRzID0gQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSAmJiB2YWx1ZSB8fCBCdWZmZXIuZnJvbSh2YWx1ZSwgXCJ1dGY4XCIpO1xuICAgIGxldCBsZW5ndGggPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgbGVuZ3RoLndyaXRlVUludDMyQkUoY29udGVudHMubGVuZ3RoKTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbbGVuZ3RoLCBjb250ZW50c10pO1xufVxuXG5mdW5jdGlvbiB3cml0ZVVJbnQzMih2YWx1ZTogbnVtYmVyKSB7XG4gICAgbGV0IGJ5dGVzID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGJ5dGVzLndyaXRlVUludDMyQkUodmFsdWUpO1xuICAgIHJldHVybiBieXRlcztcbn1cblxuLyoqIFRoZSBwdWJsaWMga2V5IG9mIGEgc2VlZCwgd29ya2VkIG91dCBieSBub2RlIHJhdGhlciB0aGFuIGJ5IHJlaW1wbGVtZW50aW5nIHRoZSBjdXJ2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaWNLZXlGcm9tU2VlZChzZWVkOiBCdWZmZXIpIHtcbiAgICBpZiAoc2VlZC5sZW5ndGggIT09IFNFRURfTEVOR1RIKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSAke1NFRURfTEVOR1RIfSBieXRlIHNlZWQsIHdhcyAke3NlZWQubGVuZ3RofWApO1xuICAgIH1cbiAgICBsZXQgcHJpdmF0ZUtleSA9IGNyeXB0by5jcmVhdGVQcml2YXRlS2V5KHtcbiAgICAgICAga2V5OiBCdWZmZXIuY29uY2F0KFtQS0NTOF9FRDI1NTE5X1BSRUZJWCwgc2VlZF0pLFxuICAgICAgICBmb3JtYXQ6IFwiZGVyXCIsXG4gICAgICAgIHR5cGU6IFwicGtjczhcIixcbiAgICB9KTtcbiAgICAvLyBUaGUgc3BraSB3cmFwcGVyIGlzIGEgZml4ZWQgMTIgYnl0ZSBoZWFkZXIgZm9sbG93ZWQgYnkgdGhlIHJhdyBrZXkuXG4gICAgLy8gVGhlIGNhc3QgaXMgYmVjYXVzZSBzb21lIEB0eXBlcy9ub2RlIHZlcnNpb25zIGRvbid0IGFjY2VwdCBhIEtleU9iamVjdCBoZXJlLCBldmVuIHRob3VnaCB0aGVcbiAgICAvLyBydW50aW1lIGFsd2F5cyBoYXMuIENvbnN1bWVycyBjb21waWxlIHVzIHdpdGggdGhlaXIgb3duIEB0eXBlcy9ub2RlLCBzbyB0aGlzIGhhcyB0byBub3QgZmFpbC5cbiAgICByZXR1cm4gY3J5cHRvLmNyZWF0ZVB1YmxpY0tleShwcml2YXRlS2V5IGFzIGFueSkuZXhwb3J0KHsgZm9ybWF0OiBcImRlclwiLCB0eXBlOiBcInNwa2lcIiB9KS5zdWJhcnJheSgxMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU9wZW5TU0hQcml2YXRlS2V5KGNvbnRlbnRzOiBzdHJpbmcpIHtcbiAgICBsZXQgYm9keSA9IGNvbnRlbnRzLnNwbGl0KFwiXFxuXCIpLmZpbHRlcihsaW5lID0+IGxpbmUudHJpbSgpICYmICFsaW5lLnN0YXJ0c1dpdGgoXCItLS0tLVwiKSkuam9pbihcIlwiKTtcbiAgICBpZiAoIWNvbnRlbnRzLmluY2x1ZGVzKFBSSVZBVEVfSEVBREVSKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGFuIE9wZW5TU0ggcHJpdmF0ZSBrZXkgc3RhcnRpbmcgd2l0aCAke1BSSVZBVEVfSEVBREVSfWApO1xuICAgIH1cbiAgICBsZXQgcmVhZGVyID0gbmV3IEJ5dGVSZWFkZXIoQnVmZmVyLmZyb20oYm9keSwgXCJiYXNlNjRcIikpO1xuICAgIGlmIChyZWFkZXIucmVhZEJ5dGVzKE1BR0lDLmxlbmd0aCkudG9TdHJpbmcoKSAhPT0gTUFHSUMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB0aGUga2V5IHRvIHN0YXJ0IHdpdGggJHtKU09OLnN0cmluZ2lmeShNQUdJQyl9YCk7XG4gICAgfVxuICAgIGxldCBjaXBoZXJOYW1lID0gcmVhZGVyLnJlYWRTdHJpbmcoKS50b1N0cmluZygpO1xuICAgIGxldCBrZGZOYW1lID0gcmVhZGVyLnJlYWRTdHJpbmcoKS50b1N0cmluZygpO1xuICAgIHJlYWRlci5yZWFkU3RyaW5nKCk7XG4gICAgaWYgKGNpcGhlck5hbWUgIT09IE5PTkUgfHwga2RmTmFtZSAhPT0gTk9ORSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgRXhwZWN0ZWQgYW4gdW5lbmNyeXB0ZWQga2V5LCB3YXMgZW5jcnlwdGVkIHdpdGggJHtjaXBoZXJOYW1lfS8ke2tkZk5hbWV9LmBcbiAgICAgICAgICAgICsgYCBSZW1vdmUgdGhlIHBhc3NwaHJhc2Ugd2l0aCBcInNzaC1rZXlnZW4gLXBcIiBmaXJzdC5gXG4gICAgICAgICk7XG4gICAgfVxuICAgIGxldCBrZXlDb3VudCA9IHJlYWRlci5yZWFkVUludDMyKCk7XG4gICAgaWYgKGtleUNvdW50ICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdGhlIGtleSBmaWxlIHRvIGhvbGQgb25lIGtleSwgaGVsZCAke2tleUNvdW50fWApO1xuICAgIH1cbiAgICByZWFkZXIucmVhZFN0cmluZygpO1xuXG4gICAgbGV0IHByaXZhdGVTZWN0aW9uID0gbmV3IEJ5dGVSZWFkZXIocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgbGV0IGNoZWNrT25lID0gcHJpdmF0ZVNlY3Rpb24ucmVhZFVJbnQzMigpO1xuICAgIGxldCBjaGVja1R3byA9IHByaXZhdGVTZWN0aW9uLnJlYWRVSW50MzIoKTtcbiAgICBpZiAoY2hlY2tPbmUgIT09IGNoZWNrVHdvKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdGhlIGtleSdzIHR3byBjaGVjayB2YWx1ZXMgdG8gbWF0Y2gsIHdlcmUgJHtjaGVja09uZX0gYW5kICR7Y2hlY2tUd299YCk7XG4gICAgfVxuICAgIGxldCBrZXlUeXBlID0gcHJpdmF0ZVNlY3Rpb24ucmVhZFN0cmluZygpLnRvU3RyaW5nKCk7XG4gICAgaWYgKGtleVR5cGUgIT09IEtFWV9UWVBFKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYW4gJHtLRVlfVFlQRX0ga2V5LCB3YXMgJHtrZXlUeXBlfWApO1xuICAgIH1cbiAgICBwcml2YXRlU2VjdGlvbi5yZWFkU3RyaW5nKCk7XG4gICAgLy8gT3BlblNTSCBzdG9yZXMgdGhlIHNlZWQgYW5kIHRoZSBwdWJsaWMga2V5IHRvZ2V0aGVyIGluIHRoZSBwcml2YXRlIGZpZWxkLlxuICAgIGxldCBwcml2YXRlVmFsdWUgPSBwcml2YXRlU2VjdGlvbi5yZWFkU3RyaW5nKCk7XG4gICAgaWYgKHByaXZhdGVWYWx1ZS5sZW5ndGggIT09IFNFRURfTEVOR1RIICsgUFVCTElDX0xFTkdUSCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGEgJHtTRUVEX0xFTkdUSCArIFBVQkxJQ19MRU5HVEh9IGJ5dGUgcHJpdmF0ZSB2YWx1ZSwgd2FzICR7cHJpdmF0ZVZhbHVlLmxlbmd0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2VlZDogcHJpdmF0ZVZhbHVlLnN1YmFycmF5KDAsIFNFRURfTEVOR1RIKSxcbiAgICAgICAgcHVibGljS2V5OiBwcml2YXRlVmFsdWUuc3ViYXJyYXkoU0VFRF9MRU5HVEgpLFxuICAgICAgICBjb21tZW50OiBwcml2YXRlU2VjdGlvbi5yZWFkU3RyaW5nKCkudG9TdHJpbmcoKSxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0T3BlblNTSFByaXZhdGVLZXkoY29uZmlnOiB7IHNlZWQ6IEJ1ZmZlcjsgY29tbWVudDogc3RyaW5nIH0pIHtcbiAgICBsZXQgeyBzZWVkLCBjb21tZW50IH0gPSBjb25maWc7XG4gICAgbGV0IHB1YmxpY0tleSA9IHB1YmxpY0tleUZyb21TZWVkKHNlZWQpO1xuICAgIGxldCBwdWJsaWNCbG9iID0gQnVmZmVyLmNvbmNhdChbd3JpdGVTdHJpbmcoS0VZX1RZUEUpLCB3cml0ZVN0cmluZyhwdWJsaWNLZXkpXSk7XG5cbiAgICAvLyBUaGUgY2hlY2sgdmFsdWUgb25seSBwcm92ZXMgYSBwYXNzcGhyYXNlIGRlY3J5cHRlZCBjb3JyZWN0bHksIGFuZCBub3RoaW5nIGhlcmUgaXMgZW5jcnlwdGVkLlxuICAgIC8vIFRha2luZyBpdCBmcm9tIHRoZSBzZWVkIGtlZXBzIHRoZSBzYW1lIGlucHV0IHByb2R1Y2luZyB0aGUgc2FtZSBmaWxlLCBzbyBkZXJpdmluZyBhIGtleSB0d2ljZVxuICAgIC8vIGlzIHNvbWV0aGluZyB5b3UgY2FuIGNvbXBhcmUgcmF0aGVyIHRoYW4gc29tZXRoaW5nIHRoYXQgbG9va3MgZGlmZmVyZW50IGV2ZXJ5IHRpbWUuXG4gICAgbGV0IGNoZWNrID0gY3J5cHRvLmNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHNlZWQpLmRpZ2VzdCgpLnJlYWRVSW50MzJCRSgwKTtcbiAgICBsZXQgcHJpdmF0ZVNlY3Rpb24gPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgICAgd3JpdGVVSW50MzIoY2hlY2spLFxuICAgICAgICB3cml0ZVVJbnQzMihjaGVjayksXG4gICAgICAgIHdyaXRlU3RyaW5nKEtFWV9UWVBFKSxcbiAgICAgICAgd3JpdGVTdHJpbmcocHVibGljS2V5KSxcbiAgICAgICAgd3JpdGVTdHJpbmcoQnVmZmVyLmNvbmNhdChbc2VlZCwgcHVibGljS2V5XSkpLFxuICAgICAgICB3cml0ZVN0cmluZyhjb21tZW50KSxcbiAgICBdKTtcbiAgICBsZXQgcGFkZGluZ0xlbmd0aCA9IChQQURESU5HX0JMT0NLIC0gcHJpdmF0ZVNlY3Rpb24ubGVuZ3RoICUgUEFERElOR19CTE9DSykgJSBQQURESU5HX0JMT0NLO1xuICAgIGxldCBwYWRkaW5nID0gQnVmZmVyLmZyb20oQXJyYXkuZnJvbSh7IGxlbmd0aDogcGFkZGluZ0xlbmd0aCB9LCAodW51c2VkLCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgICBsZXQgY29udGVudHMgPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgICAgQnVmZmVyLmZyb20oTUFHSUMpLFxuICAgICAgICB3cml0ZVN0cmluZyhOT05FKSxcbiAgICAgICAgd3JpdGVTdHJpbmcoTk9ORSksXG4gICAgICAgIHdyaXRlU3RyaW5nKFwiXCIpLFxuICAgICAgICB3cml0ZVVJbnQzMigxKSxcbiAgICAgICAgd3JpdGVTdHJpbmcocHVibGljQmxvYiksXG4gICAgICAgIHdyaXRlU3RyaW5nKEJ1ZmZlci5jb25jYXQoW3ByaXZhdGVTZWN0aW9uLCBwYWRkaW5nXSkpLFxuICAgIF0pO1xuICAgIGxldCBlbmNvZGVkID0gY29udGVudHMudG9TdHJpbmcoXCJiYXNlNjRcIikubWF0Y2gobmV3IFJlZ0V4cChgLnsxLCR7UEVNX0xJTkVfTEVOR1RIfX1gLCBcImdcIikpIHx8IFtdO1xuICAgIHJldHVybiBgJHtQUklWQVRFX0hFQURFUn1cXG4ke2VuY29kZWQuam9pbihcIlxcblwiKX1cXG4ke1BSSVZBVEVfRk9PVEVSfVxcbmA7XG59XG5cbi8qKiBUaGUgc2luZ2xlIGxpbmUgZm9ybSwgYXMgaXQgYXBwZWFycyBpbiBhdXRob3JpemVkX2tleXMgYW5kIGluIGEgLnB1YiBmaWxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFB1YmxpY0tleUxpbmUoY29uZmlnOiB7IHB1YmxpY0tleTogQnVmZmVyOyBjb21tZW50OiBzdHJpbmcgfSkge1xuICAgIGxldCB7IHB1YmxpY0tleSwgY29tbWVudCB9ID0gY29uZmlnO1xuICAgIGxldCBibG9iID0gQnVmZmVyLmNvbmNhdChbd3JpdGVTdHJpbmcoS0VZX1RZUEUpLCB3cml0ZVN0cmluZyhwdWJsaWNLZXkpXSk7XG4gICAgcmV0dXJuIGAke0tFWV9UWVBFfSAke2Jsb2IudG9TdHJpbmcoXCJiYXNlNjRcIil9JHtjb21tZW50ICYmIGAgJHtjb21tZW50fWAgfHwgXCJcIn1cXG5gO1xufVxuIl19
155
- /* _JS_SOURCE_HASH = "629a39d201a3d9768982a87af94e10e99f5ed0cbcd68e4e6f9b783eeb6298be2"; */
155
+ /* _JS_SOURCE_HASH = "ab395bd96d551a8884e2fd8ff9691930f61689b173f4743c6a4c0d6bb7fa0a60"; */
@@ -1,9 +1,9 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
6
- //exports.isMachineAccepted = exports.addMachineCommand = exports.setMachines = exports.getOrCreateRemoteMachineId = exports.getTrustedMachines = exports.getMachines = exports.keysRepo = exports.MACHINES_DIR = void 0;
6
+ //exports.isMachineAccepted = exports.describeThisMachine = exports.addMachineCommand = exports.setMachines = exports.getOrCreateRemoteMachineId = exports.getTrustedMachines = exports.getMachines = exports.keysRepo = exports.MACHINES_DIR = void 0;
7
7
  const promises_1 = __importDefault(require("fs/promises"));
8
8
  const os_1 = __importDefault(require("os"));
9
9
  const path_1 = __importDefault(require("path"));
@@ -245,6 +245,13 @@ function addMachineCommand(config) {
245
245
  return `To trust ${machineId}, run: yarn addmachine ${domain || "<domain>"} ${machineId} ${ip} git`;
246
246
  }
247
247
  exports.addMachineCommand = addMachineCommand;
248
+ function describeThisMachine(domain) {
249
+ let host = os_1.default.hostname();
250
+ if (!domain)
251
+ return host;
252
+ return `${host} (machine ${(0, certs_1.getOwnMachineId)(domain)})`;
253
+ }
254
+ exports.describeThisMachine = describeThisMachine;
248
255
  /** Sends the one notification this file is allowed to send, when it can.
249
256
 
250
257
  The daemon configures notifications on startup and would simply send. This can also run in some
@@ -268,8 +275,11 @@ async function notifyBestEffort(headline, body) {
268
275
  /** Records that a machine we accept talked to us from an address it is not allowed from. One per
269
276
  machine and address, so a second address is a second revocation and an unrevoke of the first
270
277
  does not cover it. */
271
- async function recordMachineRevocation(config) {
278
+ const recordMachineRevocation = (0, batching_1.runInSerial)(async (config) => {
272
279
  let { sourceURL, machineId, ip, hostLabel } = config;
280
+ if ((0, readSignedRepo_1.isPairRevoked)(machineId, ip) || (0, readSignedRepo_1.isPairUnrevoked)(machineId, ip)) {
281
+ return "alreadyRevoked";
282
+ }
273
283
  // Clones it if it is not here yet, which is the usual state of a machine that has never had to
274
284
  // revoke anything. Without this the mkdir below would build the directory anyway and git would
275
285
  // then be run somewhere that is not a checkout, so the revocation was written where nothing
@@ -279,7 +289,7 @@ async function recordMachineRevocation(config) {
279
289
  }
280
290
  catch (e) {
281
291
  console.error(`Cannot record the revocation of ${machineId}, ${(0, revokeSource_1.revokeRepoURL)(sourceURL)} could not be read. ${e}`);
282
- return false;
292
+ return "failed";
283
293
  }
284
294
  let repoPath = (0, revokeSource_1.revokeRepoPath)(sourceURL);
285
295
  let keyPath = await (0, repoFiles_2.ensureRevokeKey)(sourceURL);
@@ -304,7 +314,7 @@ async function recordMachineRevocation(config) {
304
314
  if (push.status !== 0) {
305
315
  // Another machine most likely recorded the same thing first, and the next read picks it up.
306
316
  console.log(`Could not push the revocation of ${machineId} from ${ip}. ${(push.stdout + push.stderr).trim()}`);
307
- return false;
317
+ return "failed";
308
318
  }
309
319
  (0, readSignedRepo_1.noteRevocation)(revocationId, { identity: machineId, ip, revokedAt, revokedBy: hostLabel });
310
320
  console.log(`Revoked ${machineId} from ${ip}, ${revocationId}`);
@@ -320,8 +330,8 @@ async function recordMachineRevocation(config) {
320
330
  + `\nThe unrevoke allows ${machineId} from ${ip}, and takes effect as each machine picks it up.`
321
331
  + `\n\nmachine: \`${machineId}\``
322
332
  + `\nfrozen by: \`${hostLabel}\``);
323
- return true;
324
- }
333
+ return "froze";
334
+ });
325
335
  async function isMachineAccepted(config) {
326
336
  let { machineId, ip, domain } = config;
327
337
  if (!machineId || !ip) {
@@ -370,11 +380,13 @@ async function isMachineAccepted(config) {
370
380
  if (!(0, readSignedRepo_1.isPairRevoked)(machineId, ip) && !(0, readSignedRepo_1.isPairUnrevoked)(machineId, ip)) {
371
381
  // Only the machine that actually wrote the revocation may say it froze anything. One
372
382
  // that could not reach the revoke repo has refused this call and nothing more.
373
- let froze = await recordMachineRevocation({ sourceURL, machineId, ip, hostLabel: os_1.default.hostname() });
374
- let reason = froze
375
- && `Machine ${machineId} is not allowed from ${ip}, and is now frozen everywhere.`
376
- || `Machine ${machineId} is not allowed from ${ip}. It could not be frozen, ${(0, revokeSource_1.revokeRepoURL)(sourceURL)} could not be written.`;
377
- return { verdict: { accepted: false, reason }, froze };
383
+ let outcome = await recordMachineRevocation({ sourceURL, machineId, ip, hostLabel: describeThisMachine(domain) });
384
+ if (outcome === "froze") {
385
+ return { verdict: { accepted: false, reason: `Machine ${machineId} is not allowed from ${ip}, and is now frozen everywhere.` }, froze: true };
386
+ }
387
+ if (outcome === "failed") {
388
+ return { verdict: { accepted: false, reason: `Machine ${machineId} is not allowed from ${ip}. It could not be frozen, ${(0, revokeSource_1.revokeRepoURL)(sourceURL)} could not be written.` }, froze: false };
389
+ }
378
390
  }
379
391
  return { verdict: { accepted: false, reason: `Machine ${machineId} is not allowed from ${ip}.` }, froze: false };
380
392
  };
@@ -398,5 +410,5 @@ async function isMachineAccepted(config) {
398
410
  return (await evaluate()).verdict;
399
411
  }
400
412
  exports.isMachineAccepted = isMachineAccepted;
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjaGluZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYWNoaW5lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyREFBNkI7QUFDN0IsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4Qix5REFBNkQ7QUFDN0Qsa0VBQStFO0FBQy9FLG9FQUFzRTtBQUN0RSxzREFBZ0U7QUFDaEUsa0VBQXFFO0FBQ3JFLDRFQUEySTtBQUMzSSxpRUFBK0U7QUFDL0UsdURBQTJEO0FBQzNELDREQUF5RDtBQUN6RCxzREFBdUk7QUFDdkksa0RBQWlJO0FBQ2pJLG9EQUFpRjtBQUNqRix5REFBbUQ7QUFDbkQsMkRBQStEO0FBRy9ELG1HQUFtRztBQUNuRyxpR0FBaUc7QUFDakcsZ0VBQWdFO0FBQ25ELFFBQUEsWUFBWSxHQUFHLFVBQVUsQ0FBQztBQUN2QyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUM7QUFDdEMsTUFBTSxpQkFBaUIsR0FBRyw4Q0FBOEMsQ0FBQztBQUN6RSxnR0FBZ0c7QUFDaEcsbUNBQW1DO0FBQ25DLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUN2Qyw2RkFBNkY7QUFDN0YsaUdBQWlHO0FBQ2pHLGtFQUFrRTtBQUNsRSxNQUFNLHlCQUF5QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDNUMsZ0dBQWdHO0FBQ2hHLGlHQUFpRztBQUNqRywwREFBMEQ7QUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ25DLE1BQU0sUUFBUSxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzFELGdHQUFnRztBQUNoRyxnR0FBZ0c7QUFDaEcsTUFBTSw4QkFBOEIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2pELElBQUksd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0FBU2pDLEtBQUssVUFBVSxVQUFVLENBQUMsUUFBZ0I7SUFDdEMsSUFB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QUFDO0lBQ0QsT0FBTyxDQUFDLE1BQU0sUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDdEMsQ0FBQztBQXBGRCw4Q0FvRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgcmVzb2x2ZUtleXNSZXBvIH0gZnJvbSBcIi4uL2F1dGhvcml6ZWRLZXlzL2tleXNSZXBvXCI7XG5pbXBvcnQgeyByZXZva2VSZXBvLCBzeW5jUmVwb0ZpbGVzIH0gZnJvbSBcIi4uL2F1dGhvcml6ZWRLZXlzL2RhZW1vbi9yZXBvRmlsZXNcIjtcbmltcG9ydCB7IG5ld1Jldm9jYXRpb25JZCB9IGZyb20gXCIuLi9hdXRob3JpemVkS2V5cy9kYWVtb24vcmV2b2NhdGlvblwiO1xuaW1wb3J0IHsgcnVuR2l0LCBzeW5jUmVwbyB9IGZyb20gXCIuLi9hdXRob3JpemVkS2V5cy9kYWVtb24vZ2l0XCI7XG5pbXBvcnQgeyBlbnN1cmVSZXZva2VLZXkgfSBmcm9tIFwiLi4vYXV0aG9yaXplZEtleXMvZGFlbW9uL3JlcG9GaWxlc1wiO1xuaW1wb3J0IHsgaWRlbnRpdHlGcm96ZW5CeSwgaXNQYWlyUmV2b2tlZCwgaXNQYWlyVW5yZXZva2VkLCBub3RlUmV2b2NhdGlvbiwgcmVhZFNpZ25lZFJlcG8gfSBmcm9tIFwiLi4vYXV0aG9yaXplZEtleXMvZGFlbW9uL3JlYWRTaWduZWRSZXBvXCI7XG5pbXBvcnQgeyByZXZva2VSZXBvUGF0aCwgcmV2b2tlUmVwb1VSTCB9IGZyb20gXCIuLi9hdXRob3JpemVkS2V5cy9yZXZva2VTb3VyY2VcIjtcbmltcG9ydCB7IHNvdXJjZVJlcG9QYXRoIH0gZnJvbSBcIi4uL2F1dGhvcml6ZWRLZXlzL3NvdXJjZXNcIjtcbmltcG9ydCB7IG5vdGlmeSB9IGZyb20gXCIuLi9hdXRob3JpemVkS2V5cy9kYWVtb24vbm90aWZ5XCI7XG5pbXBvcnQgeyBhcmVEaXNjb3JkTm90aWZpY2F0aW9uc0NvbmZpZ3VyZWQsIGNvbmZpZ3VyZURpc2NvcmROb3RpZmljYXRpb25zLCBERUZBVUxUX1dFQkhPT0tfRklMRV9QQVRIIH0gZnJvbSBcIi4uL25vdGlmaWNhdGlvbnMvZGlzY29yZFwiO1xuaW1wb3J0IHsgREVWX2dldElkZW50aXR5RmlsZVBhdGgsIGdlbmVyYXRlQ0EsIGdldE1hY2hpbmVJZCwgZ2V0T3duTWFjaGluZUlkLCBJZGVudGl0eVN0b3JhZ2VUeXBlIH0gZnJvbSBcIi4uLy4uL21pc2MvaHR0cHMvY2VydHNcIjtcbmltcG9ydCB7IGRlc2NyaWJlSG9zdCwgcnVuT3ZlclNTSCwgd3JpdGVSZW1vdGVGaWxlIH0gZnJvbSBcIi4uL2hlbHBlcnMvcmVtb3RlU1NIXCI7XG5pbXBvcnQgeyBsYXp5IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgcnVuSW5maW5pdGVQb2xsIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvYmF0Y2hpbmdcIjtcbmltcG9ydCB7IHNwYXduUHJvbWlzZSB9IGZyb20gXCIuLi9oZWxwZXJzL3NwYXduXCI7XG5cbi8vIFdoaWNoIG1hY2hpbmVzIHRoaXMgc3lzdGVtIHRhbGtzIHRvLCBrZXB0IGluIHRoZSBzYW1lIHJlcG8gYXMgdGhlIHNzaCBrZXlzLiBUaGF0IHJlcG8gaXMgYWxyZWFkeVxuLy8gc2lnbmVkLCBhbHJlYWR5IGRpc3RyaWJ1dGVkIHRvIGV2ZXJ5IG1hY2hpbmUsIGFuZCBhbHJlYWR5IGhhcyBzb21ld2hlcmUgdG8gcmVjb3JkIGEgcmVqZWN0aW9uLFxuLy8gc28gYSBzZWNvbmQgb25lIHdvdWxkIG9ubHkgYmUgYSBzZWNvbmQgdGhpbmcgdG8ga2VlcCBpbiBzdGVwLlxuZXhwb3J0IGNvbnN0IE1BQ0hJTkVTX0RJUiA9IFwibWFjaGluZXNcIjtcbmNvbnN0IFJFVk9DQVRJT05TX0RJUiA9IFwicmV2b2NhdGlvbnNcIjtcbmNvbnN0IFJFVk9DQVRJT05fUkVBU09OID0gXCJhIG1hY2hpbmUgdGFsa2VkIHRvIHVzIGZyb20gYW4gdW5hcHByb3ZlZCBJUFwiO1xuLy8gVGhlIHJldm9rZSByZXBvIGlzIHB1bGxlZCBhdCBtb3N0IHRoaXMgb2Z0ZW4uIEEgY2hlY2sgaGFwcGVucyBwZXIgcmVxdWVzdCwgYW5kIGEgcmVxdWVzdCBtdXN0XG4vLyBub3QgY29zdCBhIHJvdW5kIHRyaXAgdG8gZ2l0aHViLlxuY29uc3QgUkVWT0tFX1NZTkNfSU5URVJWQUwgPSA2MCAqIDEwMDA7XG4vLyBBbmQgdGhlIG1hY2hpbmUgbGlzdCBpcyByZS1yZWFkIGZyb20gdGhlIGNoZWNrb3V0IG9uIHRoaXMgaW50ZXJ2YWwsIGluIHRoZSBiYWNrZ3JvdW5kLiBUaGVcbi8vIGNoZWNrb3V0IGl0c2VsZiBvbmx5IG1vdmVzIHdoZW4gdGhlIGRhZW1vbiBwdWxscyBpdCwgd2hpY2ggaXMgb24gdGhlIHNhbWUgc29ydCBvZiBpbnRlcnZhbCwgc29cbi8vIHJlYWRpbmcgbW9yZSBvZnRlbiB0aGFuIHRoaXMgd291bGQgb25seSByZS1yZWFkIHRoZSBzYW1lIGJ5dGVzLlxuY29uc3QgTUFDSElORVNfUkVGUkVTSF9JTlRFUlZBTCA9IDYwICogMTAwMDtcbi8vIEhvdyBsb25nIGEgZmFpbHVyZSB0byBmaW5kIHRoZSBrZXlzIHJlcG8gaXMgcmVtZW1iZXJlZC4gQSBsb25nIGxpdmVkIHByb2Nlc3MgbWF5IHN0YXJ0IGJlZm9yZVxuLy8gdGhlIG1hY2hpbmUgaXMgc2V0IHVwLCBhbmQgc2hvdWxkIHBpY2sgaXQgdXAgb25jZSBpdCBpcywgd2l0aG91dCBiZWluZyByZXN0YXJ0ZWQgLSBidXQgaXQgbXVzdFxuLy8gbm90IHBheSBmb3IgcmVzb2x2aW5nIHRoZSByZXBvIG9uIGV2ZXJ5IHJlcXVlc3QgZWl0aGVyLlxuY29uc3QgUkVQT19SRVRSWV9ERUxBWSA9IDE1ICogMTAwMDtcbmNvbnN0IExPT1BCQUNLID0gW1wiMTI3LjAuMC4xXCIsIFwiOjoxXCIsIFwiOjpmZmZmOjEyNy4wLjAuMVwiXTtcbi8vIFRoZSB0cnVzdGVkIG1hY2hpbmUgbGlzdCBpcyByZS1yZWFkIGF0IG1vc3QgdGhpcyBvZnRlbiB3aGVuIGEgY2hlY2sgcmVqZWN0cywgc28gYSBjYWxsZXIgdGhhdFxuLy8gd2FzIGp1c3QgYWRkZWQgaXMgcGlja2VkIHVwIHF1aWNrbHkgd2l0aG91dCBsZXR0aW5nIGEgZmxvb2Qgb2YgcmVqZWN0aW9ucyByZS1yZWFkIGV2ZXJ5IHRpbWUuXG5jb25zdCBNQUNISU5FU19JTlZBTElEQVRJT05fSU5URVJWQUwgPSA2MCAqIDEwMDA7XG5sZXQgbGFzdE1hY2hpbmVzSW52YWxpZGF0aW9uID0gMDtcblxuLyoqIE9uZSBtYWNoaW5lIHdlIGFyZSB3aWxsaW5nIHRvIHRhbGsgdG8sIGFuZCB0aGUgYWRkcmVzc2VzIGl0IG1heSB0YWxrIHRvIHVzIGZyb20uICovXG5leHBvcnQgdHlwZSBNYWNoaW5lU3RhdGUgPSB7XG4gICAgbWFjaGluZUlkOiBzdHJpbmc7XG4gICAgaXBzOiBzdHJpbmdbXTtcbiAgICBhZGRlZEF0OiBzdHJpbmc7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBwYXRoRXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBmcy5hY2Nlc3MoZmlsZVBhdGgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG1hY2hpbmVGaWxlUGF0aChyZXBvUGF0aDogc3RyaW5nLCBtYWNoaW5lSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBwYXRoLmpvaW4ocmVwb1BhdGgsIE1BQ0hJTkVTX0RJUiwgYCR7bWFjaGluZUlkfS5qc29uYCk7XG59XG5cbi8qKiBUaGlzIG1hY2hpbmUncyBrZXlzIHJlcG8sIHdvcmtlZCBvdXQgb25jZSBhbmQgdGhlbiByZW1lbWJlcmVkLlxuXG4gICAgQSBmYWlsdXJlIGlzIHJlbWVtYmVyZWQgdG9vLCBidXQgb25seSBicmllZmx5OiBhIHNlcnZlciBtYXkgd2VsbCBzdGFydCBiZWZvcmUgdGhlIG1hY2hpbmUgaGFzXG4gICAgYmVlbiBzZXQgdXAsIGFuZCBzaG91bGQgc3RhcnQgd29ya2luZyB3aGVuIGl0IGlzLCByYXRoZXIgdGhhbiBuZWVkaW5nIGEgcmVzdGFydC4gKi9cbmV4cG9ydCBjb25zdCBrZXlzUmVwbyA9IGxhenkoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBsb29rdXAgPSByZXNvbHZlS2V5c1JlcG8oKTtcbiAgICBsb29rdXAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGtleXNSZXBvLnJlc2V0KCksIFJFUE9fUkVUUllfREVMQVkpLnVucmVmKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IGxvb2t1cDtcbn0pO1xuXG4vKiogRXZlcnkgbWFjaGluZSBhIGNoZWNrb3V0IGxpc3RzLiBXaXRob3V0IGEgcmVwbywgdGhpcyBtYWNoaW5lJ3Mgb3duLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE1hY2hpbmVzKHJlcG9QYXRoPzogc3RyaW5nKTogUHJvbWlzZTxNYWNoaW5lU3RhdGVbXT4ge1xuICAgIHJldHVybiBbLi4uKGF3YWl0IHJlYWRNYWNoaW5lcyhyZXBvUGF0aCB8fCAoYXdhaXQga2V5c1JlcG8oKSkucmVwb1BhdGgpKS52YWx1ZXMoKV07XG59XG5cbi8qKiBUaGUgbWFjaGluZXMgdGhlIHNpZ25lZCBmaWxlcyB2b3VjaCBmb3IuIE9ubHkgdGhlIG1hY2hpbmUgZmlsZXMgY292ZXJlZCBieSB0aGUgc2lnbmF0dXJlIGFyZVxuICAgIHJlYWQgLSBhbiB1bnNpZ25lZCBtYWNoaW5lcy8qLmpzb24gaXMgbm90IGV2aWRlbmNlIG9mIGFueXRoaW5nLCBzbyByZWFkU2lnbmVkUmVwbyBoYXMgYWxyZWFkeVxuICAgIGxlZnQgaXQgb3V0LiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVhZFRydXN0ZWRNYWNoaW5lcygpIHtcbiAgICBsZXQgeyByZXBvUGF0aCwgc291cmNlVVJMIH0gPSBhd2FpdCBrZXlzUmVwbygpO1xuICAgIGxldCB7IGZpbGVzIH0gPSBhd2FpdCByZWFkU2lnbmVkUmVwbyh7IHJlcG9QYXRoLCBzb3VyY2VVUkwgfSk7XG4gICAgbGV0IG1hY2hpbmVzOiBNYWNoaW5lU3RhdGVbXSA9IFtdO1xuICAgIGZvciAobGV0IFtmaWxlUGF0aCwgY29udGVudHNdIG9mIGZpbGVzKSB7XG4gICAgICAgIGxldCBuYW1lID0gZmlsZVBhdGguc3RhcnRzV2l0aChgJHtNQUNISU5FU19ESVJ9L2ApICYmIGZpbGVQYXRoLnNsaWNlKE1BQ0hJTkVTX0RJUi5sZW5ndGggKyAxKSB8fCBcIlwiO1xuICAgICAgICBpZiAoIW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSB8fCBuYW1lLmluY2x1ZGVzKFwiL1wiKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1hY2hpbmUgPSBwYXJzZU1hY2hpbmVGaWxlKG5hbWUsIGNvbnRlbnRzLnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICAgIGlmIChtYWNoaW5lKSB7XG4gICAgICAgICAgICBtYWNoaW5lcy5wdXNoKG1hY2hpbmUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYWNoaW5lcztcbn1cblxuY29uc3QgdHJ1c3RlZE1hY2hpbmVzID0gbGF6eShhc3luYyAoKSA9PiB7XG4gICAgbGV0IHJlYWQgPSByZWFkVHJ1c3RlZE1hY2hpbmVzKCk7XG4gICAgcmVhZC5jYXRjaCgoKSA9PiB0cnVzdGVkTWFjaGluZXMucmVzZXQoKSk7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWQ7XG59KTtcblxubGV0IHJlZnJlc2hpbmcgPSBmYWxzZTtcblxuLyoqIFRoZSBtYWNoaW5lcyB0aGlzIHN5c3RlbSB0cnVzdHMsIGFzIHRoZSBzaWduZWQgcmVwbyBsaXN0cyB0aGVtLlxuXG4gICAgSGVsZCByYXRoZXIgdGhhbiByZWFkIHBlciBjYWxsLCBhbmQgcmVmcmVzaGVkIGluIHRoZSBiYWNrZ3JvdW5kLCBzbyBub2JvZHkgYXNraW5nIHdoZXRoZXIgYVxuICAgIG1hY2hpbmUgaXMgdHJ1c3RlZCB3YWl0cyBmb3IgYSBkaXJlY3Rvcnkgb2YgZmlsZXMgdG8gYmUgcmVhZCBhbmQgYSBzaWduYXR1cmUgdG8gYmUgY2hlY2tlZC4gQVxuICAgIHJlZnJlc2ggdGhhdCBmYWlscyBsZWF2ZXMgdGhlIGxpc3Qgd2UgYWxyZWFkeSBoYXZlOiB0aGUgY2hlY2tvdXQgaXMgb25seSBzdGFsZSwgbm90IHdyb25nLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRydXN0ZWRNYWNoaW5lcygpOiBQcm9taXNlPE1hY2hpbmVTdGF0ZVtdPiB7XG4gICAgaWYgKCFyZWZyZXNoaW5nKSB7XG4gICAgICAgIHJlZnJlc2hpbmcgPSB0cnVlO1xuICAgICAgICBydW5JbmZpbml0ZVBvbGwoTUFDSElORVNfUkVGUkVTSF9JTlRFUlZBTCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0cnVzdGVkTWFjaGluZXMuc2V0KFByb21pc2UucmVzb2x2ZShhd2FpdCByZWFkVHJ1c3RlZE1hY2hpbmVzKCkpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ291bGQgbm90IHJlLXJlYWQgdGhlIHRydXN0ZWQgbWFjaGluZXMsIGtlZXBpbmcgdGhlIG9uZXMgd2UgaGF2ZS4gJHtlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRydXN0ZWRNYWNoaW5lcygpO1xufVxuXG4vKiogVGhlIG1hY2hpbmUgaWQgb2YgYSBtYWNoaW5lIHJlYWNoZWQgb3ZlciBzc2gsIGdlbmVyYXRpbmcgYW5kIGluc3RhbGxpbmcgYW4gaWRlbnRpdHkgZm9yIGl0IGlmXG4gICAgaXQgaGFzIG5vbmUgdW5kZXIgdGhpcyBkb21haW4uIFRoZSBwcml2YXRlIGtleSBlbmRzIHVwIG9uIHRoYXQgbWFjaGluZSBhbmQgbm93aGVyZSBlbHNlLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlUmVtb3RlTWFjaGluZUlkKGhvc3Q6IHN0cmluZywgZG9tYWluOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoREVWX2dldElkZW50aXR5RmlsZVBhdGgoZG9tYWluKSk7XG4gICAgbGV0IGhvbWUgPSAoYXdhaXQgcnVuT3ZlclNTSCh7IGhvc3QsIHNjcmlwdDogYGVjaG8gJEhPTUVgIH0pKS5zdGRvdXQudHJpbSgpO1xuICAgIGlmICghaG9tZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aG9zdH0gdG8gcmVwb3J0IGEgaG9tZSBkaXJlY3RvcnksIGl0IHJlcG9ydGVkIG5vdGhpbmdgKTtcbiAgICB9XG4gICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgcnVuT3ZlclNTSCh7IGhvc3QsIHNjcmlwdDogYGNhdCAke2hvbWV9LyR7ZmlsZU5hbWV9IDI+L2Rldi9udWxsIHx8IHRydWVgIH0pO1xuICAgIGlmIChjb250ZW50cy5zdGRvdXQudHJpbSgpKSB7XG4gICAgICAgIGxldCBzdG9yZWQgPSBKU09OLnBhcnNlKGNvbnRlbnRzLnN0ZG91dCkgYXMgSWRlbnRpdHlTdG9yYWdlVHlwZTtcbiAgICAgICAgcmV0dXJuIGdldE1hY2hpbmVJZChzdG9yZWQuZG9tYWluLCBkb21haW4pO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhgJHtkZXNjcmliZUhvc3QoaG9zdCl9IGhhcyBubyBpZGVudGl0eSBmb3IgJHtkb21haW59LCBnZW5lcmF0aW5nIG9uZWApO1xuICAgIGxldCBnZW5lcmF0ZWQgPSBnZW5lcmF0ZUNBKGRvbWFpbik7XG4gICAgbGV0IHN0b3JlZDogSWRlbnRpdHlTdG9yYWdlVHlwZSA9IHtcbiAgICAgICAgZG9tYWluOiBnZW5lcmF0ZWQuZG9tYWluLFxuICAgICAgICBjZXJ0QjY0OiBnZW5lcmF0ZWQuY2VydC50b1N0cmluZyhcImJhc2U2NFwiKSxcbiAgICAgICAga2V5QjY0OiBnZW5lcmF0ZWQua2V5LnRvU3RyaW5nKFwiYmFzZTY0XCIpLFxuICAgIH07XG4gICAgYXdhaXQgd3JpdGVSZW1vdGVGaWxlKHtcbiAgICAgICAgaG9zdCxcbiAgICAgICAgZmlsZVBhdGg6IGAke2hvbWV9LyR7ZmlsZU5hbWV9YCxcbiAgICAgICAgY29udGVudHM6IEpTT04uc3RyaW5naWZ5KHN0b3JlZCksXG4gICAgICAgIGZpbGVNb2RlOiBcIjYwMFwiLFxuICAgICAgICBkaXJlY3RvcnlNb2RlOiBcIjcwMFwiLFxuICAgIH0pO1xuICAgIHJldHVybiBnZXRNYWNoaW5lSWQoZ2VuZXJhdGVkLmRvbWFpbiwgZG9tYWluKTtcbn1cblxuLyoqIE1ha2VzIGEgY2hlY2tvdXQgbGlzdCBleGFjdGx5IHRoZXNlIG1hY2hpbmVzOiB0aG9zZSBuYW1lZCBhcmUgd3JpdHRlbiB3aXRoIHRoZSBhZGRyZXNzZXMgZ2l2ZW4sXG4gICAgYW5kIGFueXRoaW5nIG5vdCBuYW1lZCBpcyByZW1vdmVkLiBTbyByZWFkIHRoZW0sIGNoYW5nZSB3aGF0IHlvdSB3YW50LCBhbmQgd3JpdGUgdGhlIHJlc3VsdC5cblxuICAgIFRoZSBhZGRyZXNzZXMgYXJlIHBhcnQgb2Ygc2V0dGluZyByYXRoZXIgdGhhbiBhIHNlcGFyYXRlIHN0ZXAsIGJlY2F1c2UgYSBtYWNoaW5lIHdpdGggbm9cbiAgICBhZGRyZXNzIGl0IG1heSB0YWxrIGZyb20gaXMgbm90IGEgbWFjaGluZSB0aGF0IHdvdWxkIGV2ZXIgYmUgYWNjZXB0ZWQgLSB0aGVyZSBpcyBubyBzdGF0ZSB3aGVyZVxuICAgIG5hbWluZyBvbmUgd2l0aG91dCB0aGVtIG1lYW5zIGFueXRoaW5nLlxuXG4gICAgTm90aGluZyBoZXJlIHNpZ25zIG9yIGNvbW1pdHMuIFRoZSBzaWduYXR1cmUgaXMgd2hhdCBldmVyeSBvdGhlciBtYWNoaW5lIGNoZWNrcyBiZWZvcmVcbiAgICBiZWxpZXZpbmcgYW55IG9mIHRoaXMsIGFuZCBpdCB0YWtlcyB0aGUgaGFyZHdhcmUga2V5LCBzbyBgeWFybiBzaWduZmlsZXMgZ2l0YCBpcyBzdGlsbCB5b3VycyB0b1xuICAgIHJ1biBhZnRlcndhcmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldE1hY2hpbmVzKGNvbmZpZzoge1xuICAgIHJlcG9QYXRoPzogc3RyaW5nO1xuICAgIG1hY2hpbmVzOiB7IG1hY2hpbmVJZDogc3RyaW5nOyBpcHM6IHN0cmluZ1tdIH1bXTtcbn0pOiBQcm9taXNlPE1hY2hpbmVTdGF0ZVtdPiB7XG4gICAgbGV0IHsgbWFjaGluZXMgfSA9IGNvbmZpZztcbiAgICBsZXQgcmVwb1BhdGggPSBjb25maWcucmVwb1BhdGggfHwgKGF3YWl0IGtleXNSZXBvKCkpLnJlcG9QYXRoO1xuICAgIC8vIFdoYXRldmVyIHdhcyBoZWxkIGlzIG5vdyBzdGFsZSwgd2hvZXZlciByZWFkcyBpdCBuZXh0LlxuICAgIHRydXN0ZWRNYWNoaW5lcy5yZXNldCgpO1xuICAgIGxldCBleGlzdGluZyA9IGF3YWl0IHJlYWRNYWNoaW5lcyhyZXBvUGF0aCk7XG4gICAgbGV0IGRpcmVjdG9yeSA9IHBhdGguam9pbihyZXBvUGF0aCwgTUFDSElORVNfRElSKTtcbiAgICBsZXQgd3JpdHRlbjogTWFjaGluZVN0YXRlW10gPSBbXTtcbiAgICBmb3IgKGxldCBtYWNoaW5lIG9mIG1hY2hpbmVzKSB7XG4gICAgICAgIGlmICghbWFjaGluZS5tYWNoaW5lSWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSBtYWNoaW5lSWQsIHdhcyAke0pTT04uc3RyaW5naWZ5KG1hY2hpbmUubWFjaGluZUlkKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1hY2hpbmUuaXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBFeHBlY3RlZCBhZGRyZXNzZXMgZm9yICR7bWFjaGluZS5tYWNoaW5lSWR9LCB3YXMgbm9uZS4gQSBtYWNoaW5lIGlzIHRydXN0ZWQgZnJvbWBcbiAgICAgICAgICAgICAgICArIGAgdGhlIGFkZHJlc3NlcyBpdCBtYXkgdGFsayBmcm9tLCBzbyBsZWF2ZSBpdCBvdXQgb2YgdGhlIGxpc3QgdG8gcmVtb3ZlIGl0LmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlwcyA9IG1hY2hpbmUuaXBzLmZpbHRlcigoaXAsIGluZGV4KSA9PiBpcCAmJiBtYWNoaW5lLmlwcy5pbmRleE9mKGlwKSA9PT0gaW5kZXgpO1xuICAgICAgICBsZXQgc3RhdGU6IE1hY2hpbmVTdGF0ZSA9IHtcbiAgICAgICAgICAgIG1hY2hpbmVJZDogbWFjaGluZS5tYWNoaW5lSWQsXG4gICAgICAgICAgICAvLyBJbiB0aGUgb3JkZXIgZ2l2ZW4sIHdpdGhvdXQgZHVwbGljYXRlcywgc28gdGhlIGZpbGUgcmVhZHMgdGhlIHdheSBpdCB3YXMgc2V0LlxuICAgICAgICAgICAgaXBzLFxuICAgICAgICAgICAgYWRkZWRBdDogZXhpc3RpbmcuZ2V0KG1hY2hpbmUubWFjaGluZUlkKT8uYWRkZWRBdCB8fCBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGZzLm1rZGlyKGRpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShtYWNoaW5lRmlsZVBhdGgocmVwb1BhdGgsIHN0YXRlLm1hY2hpbmVJZCksIEpTT04uc3RyaW5naWZ5KHN0YXRlLCB1bmRlZmluZWQsIDQpICsgXCJcXG5cIik7XG4gICAgICAgIHdyaXR0ZW4ucHVzaChzdGF0ZSk7XG4gICAgfVxuXG4gICAgLy8gV2hhdGV2ZXIgdGhlIHJlcG8gaGFkIGFuZCB0aGUgY2FsbGVyIGRpZCBub3QgbmFtZSBpcyBubyBsb25nZXIgdHJ1c3RlZC5cbiAgICBmb3IgKGxldCBtYWNoaW5lSWQgb2YgZXhpc3Rpbmcua2V5cygpKSB7XG4gICAgICAgIGlmICghbWFjaGluZXMuc29tZShtYWNoaW5lID0+IG1hY2hpbmUubWFjaGluZUlkID09PSBtYWNoaW5lSWQpKSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5ybShtYWNoaW5lRmlsZVBhdGgocmVwb1BhdGgsIG1hY2hpbmVJZCksIHsgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHdyaXR0ZW47XG59XG5cbmZ1bmN0aW9uIHBhcnNlTWFjaGluZUZpbGUobmFtZTogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogTWFjaGluZVN0YXRlIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgICBsZXQgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50cyk7XG4gICAgICAgIGxldCBtYWNoaW5lSWQgPSBwYXJzZWQubWFjaGluZUlkIHx8IG5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIlwiKTtcbiAgICAgICAgcmV0dXJuIHsgbWFjaGluZUlkLCBpcHM6IHBhcnNlZC5pcHMgfHwgW10sIGFkZGVkQXQ6IHBhcnNlZC5hZGRlZEF0IHx8IFwiXCIgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyB1bnJlYWRhYmxlIG1hY2hpbmUgZmlsZSAke25hbWV9LiAke2V9YCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG4vKiogRXZlcnkgbWFjaGluZSBmaWxlIG9uIGRpc2suIEZvciBlZGl0aW5nIHRoZSByZXBvLCBub3QgZm9yIGRlY2lkaW5nIHRydXN0IC0gdHJ1c3QgcmVhZHMgdGhlXG4gICAgc2lnbmVkIGZpbGVzIHRocm91Z2ggcmVhZFRydXN0ZWRNYWNoaW5lcy4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlYWRNYWNoaW5lcyhyZXBvUGF0aDogc3RyaW5nKSB7XG4gICAgbGV0IG1hY2hpbmVzID0gbmV3IE1hcDxzdHJpbmcsIE1hY2hpbmVTdGF0ZT4oKTtcbiAgICBsZXQgZGlyZWN0b3J5ID0gcGF0aC5qb2luKHJlcG9QYXRoLCBNQUNISU5FU19ESVIpO1xuICAgIGxldCBuYW1lcyA9IGF3YWl0IGZzLnJlYWRkaXIoZGlyZWN0b3J5KS5jYXRjaCgoKSA9PiBbXSBhcyBzdHJpbmdbXSk7XG4gICAgZm9yIChsZXQgbmFtZSBvZiBuYW1lcy5zb3J0KCkpIHtcbiAgICAgICAgaWYgKCFuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtYWNoaW5lID0gcGFyc2VNYWNoaW5lRmlsZShuYW1lLCBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LCBuYW1lKSwgXCJ1dGY4XCIpLmNhdGNoKCgpID0+IFwiXCIpKTtcbiAgICAgICAgaWYgKG1hY2hpbmUpIHtcbiAgICAgICAgICAgIG1hY2hpbmVzLnNldChtYWNoaW5lLm1hY2hpbmVJZCwgbWFjaGluZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hY2hpbmVzO1xufVxuXG5sZXQgbGFzdFJldm9rZVN5bmMgPSAwO1xuXG4vKiogUHVsbHMgdGhlIGtleXMgcmVwbyBhbmQgaXRzIHJldm9rZSByZXBvLCBhdCBtb3N0IG9uY2UgYSBSRVZPS0VfU1lOQ19JTlRFUlZBTCwgYmVjYXVzZSB0aGlzIGlzXG4gICAgYXNrZWQgcGVyIHJlcXVlc3QuIEJvdGgsIHNpbmNlIGVpdGhlciBjaGFuZ2luZyBjaGFuZ2VzIHRoZSBhbnN3ZXI6IHRoZSBrZXlzIHJlcG8gY2FycmllcyB0aGVcbiAgICBtYWNoaW5lcyBhbmQgdW5yZXZva2VzLCB0aGUgcmV2b2tlIHJlcG8gY2FycmllcyB0aGUgcmV2b2NhdGlvbnMuIEEgc3luYyB0aGF0IGZhaWxzIGxlYXZlcyB0aGVcbiAgICBjaGVja291dHMgd2UgYWxyZWFkeSBoYXZlLiAqL1xuYXN5bmMgZnVuY3Rpb24gc3luY1Jldm9jYXRpb25zKHNvdXJjZVVSTDogc3RyaW5nKSB7XG4gICAgaWYgKERhdGUubm93KCkgLSBsYXN0UmV2b2tlU3luYyA8IFJFVk9LRV9TWU5DX0lOVEVSVkFMKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGFzdFJldm9rZVN5bmMgPSBEYXRlLm5vdygpO1xuICAgIGF3YWl0IHN5bmNSZXBvKHNvdXJjZVVSTCkuY2F0Y2goZSA9PiBjb25zb2xlLmxvZyhgQ291bGQgbm90IHN5bmMgJHtzb3VyY2VVUkx9LCB1c2luZyB0aGUgY2hlY2tvdXQgYWxyZWFkeSBoZXJlLiAke2V9YCkpO1xuICAgIGF3YWl0IHN5bmNSZXBvRmlsZXMocmV2b2tlUmVwbyhzb3VyY2VVUkwpKS5jYXRjaChlID0+IGNvbnNvbGUubG9nKGBDb3VsZCBub3Qgc3luYyAke3Jldm9rZVJlcG9VUkwoc291cmNlVVJMKX0sIHVzaW5nIHRoZSByZXZvY2F0aW9ucyBhbHJlYWR5IGFic29yYmVkLiAke2V9YCkpO1xufVxuXG4vKiogV2hhdCB0byBydW4gdG8gdHJ1c3QgYSBtYWNoaW5lIHRoYXQgaGFzIGp1c3QgYmVlbiByZWZ1c2VkLlxuXG4gICAgRXZlcnl0aGluZyBpbiBpdCBpcyBhbHJlYWR5IGtub3duIHRvIHdob2V2ZXIgaXMgYmVpbmcgcmVmdXNlZDogdGhlaXIgbWFjaGluZSBpZCwgdGhlIGFkZHJlc3Mgd2VcbiAgICBzYXcgdGhlbSBhdCwgYW5kIHRoZSBkb21haW4gdGhleSBqdXN0IHRhbGtlZCB0by4gSGFuZGluZyBpdCBiYWNrIHNhdmVzIHRoZW0gd29ya2luZyBvdXQgdGhlXG4gICAgcGFydHMgb2YgYSBjb21tYW5kIHRoZXkgaGF2ZSBldmVyeSByaWdodCB0byBrbm93LiBSdW5uaW5nIGl0IHN0aWxsIHRha2VzIHRoZSBoYXJkd2FyZSBrZXkgb25cbiAgICB0aGUgbWFjaGluZSB0aGF0IG93bnMgdGhlIHJlcG8sIHNvIHRlbGxpbmcgdGhlbSBjb3N0cyBub3RoaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1hY2hpbmVDb21tYW5kKGNvbmZpZzogeyBtYWNoaW5lSWQ6IHN0cmluZzsgaXA6IHN0cmluZzsgZG9tYWluPzogc3RyaW5nIH0pIHtcbiAgICBsZXQgeyBtYWNoaW5lSWQsIGlwLCBkb21haW4gfSA9IGNvbmZpZztcbiAgICByZXR1cm4gYFRvIHRydXN0ICR7bWFjaGluZUlkfSwgcnVuOiB5YXJuIGFkZG1hY2hpbmUgJHtkb21haW4gfHwgXCI8ZG9tYWluPlwifSAke21hY2hpbmVJZH0gJHtpcH0gZ2l0YDtcbn1cblxuLyoqIFNlbmRzIHRoZSBvbmUgbm90aWZpY2F0aW9uIHRoaXMgZmlsZSBpcyBhbGxvd2VkIHRvIHNlbmQsIHdoZW4gaXQgY2FuLlxuXG4gICAgVGhlIGRhZW1vbiBjb25maWd1cmVzIG5vdGlmaWNhdGlvbnMgb24gc3RhcnR1cCBhbmQgd291bGQgc2ltcGx5IHNlbmQuIFRoaXMgY2FuIGFsc28gcnVuIGluIHNvbWVcbiAgICBvdGhlciBwcm9jZXNzLCB3aGljaCBoYXMgbm90LCBzbyB0aGUgd2ViaG9vayBpcyBwaWNrZWQgdXAgaGVyZSBpZiBpdCBpcyByZWFkYWJsZS4gQSBtYWNoaW5lXG4gICAgd2l0aCBubyB3ZWJob29rIHNldCB1cCBzdGlsbCByZWNvcmRzIHRoZSByZXZvY2F0aW9uIC0gYmVpbmcgdW5hYmxlIHRvIHRlbGwgYW55b25lIGlzIG5vdCBhXG4gICAgcmVhc29uIHRvIGtlZXAgYWNjZXB0aW5nIGEgbWFjaGluZSB0aGF0IGlzIGJlaW5nIG1pc3VzZWQuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlCZXN0RWZmb3J0KGhlYWRsaW5lOiBzdHJpbmcsIGJvZHk6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICghYXJlRGlzY29yZE5vdGlmaWNhdGlvbnNDb25maWd1cmVkKCkpIHtcbiAgICAgICAgICAgIC8vIFJlYWQgZmlyc3Q6IGNvbmZpZ3VyZURpc2NvcmROb3RpZmljYXRpb25zIGV4aXRzIHRoZSBwcm9jZXNzIHdoZW4gdGhlIGZpbGUgaXMgbWlzc2luZyxcbiAgICAgICAgICAgIC8vIHdoaWNoIGlzIHJpZ2h0IGZvciB0aGUgZGFlbW9uIGF0IHN0YXJ0dXAgYW5kIHdyb25nIGZvciBhIGxpYnJhcnkgY2FsbC5cbiAgICAgICAgICAgIGF3YWl0IGZzLnJlYWRGaWxlKERFRkFVTFRfV0VCSE9PS19GSUxFX1BBVEgsIFwidXRmOFwiKTtcbiAgICAgICAgICAgIGF3YWl0IGNvbmZpZ3VyZURpc2NvcmROb3RpZmljYXRpb25zKHsgZmlsZVBhdGg6IERFRkFVTFRfV0VCSE9PS19GSUxFX1BBVEggfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbm90aWZ5KGhlYWRsaW5lLCBib2R5KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBDb3VsZCBub3Qgc2VuZCBhIG5vdGlmaWNhdGlvbiBhYm91dCB0aGlzLCBpdCBpcyBvbmx5IGluIHRoZSBsb2cuICR7ZX1gKTtcbiAgICB9XG59XG5cbi8qKiBSZWNvcmRzIHRoYXQgYSBtYWNoaW5lIHdlIGFjY2VwdCB0YWxrZWQgdG8gdXMgZnJvbSBhbiBhZGRyZXNzIGl0IGlzIG5vdCBhbGxvd2VkIGZyb20uIE9uZSBwZXJcbiAgICBtYWNoaW5lIGFuZCBhZGRyZXNzLCBzbyBhIHNlY29uZCBhZGRyZXNzIGlzIGEgc2Vjb25kIHJldm9jYXRpb24gYW5kIGFuIHVucmV2b2tlIG9mIHRoZSBmaXJzdFxuICAgIGRvZXMgbm90IGNvdmVyIGl0LiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVjb3JkTWFjaGluZVJldm9jYXRpb24oY29uZmlnOiB7XG4gICAgc291cmNlVVJMOiBzdHJpbmc7XG4gICAgbWFjaGluZUlkOiBzdHJpbmc7XG4gICAgaXA6IHN0cmluZztcbiAgICBob3N0TGFiZWw6IHN0cmluZztcbn0pIHtcbiAgICBsZXQgeyBzb3VyY2VVUkwsIG1hY2hpbmVJZCwgaXAsIGhvc3RMYWJlbCB9ID0gY29uZmlnO1xuICAgIC8vIENsb25lcyBpdCBpZiBpdCBpcyBub3QgaGVyZSB5ZXQsIHdoaWNoIGlzIHRoZSB1c3VhbCBzdGF0ZSBvZiBhIG1hY2hpbmUgdGhhdCBoYXMgbmV2ZXIgaGFkIHRvXG4gICAgLy8gcmV2b2tlIGFueXRoaW5nLiBXaXRob3V0IHRoaXMgdGhlIG1rZGlyIGJlbG93IHdvdWxkIGJ1aWxkIHRoZSBkaXJlY3RvcnkgYW55d2F5IGFuZCBnaXQgd291bGRcbiAgICAvLyB0aGVuIGJlIHJ1biBzb21ld2hlcmUgdGhhdCBpcyBub3QgYSBjaGVja291dCwgc28gdGhlIHJldm9jYXRpb24gd2FzIHdyaXR0ZW4gd2hlcmUgbm90aGluZ1xuICAgIC8vIHdvdWxkIGV2ZXIgcmVhZCBpdC5cbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBzeW5jUmVwb0ZpbGVzKHJldm9rZVJlcG8oc291cmNlVVJMKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgcmVjb3JkIHRoZSByZXZvY2F0aW9uIG9mICR7bWFjaGluZUlkfSwgJHtyZXZva2VSZXBvVVJMKHNvdXJjZVVSTCl9IGNvdWxkIG5vdCBiZSByZWFkLiAke2V9YCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHJlcG9QYXRoID0gcmV2b2tlUmVwb1BhdGgoc291cmNlVVJMKTtcbiAgICBsZXQga2V5UGF0aCA9IGF3YWl0IGVuc3VyZVJldm9rZUtleShzb3VyY2VVUkwpO1xuICAgIGxldCByZXZvY2F0aW9uSWQgPSBuZXdSZXZvY2F0aW9uSWQobWFjaGluZUlkKTtcbiAgICBsZXQgcmV2b2tlZEF0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIGxldCBkaXJlY3RvcnkgPSBwYXRoLmpvaW4ocmVwb1BhdGgsIFJFVk9DQVRJT05TX0RJUik7XG4gICAgYXdhaXQgZnMubWtkaXIoZGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aC5qb2luKGRpcmVjdG9yeSwgYCR7cmV2b2NhdGlvbklkfS5qc29uYCksIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgcmV2b2NhdGlvbklkLFxuICAgICAgICBtYWNoaW5lSWQsXG4gICAgICAgIGlwLFxuICAgICAgICByZXZva2VkQXQsXG4gICAgICAgIHJldm9rZWRCeTogaG9zdExhYmVsLFxuICAgICAgICByZWFzb246IFJFVk9DQVRJT05fUkVBU09OLFxuICAgIH0sIHVuZGVmaW5lZCwgNCkgKyBcIlxcblwiKTtcblxuICAgIGF3YWl0IHJ1bkdpdCh7IGFyZ3M6IFtcImFkZFwiLCBcIi1BXCJdLCBjd2Q6IHJlcG9QYXRoLCBrZXlQYXRoIH0pO1xuICAgIGF3YWl0IHJ1bkdpdCh7XG4gICAgICAgIGFyZ3M6IFtcIi1jXCIsIFwidXNlci5lbWFpbD1wb3J0c2VjdXJlQGxvY2FsaG9zdFwiLCBcIi1jXCIsIFwidXNlci5uYW1lPXBvcnRzZWN1cmVcIiwgXCJjb21taXRcIiwgXCItbVwiLCBgcmV2b2tlICR7cmV2b2NhdGlvbklkfWBdLFxuICAgICAgICBjd2Q6IHJlcG9QYXRoLCBrZXlQYXRoLFxuICAgIH0pO1xuICAgIGxldCBwdXNoID0gYXdhaXQgcnVuR2l0KHsgYXJnczogW1wicHVzaFwiLCBcIm9yaWdpblwiLCBcIkhFQURcIl0sIGN3ZDogcmVwb1BhdGgsIGtleVBhdGgsIGFsbG93RmFpbHVyZTogdHJ1ZSB9KTtcbiAgICBpZiAocHVzaC5zdGF0dXMgIT09IDApIHtcbiAgICAgICAgLy8gQW5vdGhlciBtYWNoaW5lIG1vc3QgbGlrZWx5IHJlY29yZGVkIHRoZSBzYW1lIHRoaW5nIGZpcnN0LCBhbmQgdGhlIG5leHQgcmVhZCBwaWNrcyBpdCB1cC5cbiAgICAgICAgY29uc29sZS5sb2coYENvdWxkIG5vdCBwdXNoIHRoZSByZXZvY2F0aW9uIG9mICR7bWFjaGluZUlkfSBmcm9tICR7aXB9LiAkeyhwdXNoLnN0ZG91dCArIHB1c2guc3RkZXJyKS50cmltKCl9YCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbm90ZVJldm9jYXRpb24ocmV2b2NhdGlvbklkLCB7IGlkZW50aXR5OiBtYWNoaW5lSWQsIGlwLCByZXZva2VkQXQsIHJldm9rZWRCeTogaG9zdExhYmVsIH0pO1xuICAgIGNvbnNvbGUubG9nKGBSZXZva2VkICR7bWFjaGluZUlkfSBmcm9tICR7aXB9LCAke3Jldm9jYXRpb25JZH1gKTtcblxuICAgIC8vIFNhaWQgYnkgd2hvZXZlciB3cm90ZSB0aGUgcmV2b2NhdGlvbiwgb25jZSwgdGhlIHNhbWUgYXMgZm9yIGFuIHNzaCBrZXkuIE1hY2hpbmVzIHRoYXQgb25seVxuICAgIC8vIHJlYWQgaXQgbGF0ZXIgc2F5IG5vdGhpbmcsIG9yIG9uZSBldmVudCB3b3VsZCBiZSByZXBvcnRlZCBieSBldmVyeSBtYWNoaW5lIHRoYXQgc2F3IGl0LlxuICAgIGF3YWl0IG5vdGlmeUJlc3RFZmZvcnQoXG4gICAgICAgIGBTVVNQSUNJT1VTIElQICR7aXB9IEZST1pFIE1BQ0hJTkUgJHttYWNoaW5lSWR9YCxcbiAgICAgICAgYFRydXN0ZWQgbWFjaGluZSAke21hY2hpbmVJZH0gdGFsa2VkIHRvIHVzIGZyb20gJHtpcH0sIGFuIGFkZHJlc3MgJHttYWNoaW5lSWR9IGlzIG5vdGBcbiAgICAgICAgKyBgIGFsbG93ZWQgZnJvbS4gVGhlIGNhbGxlciBwcm92ZWQgcG9zc2Vzc2lvbiBvZiAke21hY2hpbmVJZH0ncyBrZXksIHNvIGVpdGhlciBzb21lb25lYFxuICAgICAgICArIGAgZWxzZSBoYXMgYSBjb3B5IG9mIHRoZSBrZXksIG9yIHRoZSBtYWNoaW5lJ3MgYWRkcmVzcyBjaGFuZ2VkLmBcbiAgICAgICAgKyBgXFxuXFxuTWFjaGluZSAke21hY2hpbmVJZH0gaXMgZnJvemVuIGV2ZXJ5d2hlcmUgbm93LCBhbmQgbm90aGluZyBhY2NlcHRzIGNhbGxzIGZyb20gJHttYWNoaW5lSWR9LmBcbiAgICAgICAgKyBgXFxuXFxuSWYgdGhpcyB3YXMgYW4gYXR0YWNrLCByZW1vdmUgXFxgbWFjaGluZXMvJHttYWNoaW5lSWR9Lmpzb25cXGAgZnJvbSBcXGAke3NvdXJjZVVSTH1cXGAgbm93LmBcbiAgICAgICAgKyBgXFxuSWYgdGhlIG5ldyBhZGRyZXNzIGlzIGxlZ2l0aW1hdGUsIHJ1bjpgXG4gICAgICAgICsgYFxcblxcYFxcYFxcYFxcbmNkICR7c291cmNlUmVwb1BhdGgoc291cmNlVVJMKX1cXG55YXJuIHVucmV2b2tlIGdpdFxcblxcYFxcYFxcYGBcbiAgICAgICAgKyBgXFxuVGhlIHVucmV2b2tlIGFsbG93cyAke21hY2hpbmVJZH0gZnJvbSAke2lwfSwgYW5kIHRha2VzIGVmZmVjdCBhcyBlYWNoIG1hY2hpbmUgcGlja3MgaXQgdXAuYFxuICAgICAgICArIGBcXG5cXG5tYWNoaW5lOiBcXGAke21hY2hpbmVJZH1cXGBgXG4gICAgICAgICsgYFxcbmZyb3plbiBieTogXFxgJHtob3N0TGFiZWx9XFxgYFxuICAgICk7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBXaGV0aGVyIHdlIHdpbGwgdGFsayB0byB0aGlzIG1hY2hpbmUsIGNvbWluZyBmcm9tIHRoaXMgYWRkcmVzcy5cblxuICAgIEJvdGggaGFsdmVzIGFyZSByZXF1aXJlZCBhbmQgbmVpdGhlciBpcyBhIGd1ZXNzOiB0aGUgY2FsbGVyIGtub3dzIHRoZSBtYWNoaW5lIGlkIGJlY2F1c2UgdGhlXG4gICAgY29ubmVjdGlvbiBwcm92ZWQgaXQsIGFuZCBrbm93cyB0aGUgYWRkcmVzcyBiZWNhdXNlIHRoZSBwYWNrZXRzIGNhbWUgZnJvbSB0aGVyZS4gQSBtYWNoaW5lIHdlXG4gICAgZG8gbm90IGxpc3QgaXMgc2ltcGx5IG5vdCBhY2NlcHRlZC4gQSBtYWNoaW5lIHdlIGRvIGxpc3QsIGFycml2aW5nIGZyb20gYW4gYWRkcmVzcyBpdCBkb2VzIG5vdFxuICAgIGhhdmUsIGlzIHRyZWF0ZWQgYXMgdGhlIHNhbWUga2luZCBvZiBldmVudCBhcyBhIHN0b2xlbiBzc2gga2V5IC0gaXQgaXMgcmV2b2tlZCBldmVyeXdoZXJlLCBhbmRcbiAgICBzdGF5cyByZXZva2VkIHVudGlsIGFuIHVucmV2b2tlIGFsbG93cyB0aGF0IG1hY2hpbmUgZnJvbSB0aGF0IGFkZHJlc3MuXG5cbiAgICBTYXlzIHdoeSB3aGVuIHRoZSBhbnN3ZXIgaXMgbm8sIGJlY2F1c2UgdGhlIHRocmVlIHdheXMgdG8gYmUgcmVmdXNlZCBhcmUgZW50aXJlbHkgZGlmZmVyZW50XG4gICAgdGhpbmdzIHRvIGEgcGVyc29uIHJlYWRpbmcgaXQ6IG5ldmVyIHRydXN0ZWQgYXQgYWxsLCB0cnVzdGVkIGJ1dCBmcm96ZW4sIG9yIHRydXN0ZWQgYW5kIHRhbGtpbmdcbiAgICBmcm9tIHNvbWV3aGVyZSBpdCBzaG91bGQgbm90IGJlLlxuXG4gICAgVGhyb3dzIHdoZW4gdGhlIHJlcG8gaXRzZWxmIGNhbm5vdCBiZSByZWFkIG9yIGlzIG5vdCBzaWduZWQsIHJhdGhlciB0aGFuIGFuc3dlcmluZyBmYWxzZTogdGhhdFxuICAgIGlzIGEgYnJva2VuIGluc3RhbGxhdGlvbiwgbm90IGEgcmVqZWN0ZWQgbWFjaGluZSwgYW5kIHRoZSB0d28gZGVzZXJ2ZSBkaWZmZXJlbnQgaGFuZGxpbmcuICovXG5leHBvcnQgdHlwZSBNYWNoaW5lVmVyZGljdCA9IHsgYWNjZXB0ZWQ6IGJvb2xlYW47IHJlYXNvbjogc3RyaW5nIH07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc01hY2hpbmVBY2NlcHRlZChjb25maWc6IHtcbiAgICBtYWNoaW5lSWQ6IHN0cmluZztcbiAgICBpcDogc3RyaW5nO1xuICAgIC8vIFVzZWQgZm9yIGxvY2FsIGxvb3BiYWNrIGFjY2VwdGFuY2UsIGFuZCBmb3IgYmV0dGVyIGVycm9yIG1lc3NhZ2VzLlxuICAgIGRvbWFpbj86IHN0cmluZztcbn0pOiBQcm9taXNlPE1hY2hpbmVWZXJkaWN0PiB7XG4gICAgbGV0IHsgbWFjaGluZUlkLCBpcCwgZG9tYWluIH0gPSBjb25maWc7XG4gICAgaWYgKCFtYWNoaW5lSWQgfHwgIWlwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSBtYWNoaW5lSWQgYW5kIGFuIGlwLCB3YXMgJHtKU09OLnN0cmluZ2lmeShtYWNoaW5lSWQpfSBhbmQgJHtKU09OLnN0cmluZ2lmeShpcCl9YCk7XG4gICAgfVxuXG4gICAgLy8gVGhlIHdob2xlIGNoZWNrLCBwbHVzIHdoZXRoZXIgaXQgZnJvemUgdGhlIG1hY2hpbmUuIEEgcmVqZWN0aW9uIHRoYXQgZnJvemUgaXQgaXMgZmluYWwsIHNvXG4gICAgLy8gdGhlcmUgaXMgbm90aGluZyB0byBnYWluIGZyb20gbG9va2luZyBhZ2Fpbi4gQW55IG90aGVyIHJlamVjdGlvbiBtaWdodCBqdXN0IGJlIGEgc3RhbGUgdmlldyAtXG4gICAgLy8gYSBtYWNoaW5lIGFkZGVkIHNlY29uZHMgYWdvIHRoYXQgb3VyIGNhY2hlZCBsaXN0IGhhcyBub3QgY2F1Z2h0IHVwIHRvIC0gc28gaXQgaXMgd29ydGggb25lXG4gICAgLy8gZnJlc2ggbG9vaywgd2hpY2ggaXMgd2hhdCB0aGUgcmV0cnkgYmVsb3cgZG9lcy5cbiAgICBsZXQgZXZhbHVhdGUgPSBhc3luYyAoKTogUHJvbWlzZTx7IHZlcmRpY3Q6IE1hY2hpbmVWZXJkaWN0OyBmcm96ZTogYm9vbGVhbiB9PiA9PiB7XG4gICAgICAgIGlmIChMT09QQkFDSy5pbmNsdWRlcyhpcCkgJiYgISFkb21haW4gJiYgbWFjaGluZUlkID09PSBnZXRPd25NYWNoaW5lSWQoZG9tYWluKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgdmVyZGljdDogeyBhY2NlcHRlZDogdHJ1ZSwgcmVhc29uOiBcIlwiIH0sIGZyb3plOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHNvdXJjZVVSTCB9ID0gYXdhaXQga2V5c1JlcG8oKTtcbiAgICAgICAgYXdhaXQgc3luY1Jldm9jYXRpb25zKHNvdXJjZVVSTCk7XG4gICAgICAgIC8vIFRoZSBsaXN0IGhhcyByZXZvY2F0aW9ucyBhbHJlYWR5IGFwcGxpZWQgLSByZWFkU2lnbmVkUmVwbyBkcm9wcyBmcm96ZW4gbWFjaGluZXMgLSBzbyBhXG4gICAgICAgIC8vIG1hY2hpbmUgaW4gaXQgaXMgdHJ1c3RlZCwgYW5kIGEgbWFjaGluZSBtaXNzaW5nIGZyb20gaXQgaXMgZWl0aGVyIHVua25vd24gb3IgZnJvemVuLlxuICAgICAgICBsZXQgbWFjaGluZSA9IChhd2FpdCBnZXRUcnVzdGVkTWFjaGluZXMoKSkuZmluZChlbnRyeSA9PiBlbnRyeS5tYWNoaW5lSWQgPT09IG1hY2hpbmVJZCk7XG4gICAgICAgIGlmICghbWFjaGluZSkge1xuICAgICAgICAgICAgbGV0IGZyb3plbiA9IGlkZW50aXR5RnJvemVuQnkobWFjaGluZUlkKTtcbiAgICAgICAgICAgIGlmIChmcm96ZW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2ZXJkaWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWFzb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYE1hY2hpbmUgJHttYWNoaW5lSWR9IGlzIGZyb3plbjogaXQgd2FzIHVzZWQgZnJvbSAke2Zyb3plbi5pcCB8fCBcImFuIGFkZHJlc3Mgbm90aGluZyByZWNvcmRlZFwifWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGAke2Zyb3plbi5yZXZva2VkQXQgJiYgYCwgYXQgJHtmcm96ZW4ucmV2b2tlZEF0fWAgfHwgXCJcIn1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBgJHtmcm96ZW4ucmV2b2tlZEJ5ICYmIGAsIG5vdGljZWQgYnkgJHtmcm96ZW4ucmV2b2tlZEJ5fWAgfHwgXCJcIn1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBgLCB3aGljaCBpcyBub3QgYW4gYWRkcmVzcyBpdCBpcyBhbGxvd2VkIGZyb20gKHJldm9jYXRpb24gJHtmcm96ZW4ucmV2b2NhdGlvbklkfSkuYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYCBUbyBnaXZlIGl0IGFjY2VzcyBhZ2FpbiwgcnVuOiBjZCAke3NvdXJjZVJlcG9QYXRoKHNvdXJjZVVSTCl9ICYmIHlhcm4gdW5yZXZva2UgZ2l0YCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZnJvemU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyB2ZXJkaWN0OiB7IGFjY2VwdGVkOiBmYWxzZSwgcmVhc29uOiBgTWFjaGluZSAke21hY2hpbmVJZH0gaXMgbm90IHRydXN0ZWQuICR7YWRkTWFjaGluZUNvbW1hbmQoeyBtYWNoaW5lSWQsIGlwLCBkb21haW4gfSl9YCB9LCBmcm96ZTogZmFsc2UgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvb3BiYWNrIGlzIGFsd2F5cyBhbiBhbGxvd2VkIGFkZHJlc3MuIFRoZSBtYWNoaW5lIHN0aWxsIGhhcyB0byBiZSB0cnVzdGVkIC0gYW4gdW5rbm93blxuICAgICAgICAvLyBvciBmcm96ZW4gb25lIHdhcyBhbHJlYWR5IHJlZnVzZWQgYWJvdmUgLSBidXQgbm8gaXAgbGlzdCBjYW4gZGVzY3JpYmUgYSBtYWNoaW5lIHRhbGtpbmdcbiAgICAgICAgLy8gdG8gaXRzZWxmOiBhIG1hY2hpbmUgaXMgbGlzdGVkIHVuZGVyIHRoZSBhZGRyZXNzIG90aGVycyByZWFjaCBpdCBhdCwgbmV2ZXIgMTI3LjAuMC4xLFxuICAgICAgICAvLyBzbyBjaGVja2luZyBsb29wYmFjayBhZ2FpbnN0IHRoYXQgbGlzdCByZWplY3RzIGV2ZXJ5IGxvY2FsIGNhbGwgYW5kIHRoZW4gZnJlZXplcyB0aGVcbiAgICAgICAgLy8gbWFjaGluZSBldmVyeXdoZXJlIGZvciBtYWtpbmcgaXQuXG4gICAgICAgIGlmIChtYWNoaW5lLmlwcy5pbmNsdWRlcyhpcCkgfHwgTE9PUEJBQ0suaW5jbHVkZXMoaXApKSB7XG4gICAgICAgICAgICByZXR1cm4geyB2ZXJkaWN0OiB7IGFjY2VwdGVkOiB0cnVlLCByZWFzb246IFwiXCIgfSwgZnJvemU6IGZhbHNlIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMaXN0ZWQsIGJ1dCB0YWxraW5nIHRvIHVzIGZyb20gc29tZXdoZXJlIGl0IHNob3VsZCBub3QgYmUuIFJlY29yZGVkIG9uY2UgZm9yIHRoaXMgbWFjaGluZVxuICAgICAgICAvLyBhbmQgYWRkcmVzcywgc28gYmVpbmcgdGFsa2VkIHRvIHJlcGVhdGVkbHkgZG9lcyBub3Qgd3JpdGUgcmVwZWF0ZWRseS5cbiAgICAgICAgaWYgKCFpc1BhaXJSZXZva2VkKG1hY2hpbmVJZCwgaXApICYmICFpc1BhaXJVbnJldm9rZWQobWFjaGluZUlkLCBpcCkpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgdGhlIG1hY2hpbmUgdGhhdCBhY3R1YWxseSB3cm90ZSB0aGUgcmV2b2NhdGlvbiBtYXkgc2F5IGl0IGZyb3plIGFueXRoaW5nLiBPbmVcbiAgICAgICAgICAgIC8vIHRoYXQgY291bGQgbm90IHJlYWNoIHRoZSByZXZva2UgcmVwbyBoYXMgcmVmdXNlZCB0aGlzIGNhbGwgYW5kIG5vdGhpbmcgbW9yZS5cbiAgICAgICAgICAgIGxldCBmcm96ZSA9IGF3YWl0IHJlY29yZE1hY2hpbmVSZXZvY2F0aW9uKHsgc291cmNlVVJMLCBtYWNoaW5lSWQsIGlwLCBob3N0TGFiZWw6IG9zLmhvc3RuYW1lKCkgfSk7XG4gICAgICAgICAgICBsZXQgcmVhc29uID0gZnJvemVcbiAgICAgICAgICAgICAgICAmJiBgTWFjaGluZSAke21hY2hpbmVJZH0gaXMgbm90IGFsbG93ZWQgZnJvbSAke2lwfSwgYW5kIGlzIG5vdyBmcm96ZW4gZXZlcnl3aGVyZS5gXG4gICAgICAgICAgICAgICAgfHwgYE1hY2hpbmUgJHttYWNoaW5lSWR9IGlzIG5vdCBhbGxvd2VkIGZyb20gJHtpcH0uIEl0IGNvdWxkIG5vdCBiZSBmcm96ZW4sICR7cmV2b2tlUmVwb1VSTChzb3VyY2VVUkwpfSBjb3VsZCBub3QgYmUgd3JpdHRlbi5gO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmVyZGljdDogeyBhY2NlcHRlZDogZmFsc2UsIHJlYXNvbiB9LCBmcm96ZSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHZlcmRpY3Q6IHsgYWNjZXB0ZWQ6IGZhbHNlLCByZWFzb246IGBNYWNoaW5lICR7bWFjaGluZUlkfSBpcyBub3QgYWxsb3dlZCBmcm9tICR7aXB9LmAgfSwgZnJvemU6IGZhbHNlIH07XG4gICAgfTtcblxuICAgIGxldCB7IHZlcmRpY3QsIGZyb3plIH0gPSBhd2FpdCBldmFsdWF0ZSgpO1xuICAgIC8vIEFuIGFjY2VwdCwgb3IgYSByZWplY3Rpb24gdGhhdCBqdXN0IGZyb3plIHRoZSBtYWNoaW5lLCBpcyB0aGUgZmluYWwgd29yZC4gQW55IG90aGVyIHJlamVjdGlvblxuICAgIC8vIG1pZ2h0IGp1c3QgYmUgYSBzdGFsZSBsaXN0IC0gYSBtYWNoaW5lIGFkZGVkIHNlY29uZHMgYWdvIHdlIGhhdmUgbm90IGNhdWdodCB1cCB0byAtIHNvIGl0IGlzXG4gICAgLy8gd29ydGggb25lIGZyZXNoIGxvb2suXG4gICAgaWYgKHZlcmRpY3QuYWNjZXB0ZWQgfHwgZnJvemUpIHtcbiAgICAgICAgcmV0dXJuIHZlcmRpY3Q7XG4gICAgfVxuICAgIC8vIFJlLXJlYWQgdGhlIGxpc3QgYXQgbW9zdCBvbmNlIGEgbWludXRlLCBzbyBhIGJ1cnN0IG9mIGJhZCBjYWxsZXJzIGNhbm5vdCBtYWtlIHVzIHJlLXJlYWQgb25cbiAgICAvLyBldmVyeSBvbmUgb2YgdGhlbS4gRm9yY2UgdGhlIGNoZWNrb3V0IGJhY2sgdG8gdGhlIHJlbW90ZSBmaXJzdCwgc28gYSBtYWNoaW5lIGFkZGVkIGFuZCBzaWduZWRcbiAgICAvLyBzZWNvbmRzIGFnbyBpcyBwaWNrZWQgdXAgZXZlbiBpZiB0aGUgY2hlY2tvdXQgd2FzIGxlZnQgZGlydHksIHRoZW4gdGFrZSB0aGUgZnJlc2ggbG9vayBhc1xuICAgIC8vIGZpbmFsLlxuICAgIGlmIChEYXRlLm5vdygpIC0gbGFzdE1hY2hpbmVzSW52YWxpZGF0aW9uID4gTUFDSElORVNfSU5WQUxJREFUSU9OX0lOVEVSVkFMKSB7XG4gICAgICAgIGxhc3RNYWNoaW5lc0ludmFsaWRhdGlvbiA9IERhdGUubm93KCk7XG4gICAgICAgIGxldCB7IHNvdXJjZVVSTCB9ID0gYXdhaXQga2V5c1JlcG8oKTtcbiAgICAgICAgYXdhaXQgc3luY1JlcG8oc291cmNlVVJMLCB7IGZvcmNlVXBkYXRlOiB0cnVlIH0pLmNhdGNoKGUgPT4gY29uc29sZS5sb2coYENvdWxkIG5vdCBmb3JjZSB1cGRhdGUgJHtzb3VyY2VVUkx9LiAke2V9YCkpO1xuICAgICAgICB0cnVzdGVkTWFjaGluZXMucmVzZXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCBldmFsdWF0ZSgpKS52ZXJkaWN0O1xufVxuIl19
402
- /* _JS_SOURCE_HASH = "a5c58de49f1501689d06d7873c95fc770b44f0095213aab40ba702bf6d1d33ce"; */
413
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjaGluZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYWNoaW5lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyREFBNkI7QUFDN0IsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4Qix5REFBNkQ7QUFDN0Qsa0VBQStFO0FBQy9FLG9FQUFzRTtBQUN0RSxzREFBZ0U7QUFDaEUsa0VBQXFFO0FBQ3JFLDRFQUEySTtBQUMzSSxpRUFBK0U7QUFDL0UsdURBQTJEO0FBQzNELDREQUF5RDtBQUN6RCxzREFBdUk7QUFDdkksa0RBQWlJO0FBQ2pJLG9EQUFpRjtBQUNqRix5REFBbUQ7QUFDbkQsMkRBQTRFO0FBRzVFLG1HQUFtRztBQUNuRyxpR0FBaUc7QUFDakcsZ0VBQWdFO0FBQ25ELFFBQUEsWUFBWSxHQUFHLFVBQVUsQ0FBQztBQUN2QyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUM7QUFDdEMsTUFBTSxpQkFBaUIsR0FBRyw4Q0FBOEMsQ0FBQztBQUN6RSxnR0FBZ0c7QUFDaEcsbUNBQW1DO0FBQ25DLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUN2Qyw2RkFBNkY7QUFDN0YsaUdBQWlHO0FBQ2pHLGtFQUFrRTtBQUNsRSxNQUFNLHlCQUF5QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDNUMsZ0dBQWdHO0FBQ2hHLGlHQUFpRztBQUNqRywwREFBMEQ7QUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ25DLE1BQU0sUUFBUSxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzFELGdHQUFnRztBQUNoRyxnR0FBZ0c7QUFDaEcsTUFBTSw4QkFBOEIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2pELElBQUksd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0FBU2pDLEtBQUssVUFBVSxVQUFVLENBQUMsUUFBZ0I7SUFDdEMsSUFBSSxDQUFDO1FBQ0QsTUFBTSxrQkFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNULE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsUUFBZ0IsRUFBRSxTQUFpQjtJQUN4RCxPQUFPLGNBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLG9CQUFZLEVBQUUsR0FBRyxTQUFTLE9BQU8sQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDs7O3VGQUd1RjtBQUMxRSxRQUFBLFFBQVEsR0FBRyxJQUFBLGNBQUksRUFBQyxLQUFLLElBQUksRUFBRTtJQUNwQyxJQUFJLE1BQU0sR0FBRyxJQUFBLDBCQUFlLEdBQUUsQ0FBQztJQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNkLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDO0FBRUgsMEVBQTBFO0FBQ25FLEtBQUssVUFBVSxXQUFXLENBQUMsUUFBaUI7SUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLFlBQVksQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLElBQUEsZ0JBQVEsR0FBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFGRCxrQ0FFQztBQUVEOzttQkFFbUI7QUFDbkIsS0FBSyxVQUFVLG1CQUFtQjtJQUM5QixJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBQSxnQkFBUSxHQUFFLENBQUM7SUFDL0MsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBQSwrQkFBYyxFQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUQsSUFBSSxRQUFRLEdBQW1CLEVBQUUsQ0FBQztJQUNsQyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLG9CQUFZLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsb0JBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxTQUFTO1FBQ2IsQ0FBQztRQUNELElBQUksT0FBTyxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDaEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxlQUFlLEdBQUcsSUFBQSxjQUFJLEVBQUMsS0FBSyxJQUFJLEVBQUU7SUFDcEMsSUFBSSxJQUFJLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztJQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sTUFBTSxJQUFJLENBQUM7QUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFFdkI7Ozs7aUdBSWlHO0FBQzFGLEtBQUssVUFBVSxrQkFBa0I7SUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2QsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFBLDBCQUFlLEVBQUMseUJBQXlCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbEQsSUFBSSxDQUFDO2dCQUNELGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMscUVBQXFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUYsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sTUFBTSxlQUFlLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBWkQsZ0RBWUM7QUFFRDsrRkFDK0Y7QUFDeEYsS0FBSyxVQUFVLDBCQUEwQixDQUFDLElBQVksRUFBRSxNQUFjO0lBQ3pFLElBQUksUUFBUSxHQUFHLGNBQUksQ0FBQyxRQUFRLENBQUMsSUFBQSwrQkFBdUIsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFBLHNCQUFVLEVBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksa0RBQWtELENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQ0QsSUFBSSxRQUFRLEdBQUcsTUFBTSxJQUFBLHNCQUFVLEVBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sSUFBSSxJQUFJLFFBQVEsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBd0IsQ0FBQztRQUNoRSxPQUFPLElBQUEsb0JBQVksRUFBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBQSx3QkFBWSxFQUFDLElBQUksQ0FBQyx3QkFBd0IsTUFBTSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ25GLElBQUksU0FBUyxHQUFHLElBQUEsa0JBQVUsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxJQUFJLE1BQU0sR0FBd0I7UUFDOUIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ3hCLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDMUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztLQUMzQyxDQUFDO0lBQ0YsTUFBTSxJQUFBLDJCQUFlLEVBQUM7UUFDbEIsSUFBSTtRQUNKLFFBQVEsRUFBRSxHQUFHLElBQUksSUFBSSxRQUFRLEVBQUU7UUFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ2hDLFFBQVEsRUFBRSxLQUFLO1FBQ2YsYUFBYSxFQUFFLEtBQUs7S0FDdkIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFBLG9CQUFZLEVBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBMUJELGdFQTBCQztBQUVEOzs7Ozs7Ozs7c0JBU3NCO0FBQ2YsS0FBSyxVQUFVLFdBQVcsQ0FBQyxNQUdqQzs7SUFDRyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzFCLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLElBQUEsZ0JBQVEsR0FBRSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzlELHlEQUF5RDtJQUN6RCxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsSUFBSSxRQUFRLEdBQUcsTUFBTSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsSUFBSSxTQUFTLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsb0JBQVksQ0FBQyxDQUFDO0lBQ2xELElBQUksT0FBTyxHQUFtQixFQUFFLENBQUM7SUFDakMsS0FBSyxJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FDWCwwQkFBMEIsT0FBTyxDQUFDLFNBQVMsdUNBQXVDO2tCQUNoRiw0RUFBNEUsQ0FDakYsQ0FBQztRQUNOLENBQUM7UUFDRCxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUNyRixJQUFJLEtBQUssR0FBaUI7WUFDdEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQzVCLGdGQUFnRjtZQUNoRixHQUFHO1lBQ0gsT0FBTyxFQUFFLENBQUEsTUFBQSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsMENBQUUsT0FBTyxLQUFJLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1NBQ2hGLENBQUM7UUFDRixNQUFNLGtCQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sa0JBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzNHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSxLQUFLLElBQUksU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sa0JBQUUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQXhDRCxrQ0F3Q0M7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQVksRUFBRSxRQUFnQjtJQUNwRCxJQUFJLENBQUM7UUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUM7SUFDL0UsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0FBQ0wsQ0FBQztBQUVEO2dEQUNnRDtBQUNoRCxLQUFLLFVBQVUsWUFBWSxDQUFDLFFBQWdCO0lBQ3hDLElBQUksUUFBUSxHQUFHLElBQUksR0FBRyxFQUF3QixDQUFDO0lBQy9DLElBQUksU0FBUyxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLG9CQUFZLENBQUMsQ0FBQztJQUNsRCxJQUFJLEtBQUssR0FBRyxNQUFNLGtCQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFjLENBQUMsQ0FBQztJQUNwRSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUIsU0FBUztRQUNiLENBQUM7UUFDRCxJQUFJLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxrQkFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztBQUV2Qjs7O2lDQUdpQztBQUNqQyxLQUFLLFVBQVUsZUFBZSxDQUFDLFNBQWlCO0lBQzVDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLGNBQWMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JELE9BQU87SUFDWCxDQUFDO0lBQ0QsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM1QixNQUFNLElBQUEsY0FBUSxFQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLFNBQVMsc0NBQXNDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4SCxNQUFNLElBQUEseUJBQWEsRUFBQyxJQUFBLHNCQUFVLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFBLDRCQUFhLEVBQUMsU0FBUyxDQUFDLDZDQUE2QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkssQ0FBQztBQUVEOzs7OztxRUFLcUU7QUFDckUsU0FBZ0IsaUJBQWlCLENBQUMsTUFBMEQ7SUFDeEYsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3ZDLE9BQU8sWUFBWSxTQUFTLDBCQUEwQixNQUFNLElBQUksVUFBVSxJQUFJLFNBQVMsSUFBSSxFQUFFLE1BQU0sQ0FBQztBQUN4RyxDQUFDO0FBSEQsOENBR0M7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxNQUFlO0lBQy9DLElBQUksSUFBSSxHQUFHLFlBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pCLE9BQU8sR0FBRyxJQUFJLGFBQWEsSUFBQSx1QkFBZSxFQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDMUQsQ0FBQztBQUpELGtEQUlDO0FBRUQ7Ozs7O2dFQUtnRTtBQUNoRSxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxJQUFZO0lBQzFELElBQUksQ0FBQztRQUNELElBQUksQ0FBQyxJQUFBLDJDQUFpQyxHQUFFLEVBQUUsQ0FBQztZQUN2Qyx3RkFBd0Y7WUFDeEYseUVBQXlFO1lBQ3pFLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsbUNBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDckQsTUFBTSxJQUFBLHVDQUE2QixFQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUF5QixFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBQ0QsTUFBTSxJQUFBLGVBQU0sRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLG9FQUFvRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7QUFDTCxDQUFDO0FBSUQ7O3lCQUV5QjtBQUN6QixNQUFNLHVCQUF1QixHQUFHLElBQUEsc0JBQVcsRUFBQyxLQUFLLEVBQUUsTUFLbEQsRUFBOEIsRUFBRTtJQUM3QixJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3JELElBQUksSUFBQSw4QkFBYSxFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFBLGdDQUFlLEVBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakUsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBQ0QsK0ZBQStGO0lBQy9GLCtGQUErRjtJQUMvRiw0RkFBNEY7SUFDNUYsc0JBQXNCO0lBQ3RCLElBQUksQ0FBQztRQUNELE1BQU0sSUFBQSx5QkFBYSxFQUFDLElBQUEsc0JBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsU0FBUyxLQUFLLElBQUEsNEJBQWEsRUFBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkgsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksUUFBUSxHQUFHLElBQUEsNkJBQWMsRUFBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxJQUFJLE9BQU8sR0FBRyxNQUFNLElBQUEsMkJBQWUsRUFBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxJQUFJLFlBQVksR0FBRyxJQUFBLDRCQUFlLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsSUFBSSxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QyxJQUFJLFNBQVMsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNyRCxNQUFNLGtCQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sa0JBQUUsQ0FBQyxTQUFTLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxZQUFZLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDNUUsWUFBWTtRQUNaLFNBQVM7UUFDVCxFQUFFO1FBQ0YsU0FBUztRQUNULFNBQVMsRUFBRSxTQUFTO1FBQ3BCLE1BQU0sRUFBRSxpQkFBaUI7S0FDNUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFFekIsTUFBTSxJQUFBLFlBQU0sRUFBQyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDOUQsTUFBTSxJQUFBLFlBQU0sRUFBQztRQUNULElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxpQ0FBaUMsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLFlBQVksRUFBRSxDQUFDO1FBQ3ZILEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTztLQUN6QixDQUFDLENBQUM7SUFDSCxJQUFJLElBQUksR0FBRyxNQUFNLElBQUEsWUFBTSxFQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEIsNEZBQTRGO1FBQzVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLFNBQVMsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0csT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUEsK0JBQWMsRUFBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDM0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLFNBQVMsU0FBUyxFQUFFLEtBQUssWUFBWSxFQUFFLENBQUMsQ0FBQztJQUVoRSw2RkFBNkY7SUFDN0YsMEZBQTBGO0lBQzFGLE1BQU0sZ0JBQWdCLENBQ2xCLGlCQUFpQixFQUFFLGtCQUFrQixTQUFTLEVBQUUsRUFDaEQsbUJBQW1CLFNBQVMsc0JBQXNCLEVBQUUsZ0JBQWdCLFNBQVMsU0FBUztVQUNwRixrREFBa0QsU0FBUywyQkFBMkI7VUFDdEYsZ0VBQWdFO1VBQ2hFLGVBQWUsU0FBUyw2REFBNkQsU0FBUyxHQUFHO1VBQ2pHLGdEQUFnRCxTQUFTLGtCQUFrQixTQUFTLFNBQVM7VUFDN0YsMENBQTBDO1VBQzFDLGdCQUFnQixJQUFBLHdCQUFjLEVBQUMsU0FBUyxDQUFDLDZCQUE2QjtVQUN0RSx5QkFBeUIsU0FBUyxTQUFTLEVBQUUsaURBQWlEO1VBQzlGLGtCQUFrQixTQUFTLElBQUk7VUFDL0Isa0JBQWtCLFNBQVMsSUFBSSxDQUNwQyxDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDLENBQUM7QUFrQkksS0FBSyxVQUFVLGlCQUFpQixDQUFDLE1BS3ZDO0lBQ0csSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFRCw2RkFBNkY7SUFDN0YsZ0dBQWdHO0lBQ2hHLDZGQUE2RjtJQUM3RixrREFBa0Q7SUFDbEQsSUFBSSxRQUFRLEdBQUcsS0FBSyxJQUEwRCxFQUFFO1FBQzVFLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLFNBQVMsS0FBSyxJQUFBLHVCQUFlLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3JFLENBQUM7UUFDRCxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxJQUFBLGdCQUFRLEdBQUUsQ0FBQztRQUNyQyxNQUFNLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyx5RkFBeUY7UUFDekYsdUZBQXVGO1FBQ3ZGLElBQUksT0FBTyxHQUFHLENBQUMsTUFBTSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxJQUFJLE1BQU0sR0FBRyxJQUFBLGlDQUFnQixFQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1QsT0FBTztvQkFDSCxPQUFPLEVBQUU7d0JBQ0wsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsTUFBTSxFQUNGLFdBQVcsU0FBUyxnQ0FBZ0MsTUFBTSxDQUFDLEVBQUUsSUFBSSw2QkFBNkIsRUFBRTs4QkFDOUYsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLFFBQVEsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRTs4QkFDekQsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLGdCQUFnQixNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFOzhCQUNqRSw0REFBNEQsTUFBTSxDQUFDLFlBQVksSUFBSTs4QkFDbkYscUNBQXFDLElBQUEsd0JBQWMsRUFBQyxTQUFTLENBQUMsdUJBQXVCO3FCQUM5RjtvQkFDRCxLQUFLLEVBQUUsS0FBSztpQkFDZixDQUFDO1lBQ04sQ0FBQztZQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLFNBQVMsb0JBQW9CLGlCQUFpQixDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDMUosQ0FBQztRQUVELDBGQUEwRjtRQUMxRiwwRkFBMEY7UUFDMUYsd0ZBQXdGO1FBQ3hGLHVGQUF1RjtRQUN2RixvQ0FBb0M7UUFDcEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyRSxDQUFDO1FBRUQsNEZBQTRGO1FBQzVGLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsSUFBQSw4QkFBYSxFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUEsZ0NBQWUsRUFBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNuRSxxRkFBcUY7WUFDckYsK0VBQStFO1lBQy9FLElBQUksT0FBTyxHQUFHLE1BQU0sdUJBQXVCLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xILElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxTQUFTLHdCQUF3QixFQUFFLGlDQUFpQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2xKLENBQUM7WUFDRCxJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsU0FBUyx3QkFBd0IsRUFBRSw2QkFBNkIsSUFBQSw0QkFBYSxFQUFDLFNBQVMsQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUMvTCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLFNBQVMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3JILENBQUMsQ0FBQztJQUVGLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxRQUFRLEVBQUUsQ0FBQztJQUMxQyxnR0FBZ0c7SUFDaEcsK0ZBQStGO0lBQy9GLHdCQUF3QjtJQUN4QixJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7UUFDNUIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELDhGQUE4RjtJQUM5RixnR0FBZ0c7SUFDaEcsNEZBQTRGO0lBQzVGLFNBQVM7SUFDVCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyx3QkFBd0IsR0FBRyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3pFLHdCQUF3QixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxJQUFBLGdCQUFRLEdBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUEsY0FBUSxFQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLFNBQVMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEgsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPLENBQUMsTUFBTSxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUN0QyxDQUFDO0FBdEZELDhDQXNGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyByZXNvbHZlS2V5c1JlcG8gfSBmcm9tIFwiLi4vYXV0aG9yaXplZEtleXMva2V5c1JlcG9cIjtcbmltcG9ydCB7IHJldm9rZVJlcG8sIHN5bmNSZXBvRmlsZXMgfSBmcm9tIFwiLi4vYXV0aG9yaXplZEtleXMvZGFlbW9uL3JlcG9GaWxlc1wiO1xuaW1wb3J0IHsgbmV3UmV2b2NhdGlvbklkIH0gZnJvbSBcIi4uL2F1dGhvcml6ZWRLZXlzL2RhZW1vbi9yZXZvY2F0aW9uXCI7XG5pbXBvcnQgeyBydW5HaXQsIHN5bmNSZXBvIH0gZnJvbSBcIi4uL2F1dGhvcml6ZWRLZXlzL2RhZW1vbi9naXRcIjtcbmltcG9ydCB7IGVuc3VyZVJldm9rZUtleSB9IGZyb20gXCIuLi9hdXRob3JpemVkS2V5cy9kYWVtb24vcmVwb0ZpbGVzXCI7XG5pbXBvcnQgeyBpZGVudGl0eUZyb3plbkJ5LCBpc1BhaXJSZXZva2VkLCBpc1BhaXJVbnJldm9rZWQsIG5vdGVSZXZvY2F0aW9uLCByZWFkU2lnbmVkUmVwbyB9IGZyb20gXCIuLi9hdXRob3JpemVkS2V5cy9kYWVtb24vcmVhZFNpZ25lZFJlcG9cIjtcbmltcG9ydCB7IHJldm9rZVJlcG9QYXRoLCByZXZva2VSZXBvVVJMIH0gZnJvbSBcIi4uL2F1dGhvcml6ZWRLZXlzL3Jldm9rZVNvdXJjZVwiO1xuaW1wb3J0IHsgc291cmNlUmVwb1BhdGggfSBmcm9tIFwiLi4vYXV0aG9yaXplZEtleXMvc291cmNlc1wiO1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSBcIi4uL2F1dGhvcml6ZWRLZXlzL2RhZW1vbi9ub3RpZnlcIjtcbmltcG9ydCB7IGFyZURpc2NvcmROb3RpZmljYXRpb25zQ29uZmlndXJlZCwgY29uZmlndXJlRGlzY29yZE5vdGlmaWNhdGlvbnMsIERFRkFVTFRfV0VCSE9PS19GSUxFX1BBVEggfSBmcm9tIFwiLi4vbm90aWZpY2F0aW9ucy9kaXNjb3JkXCI7XG5pbXBvcnQgeyBERVZfZ2V0SWRlbnRpdHlGaWxlUGF0aCwgZ2VuZXJhdGVDQSwgZ2V0TWFjaGluZUlkLCBnZXRPd25NYWNoaW5lSWQsIElkZW50aXR5U3RvcmFnZVR5cGUgfSBmcm9tIFwiLi4vLi4vbWlzYy9odHRwcy9jZXJ0c1wiO1xuaW1wb3J0IHsgZGVzY3JpYmVIb3N0LCBydW5PdmVyU1NILCB3cml0ZVJlbW90ZUZpbGUgfSBmcm9tIFwiLi4vaGVscGVycy9yZW1vdGVTU0hcIjtcbmltcG9ydCB7IGxhenkgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9jYWNoaW5nXCI7XG5pbXBvcnQgeyBydW5JbmZpbml0ZVBvbGwsIHJ1bkluU2VyaWFsIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvYmF0Y2hpbmdcIjtcbmltcG9ydCB7IHNwYXduUHJvbWlzZSB9IGZyb20gXCIuLi9oZWxwZXJzL3NwYXduXCI7XG5cbi8vIFdoaWNoIG1hY2hpbmVzIHRoaXMgc3lzdGVtIHRhbGtzIHRvLCBrZXB0IGluIHRoZSBzYW1lIHJlcG8gYXMgdGhlIHNzaCBrZXlzLiBUaGF0IHJlcG8gaXMgYWxyZWFkeVxuLy8gc2lnbmVkLCBhbHJlYWR5IGRpc3RyaWJ1dGVkIHRvIGV2ZXJ5IG1hY2hpbmUsIGFuZCBhbHJlYWR5IGhhcyBzb21ld2hlcmUgdG8gcmVjb3JkIGEgcmVqZWN0aW9uLFxuLy8gc28gYSBzZWNvbmQgb25lIHdvdWxkIG9ubHkgYmUgYSBzZWNvbmQgdGhpbmcgdG8ga2VlcCBpbiBzdGVwLlxuZXhwb3J0IGNvbnN0IE1BQ0hJTkVTX0RJUiA9IFwibWFjaGluZXNcIjtcbmNvbnN0IFJFVk9DQVRJT05TX0RJUiA9IFwicmV2b2NhdGlvbnNcIjtcbmNvbnN0IFJFVk9DQVRJT05fUkVBU09OID0gXCJhIG1hY2hpbmUgdGFsa2VkIHRvIHVzIGZyb20gYW4gdW5hcHByb3ZlZCBJUFwiO1xuLy8gVGhlIHJldm9rZSByZXBvIGlzIHB1bGxlZCBhdCBtb3N0IHRoaXMgb2Z0ZW4uIEEgY2hlY2sgaGFwcGVucyBwZXIgcmVxdWVzdCwgYW5kIGEgcmVxdWVzdCBtdXN0XG4vLyBub3QgY29zdCBhIHJvdW5kIHRyaXAgdG8gZ2l0aHViLlxuY29uc3QgUkVWT0tFX1NZTkNfSU5URVJWQUwgPSA2MCAqIDEwMDA7XG4vLyBBbmQgdGhlIG1hY2hpbmUgbGlzdCBpcyByZS1yZWFkIGZyb20gdGhlIGNoZWNrb3V0IG9uIHRoaXMgaW50ZXJ2YWwsIGluIHRoZSBiYWNrZ3JvdW5kLiBUaGVcbi8vIGNoZWNrb3V0IGl0c2VsZiBvbmx5IG1vdmVzIHdoZW4gdGhlIGRhZW1vbiBwdWxscyBpdCwgd2hpY2ggaXMgb24gdGhlIHNhbWUgc29ydCBvZiBpbnRlcnZhbCwgc29cbi8vIHJlYWRpbmcgbW9yZSBvZnRlbiB0aGFuIHRoaXMgd291bGQgb25seSByZS1yZWFkIHRoZSBzYW1lIGJ5dGVzLlxuY29uc3QgTUFDSElORVNfUkVGUkVTSF9JTlRFUlZBTCA9IDYwICogMTAwMDtcbi8vIEhvdyBsb25nIGEgZmFpbHVyZSB0byBmaW5kIHRoZSBrZXlzIHJlcG8gaXMgcmVtZW1iZXJlZC4gQSBsb25nIGxpdmVkIHByb2Nlc3MgbWF5IHN0YXJ0IGJlZm9yZVxuLy8gdGhlIG1hY2hpbmUgaXMgc2V0IHVwLCBhbmQgc2hvdWxkIHBpY2sgaXQgdXAgb25jZSBpdCBpcywgd2l0aG91dCBiZWluZyByZXN0YXJ0ZWQgLSBidXQgaXQgbXVzdFxuLy8gbm90IHBheSBmb3IgcmVzb2x2aW5nIHRoZSByZXBvIG9uIGV2ZXJ5IHJlcXVlc3QgZWl0aGVyLlxuY29uc3QgUkVQT19SRVRSWV9ERUxBWSA9IDE1ICogMTAwMDtcbmNvbnN0IExPT1BCQUNLID0gW1wiMTI3LjAuMC4xXCIsIFwiOjoxXCIsIFwiOjpmZmZmOjEyNy4wLjAuMVwiXTtcbi8vIFRoZSB0cnVzdGVkIG1hY2hpbmUgbGlzdCBpcyByZS1yZWFkIGF0IG1vc3QgdGhpcyBvZnRlbiB3aGVuIGEgY2hlY2sgcmVqZWN0cywgc28gYSBjYWxsZXIgdGhhdFxuLy8gd2FzIGp1c3QgYWRkZWQgaXMgcGlja2VkIHVwIHF1aWNrbHkgd2l0aG91dCBsZXR0aW5nIGEgZmxvb2Qgb2YgcmVqZWN0aW9ucyByZS1yZWFkIGV2ZXJ5IHRpbWUuXG5jb25zdCBNQUNISU5FU19JTlZBTElEQVRJT05fSU5URVJWQUwgPSA2MCAqIDEwMDA7XG5sZXQgbGFzdE1hY2hpbmVzSW52YWxpZGF0aW9uID0gMDtcblxuLyoqIE9uZSBtYWNoaW5lIHdlIGFyZSB3aWxsaW5nIHRvIHRhbGsgdG8sIGFuZCB0aGUgYWRkcmVzc2VzIGl0IG1heSB0YWxrIHRvIHVzIGZyb20uICovXG5leHBvcnQgdHlwZSBNYWNoaW5lU3RhdGUgPSB7XG4gICAgbWFjaGluZUlkOiBzdHJpbmc7XG4gICAgaXBzOiBzdHJpbmdbXTtcbiAgICBhZGRlZEF0OiBzdHJpbmc7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBwYXRoRXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBmcy5hY2Nlc3MoZmlsZVBhdGgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG1hY2hpbmVGaWxlUGF0aChyZXBvUGF0aDogc3RyaW5nLCBtYWNoaW5lSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBwYXRoLmpvaW4ocmVwb1BhdGgsIE1BQ0hJTkVTX0RJUiwgYCR7bWFjaGluZUlkfS5qc29uYCk7XG59XG5cbi8qKiBUaGlzIG1hY2hpbmUncyBrZXlzIHJlcG8sIHdvcmtlZCBvdXQgb25jZSBhbmQgdGhlbiByZW1lbWJlcmVkLlxuXG4gICAgQSBmYWlsdXJlIGlzIHJlbWVtYmVyZWQgdG9vLCBidXQgb25seSBicmllZmx5OiBhIHNlcnZlciBtYXkgd2VsbCBzdGFydCBiZWZvcmUgdGhlIG1hY2hpbmUgaGFzXG4gICAgYmVlbiBzZXQgdXAsIGFuZCBzaG91bGQgc3RhcnQgd29ya2luZyB3aGVuIGl0IGlzLCByYXRoZXIgdGhhbiBuZWVkaW5nIGEgcmVzdGFydC4gKi9cbmV4cG9ydCBjb25zdCBrZXlzUmVwbyA9IGxhenkoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBsb29rdXAgPSByZXNvbHZlS2V5c1JlcG8oKTtcbiAgICBsb29rdXAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGtleXNSZXBvLnJlc2V0KCksIFJFUE9fUkVUUllfREVMQVkpLnVucmVmKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IGxvb2t1cDtcbn0pO1xuXG4vKiogRXZlcnkgbWFjaGluZSBhIGNoZWNrb3V0IGxpc3RzLiBXaXRob3V0IGEgcmVwbywgdGhpcyBtYWNoaW5lJ3Mgb3duLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE1hY2hpbmVzKHJlcG9QYXRoPzogc3RyaW5nKTogUHJvbWlzZTxNYWNoaW5lU3RhdGVbXT4ge1xuICAgIHJldHVybiBbLi4uKGF3YWl0IHJlYWRNYWNoaW5lcyhyZXBvUGF0aCB8fCAoYXdhaXQga2V5c1JlcG8oKSkucmVwb1BhdGgpKS52YWx1ZXMoKV07XG59XG5cbi8qKiBUaGUgbWFjaGluZXMgdGhlIHNpZ25lZCBmaWxlcyB2b3VjaCBmb3IuIE9ubHkgdGhlIG1hY2hpbmUgZmlsZXMgY292ZXJlZCBieSB0aGUgc2lnbmF0dXJlIGFyZVxuICAgIHJlYWQgLSBhbiB1bnNpZ25lZCBtYWNoaW5lcy8qLmpzb24gaXMgbm90IGV2aWRlbmNlIG9mIGFueXRoaW5nLCBzbyByZWFkU2lnbmVkUmVwbyBoYXMgYWxyZWFkeVxuICAgIGxlZnQgaXQgb3V0LiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVhZFRydXN0ZWRNYWNoaW5lcygpIHtcbiAgICBsZXQgeyByZXBvUGF0aCwgc291cmNlVVJMIH0gPSBhd2FpdCBrZXlzUmVwbygpO1xuICAgIGxldCB7IGZpbGVzIH0gPSBhd2FpdCByZWFkU2lnbmVkUmVwbyh7IHJlcG9QYXRoLCBzb3VyY2VVUkwgfSk7XG4gICAgbGV0IG1hY2hpbmVzOiBNYWNoaW5lU3RhdGVbXSA9IFtdO1xuICAgIGZvciAobGV0IFtmaWxlUGF0aCwgY29udGVudHNdIG9mIGZpbGVzKSB7XG4gICAgICAgIGxldCBuYW1lID0gZmlsZVBhdGguc3RhcnRzV2l0aChgJHtNQUNISU5FU19ESVJ9L2ApICYmIGZpbGVQYXRoLnNsaWNlKE1BQ0hJTkVTX0RJUi5sZW5ndGggKyAxKSB8fCBcIlwiO1xuICAgICAgICBpZiAoIW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSB8fCBuYW1lLmluY2x1ZGVzKFwiL1wiKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1hY2hpbmUgPSBwYXJzZU1hY2hpbmVGaWxlKG5hbWUsIGNvbnRlbnRzLnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICAgIGlmIChtYWNoaW5lKSB7XG4gICAgICAgICAgICBtYWNoaW5lcy5wdXNoKG1hY2hpbmUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYWNoaW5lcztcbn1cblxuY29uc3QgdHJ1c3RlZE1hY2hpbmVzID0gbGF6eShhc3luYyAoKSA9PiB7XG4gICAgbGV0IHJlYWQgPSByZWFkVHJ1c3RlZE1hY2hpbmVzKCk7XG4gICAgcmVhZC5jYXRjaCgoKSA9PiB0cnVzdGVkTWFjaGluZXMucmVzZXQoKSk7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWQ7XG59KTtcblxubGV0IHJlZnJlc2hpbmcgPSBmYWxzZTtcblxuLyoqIFRoZSBtYWNoaW5lcyB0aGlzIHN5c3RlbSB0cnVzdHMsIGFzIHRoZSBzaWduZWQgcmVwbyBsaXN0cyB0aGVtLlxuXG4gICAgSGVsZCByYXRoZXIgdGhhbiByZWFkIHBlciBjYWxsLCBhbmQgcmVmcmVzaGVkIGluIHRoZSBiYWNrZ3JvdW5kLCBzbyBub2JvZHkgYXNraW5nIHdoZXRoZXIgYVxuICAgIG1hY2hpbmUgaXMgdHJ1c3RlZCB3YWl0cyBmb3IgYSBkaXJlY3Rvcnkgb2YgZmlsZXMgdG8gYmUgcmVhZCBhbmQgYSBzaWduYXR1cmUgdG8gYmUgY2hlY2tlZC4gQVxuICAgIHJlZnJlc2ggdGhhdCBmYWlscyBsZWF2ZXMgdGhlIGxpc3Qgd2UgYWxyZWFkeSBoYXZlOiB0aGUgY2hlY2tvdXQgaXMgb25seSBzdGFsZSwgbm90IHdyb25nLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRydXN0ZWRNYWNoaW5lcygpOiBQcm9taXNlPE1hY2hpbmVTdGF0ZVtdPiB7XG4gICAgaWYgKCFyZWZyZXNoaW5nKSB7XG4gICAgICAgIHJlZnJlc2hpbmcgPSB0cnVlO1xuICAgICAgICBydW5JbmZpbml0ZVBvbGwoTUFDSElORVNfUkVGUkVTSF9JTlRFUlZBTCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0cnVzdGVkTWFjaGluZXMuc2V0KFByb21pc2UucmVzb2x2ZShhd2FpdCByZWFkVHJ1c3RlZE1hY2hpbmVzKCkpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ291bGQgbm90IHJlLXJlYWQgdGhlIHRydXN0ZWQgbWFjaGluZXMsIGtlZXBpbmcgdGhlIG9uZXMgd2UgaGF2ZS4gJHtlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRydXN0ZWRNYWNoaW5lcygpO1xufVxuXG4vKiogVGhlIG1hY2hpbmUgaWQgb2YgYSBtYWNoaW5lIHJlYWNoZWQgb3ZlciBzc2gsIGdlbmVyYXRpbmcgYW5kIGluc3RhbGxpbmcgYW4gaWRlbnRpdHkgZm9yIGl0IGlmXG4gICAgaXQgaGFzIG5vbmUgdW5kZXIgdGhpcyBkb21haW4uIFRoZSBwcml2YXRlIGtleSBlbmRzIHVwIG9uIHRoYXQgbWFjaGluZSBhbmQgbm93aGVyZSBlbHNlLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlUmVtb3RlTWFjaGluZUlkKGhvc3Q6IHN0cmluZywgZG9tYWluOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoREVWX2dldElkZW50aXR5RmlsZVBhdGgoZG9tYWluKSk7XG4gICAgbGV0IGhvbWUgPSAoYXdhaXQgcnVuT3ZlclNTSCh7IGhvc3QsIHNjcmlwdDogYGVjaG8gJEhPTUVgIH0pKS5zdGRvdXQudHJpbSgpO1xuICAgIGlmICghaG9tZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aG9zdH0gdG8gcmVwb3J0IGEgaG9tZSBkaXJlY3RvcnksIGl0IHJlcG9ydGVkIG5vdGhpbmdgKTtcbiAgICB9XG4gICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgcnVuT3ZlclNTSCh7IGhvc3QsIHNjcmlwdDogYGNhdCAke2hvbWV9LyR7ZmlsZU5hbWV9IDI+L2Rldi9udWxsIHx8IHRydWVgIH0pO1xuICAgIGlmIChjb250ZW50cy5zdGRvdXQudHJpbSgpKSB7XG4gICAgICAgIGxldCBzdG9yZWQgPSBKU09OLnBhcnNlKGNvbnRlbnRzLnN0ZG91dCkgYXMgSWRlbnRpdHlTdG9yYWdlVHlwZTtcbiAgICAgICAgcmV0dXJuIGdldE1hY2hpbmVJZChzdG9yZWQuZG9tYWluLCBkb21haW4pO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhgJHtkZXNjcmliZUhvc3QoaG9zdCl9IGhhcyBubyBpZGVudGl0eSBmb3IgJHtkb21haW59LCBnZW5lcmF0aW5nIG9uZWApO1xuICAgIGxldCBnZW5lcmF0ZWQgPSBnZW5lcmF0ZUNBKGRvbWFpbik7XG4gICAgbGV0IHN0b3JlZDogSWRlbnRpdHlTdG9yYWdlVHlwZSA9IHtcbiAgICAgICAgZG9tYWluOiBnZW5lcmF0ZWQuZG9tYWluLFxuICAgICAgICBjZXJ0QjY0OiBnZW5lcmF0ZWQuY2VydC50b1N0cmluZyhcImJhc2U2NFwiKSxcbiAgICAgICAga2V5QjY0OiBnZW5lcmF0ZWQua2V5LnRvU3RyaW5nKFwiYmFzZTY0XCIpLFxuICAgIH07XG4gICAgYXdhaXQgd3JpdGVSZW1vdGVGaWxlKHtcbiAgICAgICAgaG9zdCxcbiAgICAgICAgZmlsZVBhdGg6IGAke2hvbWV9LyR7ZmlsZU5hbWV9YCxcbiAgICAgICAgY29udGVudHM6IEpTT04uc3RyaW5naWZ5KHN0b3JlZCksXG4gICAgICAgIGZpbGVNb2RlOiBcIjYwMFwiLFxuICAgICAgICBkaXJlY3RvcnlNb2RlOiBcIjcwMFwiLFxuICAgIH0pO1xuICAgIHJldHVybiBnZXRNYWNoaW5lSWQoZ2VuZXJhdGVkLmRvbWFpbiwgZG9tYWluKTtcbn1cblxuLyoqIE1ha2VzIGEgY2hlY2tvdXQgbGlzdCBleGFjdGx5IHRoZXNlIG1hY2hpbmVzOiB0aG9zZSBuYW1lZCBhcmUgd3JpdHRlbiB3aXRoIHRoZSBhZGRyZXNzZXMgZ2l2ZW4sXG4gICAgYW5kIGFueXRoaW5nIG5vdCBuYW1lZCBpcyByZW1vdmVkLiBTbyByZWFkIHRoZW0sIGNoYW5nZSB3aGF0IHlvdSB3YW50LCBhbmQgd3JpdGUgdGhlIHJlc3VsdC5cblxuICAgIFRoZSBhZGRyZXNzZXMgYXJlIHBhcnQgb2Ygc2V0dGluZyByYXRoZXIgdGhhbiBhIHNlcGFyYXRlIHN0ZXAsIGJlY2F1c2UgYSBtYWNoaW5lIHdpdGggbm9cbiAgICBhZGRyZXNzIGl0IG1heSB0YWxrIGZyb20gaXMgbm90IGEgbWFjaGluZSB0aGF0IHdvdWxkIGV2ZXIgYmUgYWNjZXB0ZWQgLSB0aGVyZSBpcyBubyBzdGF0ZSB3aGVyZVxuICAgIG5hbWluZyBvbmUgd2l0aG91dCB0aGVtIG1lYW5zIGFueXRoaW5nLlxuXG4gICAgTm90aGluZyBoZXJlIHNpZ25zIG9yIGNvbW1pdHMuIFRoZSBzaWduYXR1cmUgaXMgd2hhdCBldmVyeSBvdGhlciBtYWNoaW5lIGNoZWNrcyBiZWZvcmVcbiAgICBiZWxpZXZpbmcgYW55IG9mIHRoaXMsIGFuZCBpdCB0YWtlcyB0aGUgaGFyZHdhcmUga2V5LCBzbyBgeWFybiBzaWduZmlsZXMgZ2l0YCBpcyBzdGlsbCB5b3VycyB0b1xuICAgIHJ1biBhZnRlcndhcmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldE1hY2hpbmVzKGNvbmZpZzoge1xuICAgIHJlcG9QYXRoPzogc3RyaW5nO1xuICAgIG1hY2hpbmVzOiB7IG1hY2hpbmVJZDogc3RyaW5nOyBpcHM6IHN0cmluZ1tdIH1bXTtcbn0pOiBQcm9taXNlPE1hY2hpbmVTdGF0ZVtdPiB7XG4gICAgbGV0IHsgbWFjaGluZXMgfSA9IGNvbmZpZztcbiAgICBsZXQgcmVwb1BhdGggPSBjb25maWcucmVwb1BhdGggfHwgKGF3YWl0IGtleXNSZXBvKCkpLnJlcG9QYXRoO1xuICAgIC8vIFdoYXRldmVyIHdhcyBoZWxkIGlzIG5vdyBzdGFsZSwgd2hvZXZlciByZWFkcyBpdCBuZXh0LlxuICAgIHRydXN0ZWRNYWNoaW5lcy5yZXNldCgpO1xuICAgIGxldCBleGlzdGluZyA9IGF3YWl0IHJlYWRNYWNoaW5lcyhyZXBvUGF0aCk7XG4gICAgbGV0IGRpcmVjdG9yeSA9IHBhdGguam9pbihyZXBvUGF0aCwgTUFDSElORVNfRElSKTtcbiAgICBsZXQgd3JpdHRlbjogTWFjaGluZVN0YXRlW10gPSBbXTtcbiAgICBmb3IgKGxldCBtYWNoaW5lIG9mIG1hY2hpbmVzKSB7XG4gICAgICAgIGlmICghbWFjaGluZS5tYWNoaW5lSWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSBtYWNoaW5lSWQsIHdhcyAke0pTT04uc3RyaW5naWZ5KG1hY2hpbmUubWFjaGluZUlkKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1hY2hpbmUuaXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBFeHBlY3RlZCBhZGRyZXNzZXMgZm9yICR7bWFjaGluZS5tYWNoaW5lSWR9LCB3YXMgbm9uZS4gQSBtYWNoaW5lIGlzIHRydXN0ZWQgZnJvbWBcbiAgICAgICAgICAgICAgICArIGAgdGhlIGFkZHJlc3NlcyBpdCBtYXkgdGFsayBmcm9tLCBzbyBsZWF2ZSBpdCBvdXQgb2YgdGhlIGxpc3QgdG8gcmVtb3ZlIGl0LmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlwcyA9IG1hY2hpbmUuaXBzLmZpbHRlcigoaXAsIGluZGV4KSA9PiBpcCAmJiBtYWNoaW5lLmlwcy5pbmRleE9mKGlwKSA9PT0gaW5kZXgpO1xuICAgICAgICBsZXQgc3RhdGU6IE1hY2hpbmVTdGF0ZSA9IHtcbiAgICAgICAgICAgIG1hY2hpbmVJZDogbWFjaGluZS5tYWNoaW5lSWQsXG4gICAgICAgICAgICAvLyBJbiB0aGUgb3JkZXIgZ2l2ZW4sIHdpdGhvdXQgZHVwbGljYXRlcywgc28gdGhlIGZpbGUgcmVhZHMgdGhlIHdheSBpdCB3YXMgc2V0LlxuICAgICAgICAgICAgaXBzLFxuICAgICAgICAgICAgYWRkZWRBdDogZXhpc3RpbmcuZ2V0KG1hY2hpbmUubWFjaGluZUlkKT8uYWRkZWRBdCB8fCBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGZzLm1rZGlyKGRpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShtYWNoaW5lRmlsZVBhdGgocmVwb1BhdGgsIHN0YXRlLm1hY2hpbmVJZCksIEpTT04uc3RyaW5naWZ5KHN0YXRlLCB1bmRlZmluZWQsIDQpICsgXCJcXG5cIik7XG4gICAgICAgIHdyaXR0ZW4ucHVzaChzdGF0ZSk7XG4gICAgfVxuXG4gICAgLy8gV2hhdGV2ZXIgdGhlIHJlcG8gaGFkIGFuZCB0aGUgY2FsbGVyIGRpZCBub3QgbmFtZSBpcyBubyBsb25nZXIgdHJ1c3RlZC5cbiAgICBmb3IgKGxldCBtYWNoaW5lSWQgb2YgZXhpc3Rpbmcua2V5cygpKSB7XG4gICAgICAgIGlmICghbWFjaGluZXMuc29tZShtYWNoaW5lID0+IG1hY2hpbmUubWFjaGluZUlkID09PSBtYWNoaW5lSWQpKSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5ybShtYWNoaW5lRmlsZVBhdGgocmVwb1BhdGgsIG1hY2hpbmVJZCksIHsgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHdyaXR0ZW47XG59XG5cbmZ1bmN0aW9uIHBhcnNlTWFjaGluZUZpbGUobmFtZTogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogTWFjaGluZVN0YXRlIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgICBsZXQgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50cyk7XG4gICAgICAgIGxldCBtYWNoaW5lSWQgPSBwYXJzZWQubWFjaGluZUlkIHx8IG5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIlwiKTtcbiAgICAgICAgcmV0dXJuIHsgbWFjaGluZUlkLCBpcHM6IHBhcnNlZC5pcHMgfHwgW10sIGFkZGVkQXQ6IHBhcnNlZC5hZGRlZEF0IHx8IFwiXCIgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyB1bnJlYWRhYmxlIG1hY2hpbmUgZmlsZSAke25hbWV9LiAke2V9YCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG4vKiogRXZlcnkgbWFjaGluZSBmaWxlIG9uIGRpc2suIEZvciBlZGl0aW5nIHRoZSByZXBvLCBub3QgZm9yIGRlY2lkaW5nIHRydXN0IC0gdHJ1c3QgcmVhZHMgdGhlXG4gICAgc2lnbmVkIGZpbGVzIHRocm91Z2ggcmVhZFRydXN0ZWRNYWNoaW5lcy4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlYWRNYWNoaW5lcyhyZXBvUGF0aDogc3RyaW5nKSB7XG4gICAgbGV0IG1hY2hpbmVzID0gbmV3IE1hcDxzdHJpbmcsIE1hY2hpbmVTdGF0ZT4oKTtcbiAgICBsZXQgZGlyZWN0b3J5ID0gcGF0aC5qb2luKHJlcG9QYXRoLCBNQUNISU5FU19ESVIpO1xuICAgIGxldCBuYW1lcyA9IGF3YWl0IGZzLnJlYWRkaXIoZGlyZWN0b3J5KS5jYXRjaCgoKSA9PiBbXSBhcyBzdHJpbmdbXSk7XG4gICAgZm9yIChsZXQgbmFtZSBvZiBuYW1lcy5zb3J0KCkpIHtcbiAgICAgICAgaWYgKCFuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtYWNoaW5lID0gcGFyc2VNYWNoaW5lRmlsZShuYW1lLCBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LCBuYW1lKSwgXCJ1dGY4XCIpLmNhdGNoKCgpID0+IFwiXCIpKTtcbiAgICAgICAgaWYgKG1hY2hpbmUpIHtcbiAgICAgICAgICAgIG1hY2hpbmVzLnNldChtYWNoaW5lLm1hY2hpbmVJZCwgbWFjaGluZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hY2hpbmVzO1xufVxuXG5sZXQgbGFzdFJldm9rZVN5bmMgPSAwO1xuXG4vKiogUHVsbHMgdGhlIGtleXMgcmVwbyBhbmQgaXRzIHJldm9rZSByZXBvLCBhdCBtb3N0IG9uY2UgYSBSRVZPS0VfU1lOQ19JTlRFUlZBTCwgYmVjYXVzZSB0aGlzIGlzXG4gICAgYXNrZWQgcGVyIHJlcXVlc3QuIEJvdGgsIHNpbmNlIGVpdGhlciBjaGFuZ2luZyBjaGFuZ2VzIHRoZSBhbnN3ZXI6IHRoZSBrZXlzIHJlcG8gY2FycmllcyB0aGVcbiAgICBtYWNoaW5lcyBhbmQgdW5yZXZva2VzLCB0aGUgcmV2b2tlIHJlcG8gY2FycmllcyB0aGUgcmV2b2NhdGlvbnMuIEEgc3luYyB0aGF0IGZhaWxzIGxlYXZlcyB0aGVcbiAgICBjaGVja291dHMgd2UgYWxyZWFkeSBoYXZlLiAqL1xuYXN5bmMgZnVuY3Rpb24gc3luY1Jldm9jYXRpb25zKHNvdXJjZVVSTDogc3RyaW5nKSB7XG4gICAgaWYgKERhdGUubm93KCkgLSBsYXN0UmV2b2tlU3luYyA8IFJFVk9LRV9TWU5DX0lOVEVSVkFMKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGFzdFJldm9rZVN5bmMgPSBEYXRlLm5vdygpO1xuICAgIGF3YWl0IHN5bmNSZXBvKHNvdXJjZVVSTCkuY2F0Y2goZSA9PiBjb25zb2xlLmxvZyhgQ291bGQgbm90IHN5bmMgJHtzb3VyY2VVUkx9LCB1c2luZyB0aGUgY2hlY2tvdXQgYWxyZWFkeSBoZXJlLiAke2V9YCkpO1xuICAgIGF3YWl0IHN5bmNSZXBvRmlsZXMocmV2b2tlUmVwbyhzb3VyY2VVUkwpKS5jYXRjaChlID0+IGNvbnNvbGUubG9nKGBDb3VsZCBub3Qgc3luYyAke3Jldm9rZVJlcG9VUkwoc291cmNlVVJMKX0sIHVzaW5nIHRoZSByZXZvY2F0aW9ucyBhbHJlYWR5IGFic29yYmVkLiAke2V9YCkpO1xufVxuXG4vKiogV2hhdCB0byBydW4gdG8gdHJ1c3QgYSBtYWNoaW5lIHRoYXQgaGFzIGp1c3QgYmVlbiByZWZ1c2VkLlxuXG4gICAgRXZlcnl0aGluZyBpbiBpdCBpcyBhbHJlYWR5IGtub3duIHRvIHdob2V2ZXIgaXMgYmVpbmcgcmVmdXNlZDogdGhlaXIgbWFjaGluZSBpZCwgdGhlIGFkZHJlc3Mgd2VcbiAgICBzYXcgdGhlbSBhdCwgYW5kIHRoZSBkb21haW4gdGhleSBqdXN0IHRhbGtlZCB0by4gSGFuZGluZyBpdCBiYWNrIHNhdmVzIHRoZW0gd29ya2luZyBvdXQgdGhlXG4gICAgcGFydHMgb2YgYSBjb21tYW5kIHRoZXkgaGF2ZSBldmVyeSByaWdodCB0byBrbm93LiBSdW5uaW5nIGl0IHN0aWxsIHRha2VzIHRoZSBoYXJkd2FyZSBrZXkgb25cbiAgICB0aGUgbWFjaGluZSB0aGF0IG93bnMgdGhlIHJlcG8sIHNvIHRlbGxpbmcgdGhlbSBjb3N0cyBub3RoaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1hY2hpbmVDb21tYW5kKGNvbmZpZzogeyBtYWNoaW5lSWQ6IHN0cmluZzsgaXA6IHN0cmluZzsgZG9tYWluPzogc3RyaW5nIH0pIHtcbiAgICBsZXQgeyBtYWNoaW5lSWQsIGlwLCBkb21haW4gfSA9IGNvbmZpZztcbiAgICByZXR1cm4gYFRvIHRydXN0ICR7bWFjaGluZUlkfSwgcnVuOiB5YXJuIGFkZG1hY2hpbmUgJHtkb21haW4gfHwgXCI8ZG9tYWluPlwifSAke21hY2hpbmVJZH0gJHtpcH0gZ2l0YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlVGhpc01hY2hpbmUoZG9tYWluPzogc3RyaW5nKSB7XG4gICAgbGV0IGhvc3QgPSBvcy5ob3N0bmFtZSgpO1xuICAgIGlmICghZG9tYWluKSByZXR1cm4gaG9zdDtcbiAgICByZXR1cm4gYCR7aG9zdH0gKG1hY2hpbmUgJHtnZXRPd25NYWNoaW5lSWQoZG9tYWluKX0pYDtcbn1cblxuLyoqIFNlbmRzIHRoZSBvbmUgbm90aWZpY2F0aW9uIHRoaXMgZmlsZSBpcyBhbGxvd2VkIHRvIHNlbmQsIHdoZW4gaXQgY2FuLlxuXG4gICAgVGhlIGRhZW1vbiBjb25maWd1cmVzIG5vdGlmaWNhdGlvbnMgb24gc3RhcnR1cCBhbmQgd291bGQgc2ltcGx5IHNlbmQuIFRoaXMgY2FuIGFsc28gcnVuIGluIHNvbWVcbiAgICBvdGhlciBwcm9jZXNzLCB3aGljaCBoYXMgbm90LCBzbyB0aGUgd2ViaG9vayBpcyBwaWNrZWQgdXAgaGVyZSBpZiBpdCBpcyByZWFkYWJsZS4gQSBtYWNoaW5lXG4gICAgd2l0aCBubyB3ZWJob29rIHNldCB1cCBzdGlsbCByZWNvcmRzIHRoZSByZXZvY2F0aW9uIC0gYmVpbmcgdW5hYmxlIHRvIHRlbGwgYW55b25lIGlzIG5vdCBhXG4gICAgcmVhc29uIHRvIGtlZXAgYWNjZXB0aW5nIGEgbWFjaGluZSB0aGF0IGlzIGJlaW5nIG1pc3VzZWQuICovXG5hc3luYyBmdW5jdGlvbiBub3RpZnlCZXN0RWZmb3J0KGhlYWRsaW5lOiBzdHJpbmcsIGJvZHk6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICghYXJlRGlzY29yZE5vdGlmaWNhdGlvbnNDb25maWd1cmVkKCkpIHtcbiAgICAgICAgICAgIC8vIFJlYWQgZmlyc3Q6IGNvbmZpZ3VyZURpc2NvcmROb3RpZmljYXRpb25zIGV4aXRzIHRoZSBwcm9jZXNzIHdoZW4gdGhlIGZpbGUgaXMgbWlzc2luZyxcbiAgICAgICAgICAgIC8vIHdoaWNoIGlzIHJpZ2h0IGZvciB0aGUgZGFlbW9uIGF0IHN0YXJ0dXAgYW5kIHdyb25nIGZvciBhIGxpYnJhcnkgY2FsbC5cbiAgICAgICAgICAgIGF3YWl0IGZzLnJlYWRGaWxlKERFRkFVTFRfV0VCSE9PS19GSUxFX1BBVEgsIFwidXRmOFwiKTtcbiAgICAgICAgICAgIGF3YWl0IGNvbmZpZ3VyZURpc2NvcmROb3RpZmljYXRpb25zKHsgZmlsZVBhdGg6IERFRkFVTFRfV0VCSE9PS19GSUxFX1BBVEggfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbm90aWZ5KGhlYWRsaW5lLCBib2R5KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBDb3VsZCBub3Qgc2VuZCBhIG5vdGlmaWNhdGlvbiBhYm91dCB0aGlzLCBpdCBpcyBvbmx5IGluIHRoZSBsb2cuICR7ZX1gKTtcbiAgICB9XG59XG5cbnR5cGUgUmV2b2NhdGlvbk91dGNvbWUgPSBcImZyb3plXCIgfCBcImZhaWxlZFwiIHwgXCJhbHJlYWR5UmV2b2tlZFwiO1xuXG4vKiogUmVjb3JkcyB0aGF0IGEgbWFjaGluZSB3ZSBhY2NlcHQgdGFsa2VkIHRvIHVzIGZyb20gYW4gYWRkcmVzcyBpdCBpcyBub3QgYWxsb3dlZCBmcm9tLiBPbmUgcGVyXG4gICAgbWFjaGluZSBhbmQgYWRkcmVzcywgc28gYSBzZWNvbmQgYWRkcmVzcyBpcyBhIHNlY29uZCByZXZvY2F0aW9uIGFuZCBhbiB1bnJldm9rZSBvZiB0aGUgZmlyc3RcbiAgICBkb2VzIG5vdCBjb3ZlciBpdC4gKi9cbmNvbnN0IHJlY29yZE1hY2hpbmVSZXZvY2F0aW9uID0gcnVuSW5TZXJpYWwoYXN5bmMgKGNvbmZpZzoge1xuICAgIHNvdXJjZVVSTDogc3RyaW5nO1xuICAgIG1hY2hpbmVJZDogc3RyaW5nO1xuICAgIGlwOiBzdHJpbmc7XG4gICAgaG9zdExhYmVsOiBzdHJpbmc7XG59KTogUHJvbWlzZTxSZXZvY2F0aW9uT3V0Y29tZT4gPT4ge1xuICAgIGxldCB7IHNvdXJjZVVSTCwgbWFjaGluZUlkLCBpcCwgaG9zdExhYmVsIH0gPSBjb25maWc7XG4gICAgaWYgKGlzUGFpclJldm9rZWQobWFjaGluZUlkLCBpcCkgfHwgaXNQYWlyVW5yZXZva2VkKG1hY2hpbmVJZCwgaXApKSB7XG4gICAgICAgIHJldHVybiBcImFscmVhZHlSZXZva2VkXCI7XG4gICAgfVxuICAgIC8vIENsb25lcyBpdCBpZiBpdCBpcyBub3QgaGVyZSB5ZXQsIHdoaWNoIGlzIHRoZSB1c3VhbCBzdGF0ZSBvZiBhIG1hY2hpbmUgdGhhdCBoYXMgbmV2ZXIgaGFkIHRvXG4gICAgLy8gcmV2b2tlIGFueXRoaW5nLiBXaXRob3V0IHRoaXMgdGhlIG1rZGlyIGJlbG93IHdvdWxkIGJ1aWxkIHRoZSBkaXJlY3RvcnkgYW55d2F5IGFuZCBnaXQgd291bGRcbiAgICAvLyB0aGVuIGJlIHJ1biBzb21ld2hlcmUgdGhhdCBpcyBub3QgYSBjaGVja291dCwgc28gdGhlIHJldm9jYXRpb24gd2FzIHdyaXR0ZW4gd2hlcmUgbm90aGluZ1xuICAgIC8vIHdvdWxkIGV2ZXIgcmVhZCBpdC5cbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBzeW5jUmVwb0ZpbGVzKHJldm9rZVJlcG8oc291cmNlVVJMKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgcmVjb3JkIHRoZSByZXZvY2F0aW9uIG9mICR7bWFjaGluZUlkfSwgJHtyZXZva2VSZXBvVVJMKHNvdXJjZVVSTCl9IGNvdWxkIG5vdCBiZSByZWFkLiAke2V9YCk7XG4gICAgICAgIHJldHVybiBcImZhaWxlZFwiO1xuICAgIH1cbiAgICBsZXQgcmVwb1BhdGggPSByZXZva2VSZXBvUGF0aChzb3VyY2VVUkwpO1xuICAgIGxldCBrZXlQYXRoID0gYXdhaXQgZW5zdXJlUmV2b2tlS2V5KHNvdXJjZVVSTCk7XG4gICAgbGV0IHJldm9jYXRpb25JZCA9IG5ld1Jldm9jYXRpb25JZChtYWNoaW5lSWQpO1xuICAgIGxldCByZXZva2VkQXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgbGV0IGRpcmVjdG9yeSA9IHBhdGguam9pbihyZXBvUGF0aCwgUkVWT0NBVElPTlNfRElSKTtcbiAgICBhd2FpdCBmcy5ta2RpcihkaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LCBgJHtyZXZvY2F0aW9uSWR9Lmpzb25gKSwgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICByZXZvY2F0aW9uSWQsXG4gICAgICAgIG1hY2hpbmVJZCxcbiAgICAgICAgaXAsXG4gICAgICAgIHJldm9rZWRBdCxcbiAgICAgICAgcmV2b2tlZEJ5OiBob3N0TGFiZWwsXG4gICAgICAgIHJlYXNvbjogUkVWT0NBVElPTl9SRUFTT04sXG4gICAgfSwgdW5kZWZpbmVkLCA0KSArIFwiXFxuXCIpO1xuXG4gICAgYXdhaXQgcnVuR2l0KHsgYXJnczogW1wiYWRkXCIsIFwiLUFcIl0sIGN3ZDogcmVwb1BhdGgsIGtleVBhdGggfSk7XG4gICAgYXdhaXQgcnVuR2l0KHtcbiAgICAgICAgYXJnczogW1wiLWNcIiwgXCJ1c2VyLmVtYWlsPXBvcnRzZWN1cmVAbG9jYWxob3N0XCIsIFwiLWNcIiwgXCJ1c2VyLm5hbWU9cG9ydHNlY3VyZVwiLCBcImNvbW1pdFwiLCBcIi1tXCIsIGByZXZva2UgJHtyZXZvY2F0aW9uSWR9YF0sXG4gICAgICAgIGN3ZDogcmVwb1BhdGgsIGtleVBhdGgsXG4gICAgfSk7XG4gICAgbGV0IHB1c2ggPSBhd2FpdCBydW5HaXQoeyBhcmdzOiBbXCJwdXNoXCIsIFwib3JpZ2luXCIsIFwiSEVBRFwiXSwgY3dkOiByZXBvUGF0aCwga2V5UGF0aCwgYWxsb3dGYWlsdXJlOiB0cnVlIH0pO1xuICAgIGlmIChwdXNoLnN0YXR1cyAhPT0gMCkge1xuICAgICAgICAvLyBBbm90aGVyIG1hY2hpbmUgbW9zdCBsaWtlbHkgcmVjb3JkZWQgdGhlIHNhbWUgdGhpbmcgZmlyc3QsIGFuZCB0aGUgbmV4dCByZWFkIHBpY2tzIGl0IHVwLlxuICAgICAgICBjb25zb2xlLmxvZyhgQ291bGQgbm90IHB1c2ggdGhlIHJldm9jYXRpb24gb2YgJHttYWNoaW5lSWR9IGZyb20gJHtpcH0uICR7KHB1c2guc3Rkb3V0ICsgcHVzaC5zdGRlcnIpLnRyaW0oKX1gKTtcbiAgICAgICAgcmV0dXJuIFwiZmFpbGVkXCI7XG4gICAgfVxuICAgIG5vdGVSZXZvY2F0aW9uKHJldm9jYXRpb25JZCwgeyBpZGVudGl0eTogbWFjaGluZUlkLCBpcCwgcmV2b2tlZEF0LCByZXZva2VkQnk6IGhvc3RMYWJlbCB9KTtcbiAgICBjb25zb2xlLmxvZyhgUmV2b2tlZCAke21hY2hpbmVJZH0gZnJvbSAke2lwfSwgJHtyZXZvY2F0aW9uSWR9YCk7XG5cbiAgICAvLyBTYWlkIGJ5IHdob2V2ZXIgd3JvdGUgdGhlIHJldm9jYXRpb24sIG9uY2UsIHRoZSBzYW1lIGFzIGZvciBhbiBzc2gga2V5LiBNYWNoaW5lcyB0aGF0IG9ubHlcbiAgICAvLyByZWFkIGl0IGxhdGVyIHNheSBub3RoaW5nLCBvciBvbmUgZXZlbnQgd291bGQgYmUgcmVwb3J0ZWQgYnkgZXZlcnkgbWFjaGluZSB0aGF0IHNhdyBpdC5cbiAgICBhd2FpdCBub3RpZnlCZXN0RWZmb3J0KFxuICAgICAgICBgU1VTUElDSU9VUyBJUCAke2lwfSBGUk9aRSBNQUNISU5FICR7bWFjaGluZUlkfWAsXG4gICAgICAgIGBUcnVzdGVkIG1hY2hpbmUgJHttYWNoaW5lSWR9IHRhbGtlZCB0byB1cyBmcm9tICR7aXB9LCBhbiBhZGRyZXNzICR7bWFjaGluZUlkfSBpcyBub3RgXG4gICAgICAgICsgYCBhbGxvd2VkIGZyb20uIFRoZSBjYWxsZXIgcHJvdmVkIHBvc3Nlc3Npb24gb2YgJHttYWNoaW5lSWR9J3Mga2V5LCBzbyBlaXRoZXIgc29tZW9uZWBcbiAgICAgICAgKyBgIGVsc2UgaGFzIGEgY29weSBvZiB0aGUga2V5LCBvciB0aGUgbWFjaGluZSdzIGFkZHJlc3MgY2hhbmdlZC5gXG4gICAgICAgICsgYFxcblxcbk1hY2hpbmUgJHttYWNoaW5lSWR9IGlzIGZyb3plbiBldmVyeXdoZXJlIG5vdywgYW5kIG5vdGhpbmcgYWNjZXB0cyBjYWxscyBmcm9tICR7bWFjaGluZUlkfS5gXG4gICAgICAgICsgYFxcblxcbklmIHRoaXMgd2FzIGFuIGF0dGFjaywgcmVtb3ZlIFxcYG1hY2hpbmVzLyR7bWFjaGluZUlkfS5qc29uXFxgIGZyb20gXFxgJHtzb3VyY2VVUkx9XFxgIG5vdy5gXG4gICAgICAgICsgYFxcbklmIHRoZSBuZXcgYWRkcmVzcyBpcyBsZWdpdGltYXRlLCBydW46YFxuICAgICAgICArIGBcXG5cXGBcXGBcXGBcXG5jZCAke3NvdXJjZVJlcG9QYXRoKHNvdXJjZVVSTCl9XFxueWFybiB1bnJldm9rZSBnaXRcXG5cXGBcXGBcXGBgXG4gICAgICAgICsgYFxcblRoZSB1bnJldm9rZSBhbGxvd3MgJHttYWNoaW5lSWR9IGZyb20gJHtpcH0sIGFuZCB0YWtlcyBlZmZlY3QgYXMgZWFjaCBtYWNoaW5lIHBpY2tzIGl0IHVwLmBcbiAgICAgICAgKyBgXFxuXFxubWFjaGluZTogXFxgJHttYWNoaW5lSWR9XFxgYFxuICAgICAgICArIGBcXG5mcm96ZW4gYnk6IFxcYCR7aG9zdExhYmVsfVxcYGBcbiAgICApO1xuICAgIHJldHVybiBcImZyb3plXCI7XG59KTtcblxuLyoqIFdoZXRoZXIgd2Ugd2lsbCB0YWxrIHRvIHRoaXMgbWFjaGluZSwgY29taW5nIGZyb20gdGhpcyBhZGRyZXNzLlxuXG4gICAgQm90aCBoYWx2ZXMgYXJlIHJlcXVpcmVkIGFuZCBuZWl0aGVyIGlzIGEgZ3Vlc3M6IHRoZSBjYWxsZXIga25vd3MgdGhlIG1hY2hpbmUgaWQgYmVjYXVzZSB0aGVcbiAgICBjb25uZWN0aW9uIHByb3ZlZCBpdCwgYW5kIGtub3dzIHRoZSBhZGRyZXNzIGJlY2F1c2UgdGhlIHBhY2tldHMgY2FtZSBmcm9tIHRoZXJlLiBBIG1hY2hpbmUgd2VcbiAgICBkbyBub3QgbGlzdCBpcyBzaW1wbHkgbm90IGFjY2VwdGVkLiBBIG1hY2hpbmUgd2UgZG8gbGlzdCwgYXJyaXZpbmcgZnJvbSBhbiBhZGRyZXNzIGl0IGRvZXMgbm90XG4gICAgaGF2ZSwgaXMgdHJlYXRlZCBhcyB0aGUgc2FtZSBraW5kIG9mIGV2ZW50IGFzIGEgc3RvbGVuIHNzaCBrZXkgLSBpdCBpcyByZXZva2VkIGV2ZXJ5d2hlcmUsIGFuZFxuICAgIHN0YXlzIHJldm9rZWQgdW50aWwgYW4gdW5yZXZva2UgYWxsb3dzIHRoYXQgbWFjaGluZSBmcm9tIHRoYXQgYWRkcmVzcy5cblxuICAgIFNheXMgd2h5IHdoZW4gdGhlIGFuc3dlciBpcyBubywgYmVjYXVzZSB0aGUgdGhyZWUgd2F5cyB0byBiZSByZWZ1c2VkIGFyZSBlbnRpcmVseSBkaWZmZXJlbnRcbiAgICB0aGluZ3MgdG8gYSBwZXJzb24gcmVhZGluZyBpdDogbmV2ZXIgdHJ1c3RlZCBhdCBhbGwsIHRydXN0ZWQgYnV0IGZyb3plbiwgb3IgdHJ1c3RlZCBhbmQgdGFsa2luZ1xuICAgIGZyb20gc29tZXdoZXJlIGl0IHNob3VsZCBub3QgYmUuXG5cbiAgICBUaHJvd3Mgd2hlbiB0aGUgcmVwbyBpdHNlbGYgY2Fubm90IGJlIHJlYWQgb3IgaXMgbm90IHNpZ25lZCwgcmF0aGVyIHRoYW4gYW5zd2VyaW5nIGZhbHNlOiB0aGF0XG4gICAgaXMgYSBicm9rZW4gaW5zdGFsbGF0aW9uLCBub3QgYSByZWplY3RlZCBtYWNoaW5lLCBhbmQgdGhlIHR3byBkZXNlcnZlIGRpZmZlcmVudCBoYW5kbGluZy4gKi9cbmV4cG9ydCB0eXBlIE1hY2hpbmVWZXJkaWN0ID0geyBhY2NlcHRlZDogYm9vbGVhbjsgcmVhc29uOiBzdHJpbmcgfTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzTWFjaGluZUFjY2VwdGVkKGNvbmZpZzoge1xuICAgIG1hY2hpbmVJZDogc3RyaW5nO1xuICAgIGlwOiBzdHJpbmc7XG4gICAgLy8gVXNlZCBmb3IgbG9jYWwgbG9vcGJhY2sgYWNjZXB0YW5jZSwgYW5kIGZvciBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMuXG4gICAgZG9tYWluPzogc3RyaW5nO1xufSk6IFByb21pc2U8TWFjaGluZVZlcmRpY3Q+IHtcbiAgICBsZXQgeyBtYWNoaW5lSWQsIGlwLCBkb21haW4gfSA9IGNvbmZpZztcbiAgICBpZiAoIW1hY2hpbmVJZCB8fCAhaXApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIG1hY2hpbmVJZCBhbmQgYW4gaXAsIHdhcyAke0pTT04uc3RyaW5naWZ5KG1hY2hpbmVJZCl9IGFuZCAke0pTT04uc3RyaW5naWZ5KGlwKX1gKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgd2hvbGUgY2hlY2ssIHBsdXMgd2hldGhlciBpdCBmcm96ZSB0aGUgbWFjaGluZS4gQSByZWplY3Rpb24gdGhhdCBmcm96ZSBpdCBpcyBmaW5hbCwgc29cbiAgICAvLyB0aGVyZSBpcyBub3RoaW5nIHRvIGdhaW4gZnJvbSBsb29raW5nIGFnYWluLiBBbnkgb3RoZXIgcmVqZWN0aW9uIG1pZ2h0IGp1c3QgYmUgYSBzdGFsZSB2aWV3IC1cbiAgICAvLyBhIG1hY2hpbmUgYWRkZWQgc2Vjb25kcyBhZ28gdGhhdCBvdXIgY2FjaGVkIGxpc3QgaGFzIG5vdCBjYXVnaHQgdXAgdG8gLSBzbyBpdCBpcyB3b3J0aCBvbmVcbiAgICAvLyBmcmVzaCBsb29rLCB3aGljaCBpcyB3aGF0IHRoZSByZXRyeSBiZWxvdyBkb2VzLlxuICAgIGxldCBldmFsdWF0ZSA9IGFzeW5jICgpOiBQcm9taXNlPHsgdmVyZGljdDogTWFjaGluZVZlcmRpY3Q7IGZyb3plOiBib29sZWFuIH0+ID0+IHtcbiAgICAgICAgaWYgKExPT1BCQUNLLmluY2x1ZGVzKGlwKSAmJiAhIWRvbWFpbiAmJiBtYWNoaW5lSWQgPT09IGdldE93bk1hY2hpbmVJZChkb21haW4pKSB7XG4gICAgICAgICAgICByZXR1cm4geyB2ZXJkaWN0OiB7IGFjY2VwdGVkOiB0cnVlLCByZWFzb246IFwiXCIgfSwgZnJvemU6IGZhbHNlIH07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgc291cmNlVVJMIH0gPSBhd2FpdCBrZXlzUmVwbygpO1xuICAgICAgICBhd2FpdCBzeW5jUmV2b2NhdGlvbnMoc291cmNlVVJMKTtcbiAgICAgICAgLy8gVGhlIGxpc3QgaGFzIHJldm9jYXRpb25zIGFscmVhZHkgYXBwbGllZCAtIHJlYWRTaWduZWRSZXBvIGRyb3BzIGZyb3plbiBtYWNoaW5lcyAtIHNvIGFcbiAgICAgICAgLy8gbWFjaGluZSBpbiBpdCBpcyB0cnVzdGVkLCBhbmQgYSBtYWNoaW5lIG1pc3NpbmcgZnJvbSBpdCBpcyBlaXRoZXIgdW5rbm93biBvciBmcm96ZW4uXG4gICAgICAgIGxldCBtYWNoaW5lID0gKGF3YWl0IGdldFRydXN0ZWRNYWNoaW5lcygpKS5maW5kKGVudHJ5ID0+IGVudHJ5Lm1hY2hpbmVJZCA9PT0gbWFjaGluZUlkKTtcbiAgICAgICAgaWYgKCFtYWNoaW5lKSB7XG4gICAgICAgICAgICBsZXQgZnJvemVuID0gaWRlbnRpdHlGcm96ZW5CeShtYWNoaW5lSWQpO1xuICAgICAgICAgICAgaWYgKGZyb3plbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZlcmRpY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTWFjaGluZSAke21hY2hpbmVJZH0gaXMgZnJvemVuOiBpdCB3YXMgdXNlZCBmcm9tICR7ZnJvemVuLmlwIHx8IFwiYW4gYWRkcmVzcyBub3RoaW5nIHJlY29yZGVkXCJ9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYCR7ZnJvemVuLnJldm9rZWRBdCAmJiBgLCBhdCAke2Zyb3plbi5yZXZva2VkQXR9YCB8fCBcIlwifWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGAke2Zyb3plbi5yZXZva2VkQnkgJiYgYCwgbm90aWNlZCBieSAke2Zyb3plbi5yZXZva2VkQnl9YCB8fCBcIlwifWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGAsIHdoaWNoIGlzIG5vdCBhbiBhZGRyZXNzIGl0IGlzIGFsbG93ZWQgZnJvbSAocmV2b2NhdGlvbiAke2Zyb3plbi5yZXZvY2F0aW9uSWR9KS5gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBgIFRvIGdpdmUgaXQgYWNjZXNzIGFnYWluLCBydW46IGNkICR7c291cmNlUmVwb1BhdGgoc291cmNlVVJMKX0gJiYgeWFybiB1bnJldm9rZSBnaXRgLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBmcm96ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHZlcmRpY3Q6IHsgYWNjZXB0ZWQ6IGZhbHNlLCByZWFzb246IGBNYWNoaW5lICR7bWFjaGluZUlkfSBpcyBub3QgdHJ1c3RlZC4gJHthZGRNYWNoaW5lQ29tbWFuZCh7IG1hY2hpbmVJZCwgaXAsIGRvbWFpbiB9KX1gIH0sIGZyb3plOiBmYWxzZSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTG9vcGJhY2sgaXMgYWx3YXlzIGFuIGFsbG93ZWQgYWRkcmVzcy4gVGhlIG1hY2hpbmUgc3RpbGwgaGFzIHRvIGJlIHRydXN0ZWQgLSBhbiB1bmtub3duXG4gICAgICAgIC8vIG9yIGZyb3plbiBvbmUgd2FzIGFscmVhZHkgcmVmdXNlZCBhYm92ZSAtIGJ1dCBubyBpcCBsaXN0IGNhbiBkZXNjcmliZSBhIG1hY2hpbmUgdGFsa2luZ1xuICAgICAgICAvLyB0byBpdHNlbGY6IGEgbWFjaGluZSBpcyBsaXN0ZWQgdW5kZXIgdGhlIGFkZHJlc3Mgb3RoZXJzIHJlYWNoIGl0IGF0LCBuZXZlciAxMjcuMC4wLjEsXG4gICAgICAgIC8vIHNvIGNoZWNraW5nIGxvb3BiYWNrIGFnYWluc3QgdGhhdCBsaXN0IHJlamVjdHMgZXZlcnkgbG9jYWwgY2FsbCBhbmQgdGhlbiBmcmVlemVzIHRoZVxuICAgICAgICAvLyBtYWNoaW5lIGV2ZXJ5d2hlcmUgZm9yIG1ha2luZyBpdC5cbiAgICAgICAgaWYgKG1hY2hpbmUuaXBzLmluY2x1ZGVzKGlwKSB8fCBMT09QQkFDSy5pbmNsdWRlcyhpcCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZlcmRpY3Q6IHsgYWNjZXB0ZWQ6IHRydWUsIHJlYXNvbjogXCJcIiB9LCBmcm96ZTogZmFsc2UgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExpc3RlZCwgYnV0IHRhbGtpbmcgdG8gdXMgZnJvbSBzb21ld2hlcmUgaXQgc2hvdWxkIG5vdCBiZS4gUmVjb3JkZWQgb25jZSBmb3IgdGhpcyBtYWNoaW5lXG4gICAgICAgIC8vIGFuZCBhZGRyZXNzLCBzbyBiZWluZyB0YWxrZWQgdG8gcmVwZWF0ZWRseSBkb2VzIG5vdCB3cml0ZSByZXBlYXRlZGx5LlxuICAgICAgICBpZiAoIWlzUGFpclJldm9rZWQobWFjaGluZUlkLCBpcCkgJiYgIWlzUGFpclVucmV2b2tlZChtYWNoaW5lSWQsIGlwKSkge1xuICAgICAgICAgICAgLy8gT25seSB0aGUgbWFjaGluZSB0aGF0IGFjdHVhbGx5IHdyb3RlIHRoZSByZXZvY2F0aW9uIG1heSBzYXkgaXQgZnJvemUgYW55dGhpbmcuIE9uZVxuICAgICAgICAgICAgLy8gdGhhdCBjb3VsZCBub3QgcmVhY2ggdGhlIHJldm9rZSByZXBvIGhhcyByZWZ1c2VkIHRoaXMgY2FsbCBhbmQgbm90aGluZyBtb3JlLlxuICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBhd2FpdCByZWNvcmRNYWNoaW5lUmV2b2NhdGlvbih7IHNvdXJjZVVSTCwgbWFjaGluZUlkLCBpcCwgaG9zdExhYmVsOiBkZXNjcmliZVRoaXNNYWNoaW5lKGRvbWFpbikgfSk7XG4gICAgICAgICAgICBpZiAob3V0Y29tZSA9PT0gXCJmcm96ZVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmVyZGljdDogeyBhY2NlcHRlZDogZmFsc2UsIHJlYXNvbjogYE1hY2hpbmUgJHttYWNoaW5lSWR9IGlzIG5vdCBhbGxvd2VkIGZyb20gJHtpcH0sIGFuZCBpcyBub3cgZnJvemVuIGV2ZXJ5d2hlcmUuYCB9LCBmcm96ZTogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91dGNvbWUgPT09IFwiZmFpbGVkXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB2ZXJkaWN0OiB7IGFjY2VwdGVkOiBmYWxzZSwgcmVhc29uOiBgTWFjaGluZSAke21hY2hpbmVJZH0gaXMgbm90IGFsbG93ZWQgZnJvbSAke2lwfS4gSXQgY291bGQgbm90IGJlIGZyb3plbiwgJHtyZXZva2VSZXBvVVJMKHNvdXJjZVVSTCl9IGNvdWxkIG5vdCBiZSB3cml0dGVuLmAgfSwgZnJvemU6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdmVyZGljdDogeyBhY2NlcHRlZDogZmFsc2UsIHJlYXNvbjogYE1hY2hpbmUgJHttYWNoaW5lSWR9IGlzIG5vdCBhbGxvd2VkIGZyb20gJHtpcH0uYCB9LCBmcm96ZTogZmFsc2UgfTtcbiAgICB9O1xuXG4gICAgbGV0IHsgdmVyZGljdCwgZnJvemUgfSA9IGF3YWl0IGV2YWx1YXRlKCk7XG4gICAgLy8gQW4gYWNjZXB0LCBvciBhIHJlamVjdGlvbiB0aGF0IGp1c3QgZnJvemUgdGhlIG1hY2hpbmUsIGlzIHRoZSBmaW5hbCB3b3JkLiBBbnkgb3RoZXIgcmVqZWN0aW9uXG4gICAgLy8gbWlnaHQganVzdCBiZSBhIHN0YWxlIGxpc3QgLSBhIG1hY2hpbmUgYWRkZWQgc2Vjb25kcyBhZ28gd2UgaGF2ZSBub3QgY2F1Z2h0IHVwIHRvIC0gc28gaXQgaXNcbiAgICAvLyB3b3J0aCBvbmUgZnJlc2ggbG9vay5cbiAgICBpZiAodmVyZGljdC5hY2NlcHRlZCB8fCBmcm96ZSkge1xuICAgICAgICByZXR1cm4gdmVyZGljdDtcbiAgICB9XG4gICAgLy8gUmUtcmVhZCB0aGUgbGlzdCBhdCBtb3N0IG9uY2UgYSBtaW51dGUsIHNvIGEgYnVyc3Qgb2YgYmFkIGNhbGxlcnMgY2Fubm90IG1ha2UgdXMgcmUtcmVhZCBvblxuICAgIC8vIGV2ZXJ5IG9uZSBvZiB0aGVtLiBGb3JjZSB0aGUgY2hlY2tvdXQgYmFjayB0byB0aGUgcmVtb3RlIGZpcnN0LCBzbyBhIG1hY2hpbmUgYWRkZWQgYW5kIHNpZ25lZFxuICAgIC8vIHNlY29uZHMgYWdvIGlzIHBpY2tlZCB1cCBldmVuIGlmIHRoZSBjaGVja291dCB3YXMgbGVmdCBkaXJ0eSwgdGhlbiB0YWtlIHRoZSBmcmVzaCBsb29rIGFzXG4gICAgLy8gZmluYWwuXG4gICAgaWYgKERhdGUubm93KCkgLSBsYXN0TWFjaGluZXNJbnZhbGlkYXRpb24gPiBNQUNISU5FU19JTlZBTElEQVRJT05fSU5URVJWQUwpIHtcbiAgICAgICAgbGFzdE1hY2hpbmVzSW52YWxpZGF0aW9uID0gRGF0ZS5ub3coKTtcbiAgICAgICAgbGV0IHsgc291cmNlVVJMIH0gPSBhd2FpdCBrZXlzUmVwbygpO1xuICAgICAgICBhd2FpdCBzeW5jUmVwbyhzb3VyY2VVUkwsIHsgZm9yY2VVcGRhdGU6IHRydWUgfSkuY2F0Y2goZSA9PiBjb25zb2xlLmxvZyhgQ291bGQgbm90IGZvcmNlIHVwZGF0ZSAke3NvdXJjZVVSTH0uICR7ZX1gKSk7XG4gICAgICAgIHRydXN0ZWRNYWNoaW5lcy5yZXNldCgpO1xuICAgIH1cbiAgICByZXR1cm4gKGF3YWl0IGV2YWx1YXRlKCkpLnZlcmRpY3Q7XG59XG4iXX0=
414
+ /* _JS_SOURCE_HASH = "d41a0c07e11ff64052c7e3abc0f9a64b1096d0837c9fca3aa87ff9a887c65ad8"; */
@@ -88,7 +88,8 @@ async function printRepo(ownIds) {
88
88
  console.log(` ${revocation.revocationId}`);
89
89
  }
90
90
  if (frozen.length) {
91
- console.log(` To give these access again, run in ${repoPath}: yarn unrevoke git`);
91
+ console.log(` To give these access again, run:`);
92
+ console.log(`\`\`\`\ncd ${repoPath}\nyarn unrevoke git\n\`\`\``);
92
93
  }
93
94
  else {
94
95
  console.log(` (nothing is frozen)`);
@@ -113,5 +114,5 @@ main().catch(e => {
113
114
  console.error(`${e}`);
114
115
  process.exitCode = 1;
115
116
  }).finally(() => process.exit());
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnRNYWNoaW5lSWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcmludE1hY2hpbmVJZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtEQUFrRztBQUNsRyx5REFBNkQ7QUFDN0QsNEVBQTBGO0FBQzFGLGtFQUErRTtBQUMvRSx5Q0FBMEM7QUFFMUMsOEZBQThGO0FBQzlGLGdHQUFnRztBQUNoRyw2RUFBNkU7QUFFN0UsS0FBSyxVQUFVLFdBQVc7SUFDdEIsSUFBSSxPQUFPLEdBQUcsSUFBQSwrQkFBdUIsR0FBRSxDQUFDO0lBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpRkFBaUYsQ0FBQyxDQUFDO1FBQy9GLE9BQU87SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QixJQUFJLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFDdkIsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUEsc0JBQWMsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixJQUFJLFNBQVMsR0FBRyxJQUFBLHVCQUFlLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQUVELEtBQUssVUFBVSxTQUFTLENBQUMsTUFBZ0I7SUFDckMsSUFBSSxJQUFJLENBQUM7SUFDVCxJQUFJLENBQUM7UUFDRCxJQUFJLEdBQUcsTUFBTSxJQUFBLDBCQUFlLEdBQUUsQ0FBQztJQUNuQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNULE9BQU8sQ0FBQyxHQUFHLENB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QyxHQUFHLENBQUMsT0FBTyxVQUFVLENBQUMsUUFBUSxVQUFVLFVBQVUsQ0FBQyxFQUFFLElBQUksdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDL0MsS0FBSyxJQUFJLFFBQVEsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUM1QyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxJQUFJO0lBQ2YsSUFBSSxNQUFNLEdBQUcsTUFBTSxXQUFXLEVBQUUsQ0FBQztJQUNqQyxNQUFNLFNBQVMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFVl9saXN0SWRlbnRpdHlEb21haW5zLCBnZXRPd25NYWNoaW5lSWQsIGxvYWRJZGVudGl0eUNBIH0gZnJvbSBcIi4uLy4uL21pc2MvaHR0cHMvY2VydHNcIjtcbmltcG9ydCB7IHJlc29sdmVLZXlzUmVwbyB9IGZyb20gXCIuLi9hdXRob3JpemVkS2V5cy9rZXlzUmVwb1wiO1xuaW1wb3J0IHsgbGlzdFJldm9jYXRpb25zLCByZWFkU2lnbmVkUmVwbyB9IGZyb20gXCIuLi9hdXRob3JpemVkS2V5cy9kYWVtb24vcmVhZFNpZ25lZFJlcG9cIjtcbmltcG9ydCB7IHJldm9rZVJlcG8sIHN5bmNSZXBvRmlsZXMgfSBmcm9tIFwiLi4vYXV0aG9yaXplZEtleXMvZGFlbW9uL3JlcG9GaWxlc1wiO1xuaW1wb3J0IHsgTUFDSElORVNfRElSIH0gZnJvbSBcIi4vbWFjaGluZXNcIjtcblxuLy8gV2hvIHRoaXMgbWFjaGluZSBpcywgYW5kIHdobyBpdCBiZWxpZXZlcyBldmVyeW9uZSBlbHNlIGlzLiBPbmUgY29tbWFuZCwgYmVjYXVzZSB3b3JraW5nIG91dFxuLy8gd2hldGhlciBhIG1hY2hpbmUgaXMgdHJ1c3RlZCBtZWFucyBob2xkaW5nIGJvdGggaGFsdmVzIGF0IG9uY2U6IG91ciBvd24gaWQgdW5kZXIgZWFjaCBkb21haW4sXG4vLyBhbmQgdGhlIGlkcyB0aGUgc2lnbmVkIHJlcG8gbGlzdHMgd2l0aCB0aGUgYWRkcmVzc2VzIGVhY2ggaXMgYWxsb3dlZCBmcm9tLlxuXG5hc3luYyBmdW5jdGlvbiBwcmludE93bklkcygpIHtcbiAgICBsZXQgZG9tYWlucyA9IERFVl9saXN0SWRlbnRpdHlEb21haW5zKCk7XG4gICAgaWYgKCFkb21haW5zLmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgVGhpcyBtYWNoaW5lIGhhcyBubyBpZGVudGl0aWVzIHlldC4gT25lIGlzIGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgaXQgbmVlZHMgb25lLmApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGBUaGlzIG1hY2hpbmU6YCk7XG4gICAgbGV0IGlkczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBkb21haW4gb2YgZG9tYWlucykge1xuICAgICAgICBhd2FpdCBsb2FkSWRlbnRpdHlDQShkb21haW4pO1xuICAgICAgICBsZXQgbWFjaGluZUlkID0gZ2V0T3duTWFjaGluZUlkKGRvbWFpbik7XG4gICAgICAgIGlkcy5wdXNoKG1hY2hpbmVJZCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtkb21haW59ICR7bWFjaGluZUlkfWApO1xuICAgIH1cbiAgICByZXR1cm4gaWRzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmludFJlcG8ob3duSWRzOiBzdHJpbmdbXSkge1xuICAgIGxldCByZXBvO1xuICAgIHRyeSB7XG4gICAgICAgIHJlcG8gPSBhd2FpdCByZXNvbHZlS2V5c1JlcG8oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBcXG5ObyBrZXlzIHJlcG8gdG8gcmVhZCwgc28gdGhlcmUgaXMgbm90aGluZyB0byBzYXkgYWJvdXQgd2hvIGlzIHRydXN0ZWQuICR7ZX1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgeyByZXBvUGF0aCwgc291cmNlVVJMIH0gPSByZXBvO1xuICAgIGNvbnNvbGUubG9nKGBcXG5LZXlzIHJlcG8gJHtyZXBvUGF0aH1gKTtcbiAgICBjb25zb2xlLmxvZyhgICAgIGZyb20gJHtzb3VyY2VVUkx9YCk7XG5cbiAgICAvLyBQdWxsZWQgZmlyc3QsIG9yIGEgcmV2b2NhdGlvbiBhbm90aGVyIG1hY2hpbmUgd3JvdGUgbWludXRlcyBhZ28gaXMgbWlzc2luZyBmcm9tIGEgcGljdHVyZVxuICAgIC8vIHdob3NlIHdob2xlIHB1cnBvc2UgaXMgdG8gZXhwbGFpbiB3aHkgc29tZXRoaW5nIGlzIGJlaW5nIHJlZnVzZWQuXG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc3luY1JlcG9GaWxlcyhyZXZva2VSZXBvKHNvdXJjZVVSTCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coYCAgICBDb3VsZCBub3QgcHVsbCB0aGUgcmV2b2NhdGlvbnMsIHNob3dpbmcgdGhlIG9uZXMgYWxyZWFkeSBoZXJlLiAke2V9YCk7XG4gICAgfVxuXG4gICAgbGV0IGZpbGVzO1xuICAgIHRyeSB7XG4gICAgICAgIGZpbGVzID0gKGF3YWl0IHJlYWRTaWduZWRSZXBvKHsgcmVwb1BhdGgsIHNvdXJjZVVSTCB9KSkuZmlsZXM7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgXFxuSXRzIHNpZ25hdHVyZSBkb2VzIG5vdCBjaGVjayBvdXQsIHNvIG5vdGhpbmcgaW4gaXQgY291bnRzLiAke2V9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBPbmx5IHRoZSBtYWNoaW5lIGZpbGVzIHRoZSBzaWduYXR1cmUgY292ZXJzIC0gcmVhZFNpZ25lZFJlcG8gaGFzIGFscmVhZHkgZHJvcHBlZCBhbnl0aGluZ1xuICAgIC8vIHVuc2lnbmVkIG9yIGZyb3plbiwgc28gdGhpcyBpcyB0aGUgbGlzdCB0aGlzIG1hY2hpbmUgd291bGQgYWN0dWFsbHkgYWNjZXB0LlxuICAgIGxldCBtYWNoaW5lczogeyBtYWNoaW5lSWQ6IHN0cmluZzsgaXBzOiBzdHJpbmdbXSB9W10gPSBbXTtcbiAgICBmb3IgKGxldCBbZmlsZVBhdGgsIGNvbnRlbnRzXSBvZiBmaWxlcykge1xuICAgICAgICBpZiAoIWZpbGVQYXRoLnN0YXJ0c1dpdGgoYCR7TUFDSElORVNfRElSfS9gKSB8fCAhZmlsZVBhdGguZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBwYXJzZWQgPSBKU09OLnBhcnNlKGNvbnRlbnRzLnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICAgICAgICBtYWNoaW5lcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBtYWNoaW5lSWQ6IHBhcnNlZC5tYWNoaW5lSWQgfHwgZmlsZVBhdGguc2xpY2UoTUFDSElORVNfRElSLmxlbmd0aCArIDEsIC1cIi5qc29uXCIubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICBpcHM6IHBhcnNlZC5pcHMgfHwgW10sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCAgICBJZ25vcmluZyB1bnJlYWRhYmxlICR7ZmlsZVBhdGh9LiAke2V9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgXFxuVHJ1c3RlZCBtYWNoaW5lcyAoJHttYWNoaW5lcy5sZW5ndGh9KSwgYW5kIHRoZSBhZGRyZXNzZXMgZWFjaCBtYXkgdGFsayBmcm9tOmApO1xuICAgIGZvciAobGV0IG1hY2hpbmUgb2YgbWFjaGluZXMpIHtcbiAgICAgICAgbGV0IHVzID0gb3duSWRzLmluY2x1ZGVzKG1hY2hpbmUubWFjaGluZUlkKSAmJiBcIiAgPC0gdGhpcyBtYWNoaW5lXCIgfHwgXCJcIjtcbiAgICAgICAgY29uc29sZS5sb2coYCAgICAke21hY2hpbmUubWFjaGluZUlkfSAgJHttYWNoaW5lLmlwcy5qb2luKFwiLCBcIikgfHwgXCIobm8gYWRkcmVzc2VzLCBzbyBpdCBpcyBuZXZlciBhY2NlcHRlZClcIn0ke3VzfWApO1xuICAgIH1cblxuICAgIC8vIEZyb3plbiBtYWNoaW5lcyBhcmUgYWxyZWFkeSBnb25lIGZyb20gdGhlIGxpc3QgYWJvdmUsIHdoaWNoIGlzIGV4YWN0bHkgd2h5IHRoZXkgaGF2ZSB0byBiZVxuICAgIC8vIG5hbWVkIGhlcmUgLSBvdGhlcndpc2UgYSBtYWNoaW5lIGJlaW5nIHJlZnVzZWQgZXZlcnl3aGVyZSBzaW1wbHkgaXMgbm90IG1lbnRpb25lZCBhbnl3aGVyZS5cbiAgICBsZXQgcmV2b2NhdGlvbnMgPSBsaXN0UmV2b2NhdGlvbnMoKTtcbiAgICBsZXQgZnJvemVuID0gcmV2b2NhdGlvbnMuZmlsdGVyKHJldm9jYXRpb24gPT4gIXJldm9jYXRpb24uZm9yZ2l2ZW4pO1xuICAgIGNvbnNvbGUubG9nKGBcXG5Gcm96ZW4gKCR7ZnJvemVuLmxlbmd0aH0pLCByZWZ1c2VkIGV2ZXJ5d2hlcmUgdW50aWwgdW5yZXZva2VkOmApO1xuICAgIGZvciAobGV0IHJldm9jYXRpb24gb2YgZnJvemVuKSB7XG4gICAgICAgIGxldCB1cyA9IG93bklkcy5pbmNsdWRlcyhyZXZvY2F0aW9uLmlkZW50aXR5KSAmJiBcIiAgPC0gdGhpcyBtYWNoaW5lXCIgfHwgXCJcIjtcbiAgICAgICAgY29uc29sZS5sb2coYCAgICAke3Jldm9jYXRpb24uaWRlbnRpdHl9ICB1c2VkIGZyb20gJHtyZXZvY2F0aW9uLmlwIHx8IFwiYW4gdW5yZWNvcmRlZCBhZGRyZXNzXCJ9YFxuICAgICAgICAgICAgKyBgJHtyZXZvY2F0aW9uLnJldm9rZWRBdCAmJiBgIGF0ICR7cmV2b2NhdGlvbi5yZXZva2VkQXR9YCB8fCBcIlwifWBcbiAgICAgICAgICAgICsgYCR7cmV2b2NhdGlvbi5yZXZva2VkQnkgJiYgYCwgbm90aWNlZCBieSAke3Jldm9jYXRpb24ucmV2b2tlZEJ5fWAgfHwgXCJcIn0ke3VzfWApO1xuICAgICAgICBjb25zb2xlLmxvZyhgICAgICAgICAke3Jldm9jYXRpb24ucmV2b2NhdGlvbklkfWApO1xuICAgIH1cbiAgICBpZiAoZnJvemVuLmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgICAgIFRvIGdpdmUgdGhlc2UgYWNjZXNzIGFnYWluLCBydW4gaW4gJHtyZXBvUGF0aH06IHlhcm4gdW5yZXZva2UgZ2l0YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coYCAgICAobm90aGluZyBpcyBmcm96ZW4pYCk7XG4gICAgfVxuXG4gICAgbGV0IGZvcmdpdmVuID0gcmV2b2NhdGlvbnMuZmlsdGVyKHJldm9jYXRpb24gPT4gcmV2b2NhdGlvbi5mb3JnaXZlbik7XG4gICAgaWYgKGZvcmdpdmVuLmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgXFxuUmV2b2tlZCwgdGhlbiBhbGxvd2VkIGFnYWluICgke2ZvcmdpdmVuLmxlbmd0aH0pOmApO1xuICAgICAgICBmb3IgKGxldCByZXZvY2F0aW9uIG9mIGZvcmdpdmVuKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgICAgICR7cmV2b2NhdGlvbi5pZGVudGl0eX0gIGZyb20gJHtyZXZvY2F0aW9uLmlwIHx8IFwiYW4gdW5yZWNvcmRlZCBhZGRyZXNzXCJ9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgXFxuU2lnbmVkIGZpbGVzICgke2ZpbGVzLnNpemV9KTpgKTtcbiAgICBmb3IgKGxldCBmaWxlUGF0aCBvZiBbLi4uZmlsZXMua2V5cygpXS5zb3J0KCkpIHtcbiAgICAgICAgY29uc29sZS5sb2coYCAgICAke2ZpbGVQYXRofWApO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgICBsZXQgb3duSWRzID0gYXdhaXQgcHJpbnRPd25JZHMoKTtcbiAgICBhd2FpdCBwcmludFJlcG8ob3duSWRzIHx8IFtdKTtcbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoYCR7ZX1gKTtcbiAgICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbn0pLmZpbmFsbHkoKCkgPT4gcHJvY2Vzcy5leGl0KCkpO1xuIl1//9
117
- /* _JS_SOURCE_HASH = "76e90f977b9bdad196767fcf9f8b95a2d05c1f2605687d9b9baae28db11b2f88"; */
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnRNYWNoaW5lSWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcmludE1hY2hpbmVJZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtEQUFrRztBQUNsRyx5REFBNkQ7QUFDN0QsNEVBQTBGO0FBQzFGLGtFQUErRTtBQUMvRSx5Q0FBMEM7QUFFMUMsOEZBQThGO0FBQzlGLGdHQUFnRztBQUNoRyw2RUFBNkU7QUFFN0UsS0FBSyxVQUFVLFdBQVc7SUFDdEIsSUFBSSxPQUFPLEdBQUcsSUFBQSwrQkFBdUIsR0FBRSxDQUFDO0lBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpRkFBaUYsQ0FBQyxDQUFDO1FBQy9GLE9BQU87SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QixJQUFJLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFDdkIsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUEsc0JBQWMsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixJQUFJLFNBQVMsR0FBRyxJQUFBLHVCQUFlLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQUVELEtBQUssVUFBVSxTQUFTLENBQUMsTUFBZ0I7SUFDckMsSUFBSSxJQUFJLENBQUM7SUFDVCxJQUFJLENBQUM7UUFDRCxJQUFJLEdBQUcsTUFBTSxJQUFBLDBCQUFlLEdBQUUsQ0FBQztJQUNuQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNULE9BQU8sQ0FBQyxHQUFHLENB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SSxVQUFVLElBQUksUUFBUSxFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxRQUFRLFVBQVUsVUFBVSxDQUFDLEVBQUUsSUFBSSx1QkFBdUIsRUFBRSxDQUFDLENBQUM7UUFDaEcsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUMvQyxLQUFLLElBQUksUUFBUSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLElBQUk7SUFDZixJQUFJLE1BQU0sR0FBRyxNQUFNLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sU0FBUyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVWX2xpc3RJZGVudGl0eURvbWFpbnMsIGdldE93bk1hY2hpbmVJZCwgbG9hZElkZW50aXR5Q0EgfSBmcm9tIFwiLi4vLi4vbWlzYy9odHRwcy9jZXJ0c1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUtleXNSZXBvIH0gZnJvbSBcIi4uL2F1dGhvcml6ZWRLZXlzL2tleXNSZXBvXCI7XG5pbXBvcnQgeyBsaXN0UmV2b2NhdGlvbnMsIHJlYWRTaWduZWRSZXBvIH0gZnJvbSBcIi4uL2F1dGhvcml6ZWRLZXlzL2RhZW1vbi9yZWFkU2lnbmVkUmVwb1wiO1xuaW1wb3J0IHsgcmV2b2tlUmVwbywgc3luY1JlcG9GaWxlcyB9IGZyb20gXCIuLi9hdXRob3JpemVkS2V5cy9kYWVtb24vcmVwb0ZpbGVzXCI7XG5pbXBvcnQgeyBNQUNISU5FU19ESVIgfSBmcm9tIFwiLi9tYWNoaW5lc1wiO1xuXG4vLyBXaG8gdGhpcyBtYWNoaW5lIGlzLCBhbmQgd2hvIGl0IGJlbGlldmVzIGV2ZXJ5b25lIGVsc2UgaXMuIE9uZSBjb21tYW5kLCBiZWNhdXNlIHdvcmtpbmcgb3V0XG4vLyB3aGV0aGVyIGEgbWFjaGluZSBpcyB0cnVzdGVkIG1lYW5zIGhvbGRpbmcgYm90aCBoYWx2ZXMgYXQgb25jZTogb3VyIG93biBpZCB1bmRlciBlYWNoIGRvbWFpbixcbi8vIGFuZCB0aGUgaWRzIHRoZSBzaWduZWQgcmVwbyBsaXN0cyB3aXRoIHRoZSBhZGRyZXNzZXMgZWFjaCBpcyBhbGxvd2VkIGZyb20uXG5cbmFzeW5jIGZ1bmN0aW9uIHByaW50T3duSWRzKCkge1xuICAgIGxldCBkb21haW5zID0gREVWX2xpc3RJZGVudGl0eURvbWFpbnMoKTtcbiAgICBpZiAoIWRvbWFpbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBUaGlzIG1hY2hpbmUgaGFzIG5vIGlkZW50aXRpZXMgeWV0LiBPbmUgaXMgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSBpdCBuZWVkcyBvbmUuYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYFRoaXMgbWFjaGluZTpgKTtcbiAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IGRvbWFpbiBvZiBkb21haW5zKSB7XG4gICAgICAgIGF3YWl0IGxvYWRJZGVudGl0eUNBKGRvbWFpbik7XG4gICAgICAgIGxldCBtYWNoaW5lSWQgPSBnZXRPd25NYWNoaW5lSWQoZG9tYWluKTtcbiAgICAgICAgaWRzLnB1c2gobWFjaGluZUlkKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgICAke2RvbWFpbn0gJHttYWNoaW5lSWR9YCk7XG4gICAgfVxuICAgIHJldHVybiBpZHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByaW50UmVwbyhvd25JZHM6IHN0cmluZ1tdKSB7XG4gICAgbGV0IHJlcG87XG4gICAgdHJ5IHtcbiAgICAgICAgcmVwbyA9IGF3YWl0IHJlc29sdmVLZXlzUmVwbygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFxcbk5vIGtleXMgcmVwbyB0byByZWFkLCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIHNheSBhYm91dCB3aG8gaXMgdHJ1c3RlZC4gJHtlfWApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB7IHJlcG9QYXRoLCBzb3VyY2VVUkwgfSA9IHJlcG87XG4gICAgY29uc29sZS5sb2coYFxcbktleXMgcmVwbyAke3JlcG9QYXRofWApO1xuICAgIGNvbnNvbGUubG9nKGAgICAgZnJvbSAke3NvdXJjZVVSTH1gKTtcblxuICAgIC8vIFB1bGxlZCBmaXJzdCwgb3IgYSByZXZvY2F0aW9uIGFub3RoZXIgbWFjaGluZSB3cm90ZSBtaW51dGVzIGFnbyBpcyBtaXNzaW5nIGZyb20gYSBwaWN0dXJlXG4gICAgLy8gd2hvc2Ugd2hvbGUgcHVycG9zZSBpcyB0byBleHBsYWluIHdoeSBzb21ldGhpbmcgaXMgYmVpbmcgcmVmdXNlZC5cbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBzeW5jUmVwb0ZpbGVzKHJldm9rZVJlcG8oc291cmNlVVJMKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgICAgIENvdWxkIG5vdCBwdWxsIHRoZSByZXZvY2F0aW9ucywgc2hvd2luZyB0aGUgb25lcyBhbHJlYWR5IGhlcmUuICR7ZX1gKTtcbiAgICB9XG5cbiAgICBsZXQgZmlsZXM7XG4gICAgdHJ5IHtcbiAgICAgICAgZmlsZXMgPSAoYXdhaXQgcmVhZFNpZ25lZFJlcG8oeyByZXBvUGF0aCwgc291cmNlVVJMIH0pKS5maWxlcztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBcXG5JdHMgc2lnbmF0dXJlIGRvZXMgbm90IGNoZWNrIG91dCwgc28gbm90aGluZyBpbiBpdCBjb3VudHMuICR7ZX1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE9ubHkgdGhlIG1hY2hpbmUgZmlsZXMgdGhlIHNpZ25hdHVyZSBjb3ZlcnMgLSByZWFkU2lnbmVkUmVwbyBoYXMgYWxyZWFkeSBkcm9wcGVkIGFueXRoaW5nXG4gICAgLy8gdW5zaWduZWQgb3IgZnJvemVuLCBzbyB0aGlzIGlzIHRoZSBsaXN0IHRoaXMgbWFjaGluZSB3b3VsZCBhY3R1YWxseSBhY2NlcHQuXG4gICAgbGV0IG1hY2hpbmVzOiB7IG1hY2hpbmVJZDogc3RyaW5nOyBpcHM6IHN0cmluZ1tdIH1bXSA9IFtdO1xuICAgIGZvciAobGV0IFtmaWxlUGF0aCwgY29udGVudHNdIG9mIGZpbGVzKSB7XG4gICAgICAgIGlmICghZmlsZVBhdGguc3RhcnRzV2l0aChgJHtNQUNISU5FU19ESVJ9L2ApIHx8ICFmaWxlUGF0aC5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHBhcnNlZCA9IEpTT04ucGFyc2UoY29udGVudHMudG9TdHJpbmcoXCJ1dGY4XCIpKTtcbiAgICAgICAgICAgIG1hY2hpbmVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG1hY2hpbmVJZDogcGFyc2VkLm1hY2hpbmVJZCB8fCBmaWxlUGF0aC5zbGljZShNQUNISU5FU19ESVIubGVuZ3RoICsgMSwgLVwiLmpzb25cIi5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIGlwczogcGFyc2VkLmlwcyB8fCBbXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgICAgIElnbm9yaW5nIHVucmVhZGFibGUgJHtmaWxlUGF0aH0uICR7ZX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKGBcXG5UcnVzdGVkIG1hY2hpbmVzICgke21hY2hpbmVzLmxlbmd0aH0pLCBhbmQgdGhlIGFkZHJlc3NlcyBlYWNoIG1heSB0YWxrIGZyb206YCk7XG4gICAgZm9yIChsZXQgbWFjaGluZSBvZiBtYWNoaW5lcykge1xuICAgICAgICBsZXQgdXMgPSBvd25JZHMuaW5jbHVkZXMobWFjaGluZS5tYWNoaW5lSWQpICYmIFwiICA8LSB0aGlzIG1hY2hpbmVcIiB8fCBcIlwiO1xuICAgICAgICBjb25zb2xlLmxvZyhgICAgICR7bWFjaGluZS5tYWNoaW5lSWR9ICAke21hY2hpbmUuaXBzLmpvaW4oXCIsIFwiKSB8fCBcIihubyBhZGRyZXNzZXMsIHNvIGl0IGlzIG5ldmVyIGFjY2VwdGVkKVwifSR7dXN9YCk7XG4gICAgfVxuXG4gICAgLy8gRnJvemVuIG1hY2hpbmVzIGFyZSBhbHJlYWR5IGdvbmUgZnJvbSB0aGUgbGlzdCBhYm92ZSwgd2hpY2ggaXMgZXhhY3RseSB3aHkgdGhleSBoYXZlIHRvIGJlXG4gICAgLy8gbmFtZWQgaGVyZSAtIG90aGVyd2lzZSBhIG1hY2hpbmUgYmVpbmcgcmVmdXNlZCBldmVyeXdoZXJlIHNpbXBseSBpcyBub3QgbWVudGlvbmVkIGFueXdoZXJlLlxuICAgIGxldCByZXZvY2F0aW9ucyA9IGxpc3RSZXZvY2F0aW9ucygpO1xuICAgIGxldCBmcm96ZW4gPSByZXZvY2F0aW9ucy5maWx0ZXIocmV2b2NhdGlvbiA9PiAhcmV2b2NhdGlvbi5mb3JnaXZlbik7XG4gICAgY29uc29sZS5sb2coYFxcbkZyb3plbiAoJHtmcm96ZW4ubGVuZ3RofSksIHJlZnVzZWQgZXZlcnl3aGVyZSB1bnRpbCB1bnJldm9rZWQ6YCk7XG4gICAgZm9yIChsZXQgcmV2b2NhdGlvbiBvZiBmcm96ZW4pIHtcbiAgICAgICAgbGV0IHVzID0gb3duSWRzLmluY2x1ZGVzKHJldm9jYXRpb24uaWRlbnRpdHkpICYmIFwiICA8LSB0aGlzIG1hY2hpbmVcIiB8fCBcIlwiO1xuICAgICAgICBjb25zb2xlLmxvZyhgICAgICR7cmV2b2NhdGlvbi5pZGVudGl0eX0gIHVzZWQgZnJvbSAke3Jldm9jYXRpb24uaXAgfHwgXCJhbiB1bnJlY29yZGVkIGFkZHJlc3NcIn1gXG4gICAgICAgICAgICArIGAke3Jldm9jYXRpb24ucmV2b2tlZEF0ICYmIGAgYXQgJHtyZXZvY2F0aW9uLnJldm9rZWRBdH1gIHx8IFwiXCJ9YFxuICAgICAgICAgICAgKyBgJHtyZXZvY2F0aW9uLnJldm9rZWRCeSAmJiBgLCBub3RpY2VkIGJ5ICR7cmV2b2NhdGlvbi5yZXZva2VkQnl9YCB8fCBcIlwifSR7dXN9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICAgICAgICR7cmV2b2NhdGlvbi5yZXZvY2F0aW9uSWR9YCk7XG4gICAgfVxuICAgIGlmIChmcm96ZW4ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICAgVG8gZ2l2ZSB0aGVzZSBhY2Nlc3MgYWdhaW4sIHJ1bjpgKTtcbiAgICAgICAgY29uc29sZS5sb2coYFxcYFxcYFxcYFxcbmNkICR7cmVwb1BhdGh9XFxueWFybiB1bnJldm9rZSBnaXRcXG5cXGBcXGBcXGBgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhgICAgIChub3RoaW5nIGlzIGZyb3plbilgKTtcbiAgICB9XG5cbiAgICBsZXQgZm9yZ2l2ZW4gPSByZXZvY2F0aW9ucy5maWx0ZXIocmV2b2NhdGlvbiA9PiByZXZvY2F0aW9uLmZvcmdpdmVuKTtcbiAgICBpZiAoZm9yZ2l2ZW4ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBcXG5SZXZva2VkLCB0aGVuIGFsbG93ZWQgYWdhaW4gKCR7Zm9yZ2l2ZW4ubGVuZ3RofSk6YCk7XG4gICAgICAgIGZvciAobGV0IHJldm9jYXRpb24gb2YgZm9yZ2l2ZW4pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtyZXZvY2F0aW9uLmlkZW50aXR5fSAgZnJvbSAke3Jldm9jYXRpb24uaXAgfHwgXCJhbiB1bnJlY29yZGVkIGFkZHJlc3NcIn1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKGBcXG5TaWduZWQgZmlsZXMgKCR7ZmlsZXMuc2l6ZX0pOmApO1xuICAgIGZvciAobGV0IGZpbGVQYXRoIG9mIFsuLi5maWxlcy5rZXlzKCldLnNvcnQoKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgICAgICR7ZmlsZVBhdGh9YCk7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICAgIGxldCBvd25JZHMgPSBhd2FpdCBwcmludE93bklkcygpO1xuICAgIGF3YWl0IHByaW50UmVwbyhvd25JZHMgfHwgW10pO1xufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihgJHtlfWApO1xuICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xufSkuZmluYWxseSgoKSA9PiBwcm9jZXNzLmV4aXQoKSk7XG4iXX0//=
118
+ /* _JS_SOURCE_HASH = "5d8b5c866cfe682a63e3f44ae5ff37847ac8ac52b29e5ba8b9e639d346cf4b56"; */
@@ -59,6 +59,7 @@ export declare function addMachineCommand(config: {
59
59
  ip: string;
60
60
  domain?: string;
61
61
  }): string;
62
+ export declare function describeThisMachine(domain?: string): string;
62
63
  /** Whether we will talk to this machine, coming from this address.
63
64
 
64
65
  Both halves are required and neither is a guess: the caller knows the machine id because the