@tricoteuses/assemblee 1.1.1 → 1.1.2

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 (50) hide show
  1. package/lib/bugs/acteur-00010/plugin.test.js +1 -1
  2. package/lib/bugs/acteur-00010.js +9 -4
  3. package/lib/bugs/agenda-00002/plugin.test.js +1 -1
  4. package/lib/bugs/agenda-00002.js +13 -9
  5. package/lib/bugs/agenda-00002.mjs +4 -2
  6. package/lib/bugs/agenda-00008/plugin.test.js +1 -1
  7. package/lib/bugs/agenda-00008.js +9 -4
  8. package/lib/bugs/agenda-00011/plugin.test.js +1 -1
  9. package/lib/bugs/agenda-00011.js +14 -9
  10. package/lib/bugs/agenda-00011.mjs +4 -2
  11. package/lib/bugs.js +13 -8
  12. package/lib/bugs.mjs +4 -2
  13. package/lib/cleaners/xml.js +1 -1
  14. package/lib/datasets.js +1 -1
  15. package/lib/dossiers_legislatifs.d.ts +1 -1
  16. package/lib/file_systems.js +9 -4
  17. package/lib/file_systems.mjs +4 -2
  18. package/lib/parsers/documents.js +1 -1
  19. package/lib/parsers/recherche_amendements.js +2 -2
  20. package/lib/raw_types/acteurs_et_organes.js +10 -5
  21. package/lib/raw_types/agendas.js +10 -5
  22. package/lib/raw_types/amendements.js +10 -5
  23. package/lib/raw_types/dossiers_legislatifs.js +10 -5
  24. package/lib/raw_types/scrutins.js +10 -5
  25. package/lib/scripts/bugs_helper.js +13 -9
  26. package/lib/scripts/bugs_helper.mjs +4 -2
  27. package/lib/scripts/clean_reorganized_data.js +1 -1
  28. package/lib/scripts/document_dossiers_legislatifs.js +9 -4
  29. package/lib/scripts/document_dossiers_legislatifs.mjs +4 -2
  30. package/lib/scripts/raw_types_from_amendements.js +1 -1
  31. package/lib/scripts/reorganize_data.js +1 -1
  32. package/lib/scripts/retrieve_deputes_photos.js +2 -2
  33. package/lib/scripts/retrieve_documents.js +14 -9
  34. package/lib/scripts/retrieve_documents.mjs +4 -2
  35. package/lib/scripts/retrieve_open_data.js +1 -1
  36. package/lib/scripts/retrieve_pending_amendments.js +2 -2
  37. package/lib/scripts/retrieve_senateurs_photos.js +2 -2
  38. package/lib/scripts/retrieve_textes_lois.js +8 -3
  39. package/lib/scripts/validate_json.js +13 -8
  40. package/lib/scripts/validate_json.mjs +4 -2
  41. package/lib/shared_types/codes_actes.d.ts +3 -1
  42. package/lib/shared_types/codes_actes.js +17 -5
  43. package/lib/shared_types/codes_actes.mjs +2 -1
  44. package/lib/types/acteurs_et_organes.d.ts +1 -1
  45. package/lib/types/acteurs_et_organes.js +10 -5
  46. package/lib/types/agendas.js +10 -5
  47. package/lib/types/amendements.js +10 -5
  48. package/lib/types/dossiers_legislatifs.js +10 -5
  49. package/lib/types/scrutins.js +10 -5
  50. package/package.json +4 -4
@@ -1,4 +1,6 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
2
4
  import fs from "fs-extra";
3
5
  import commandLineArgs from "command-line-args";
4
6
  import commandLineUsage from "command-line-usage";
@@ -246,4 +248,4 @@ if (process.argv[1].endsWith("bugs_helper.ts")) main(process.argv).then(status =
246
248
  console.error(error);
247
249
  process.exit(1);
248
250
  });
249
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImNvbW1hbmRMaW5lQXJncyIsImNvbW1hbmRMaW5lVXNhZ2UiLCJsb2FkIiwiZ2V0RmlsZXMiLCJHZXRGaWxlTm90Rm91bmRFcnJvciIsIlNjaGVtYUJ1Z3MiLCJnaXQiLCJ2YWxpZERhdGFzZXQiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZGlmZlVwc3RyZWFtIiwibWFzdGVyVXJsIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdE9wdGlvbiIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsInNlY3Rpb25zIiwiaGVhZGVyIiwiY29udGVudCIsIm9wdGlvbkxpc3QiLCJvcHRpb25zIiwiZGF0YXNldCIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJzY2hlbWEiLCJpbmNsdWRlcyIsImNvbW1pdCIsImV4aXN0c1N5bmMiLCJkZWJ1ZyIsInZlcmJvc2UiLCJ1c2FnZSIsIndhcm4iLCJCdWdzSGVscGVyIiwiY29uc3RydWN0b3IiLCJidWdzIiwiY2hlY2siLCJhbmFseXNpcyIsInByZUNoZWNrIiwibG9nIiwiZGF0YSIsImZpbGUiLCJwb3N0Q2hlY2siLCJzaG93Iiwib3V0cHV0Iiwic3RvcmUiLCJmaWxlbmFtZSIsIk9iamVjdCIsImtleXMiLCJidWciLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJqb2luIiwibmFtZTJyZXBvcnRzIiwicmVwb3J0cyIsIm4iLCJzcGxpdCIsImxpbmVzIiwiTnVtYmVyIiwic3RhdHVzMmxpbmVzIiwicmVwb3J0Iiwic3RhdHVzIiwibCIsInB1c2giLCJpbmZvIiwibGFiZWwiLCJjb25jYXQiLCJ3cml0ZUZpbGVTeW5jIiwiZW5jb2RpbmciLCJmaXgiLCJwcmVGaXgiLCJtYWluIiwiY2hlY2tvdXRGaXgiLCJjIiwidiIsInJ1biIsInRlc3QiLCJtZXJnZUZpeCIsImRpcmVjdG9yeVNjaGVtYSIsImQiLCJoZWxwZXIiLCJlIiwicHJvY2VzcyIsImVuZHNXaXRoIiwidGhlbiIsImV4aXQiLCJjYXRjaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2J1Z3NfaGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcywgR2V0RmlsZU5vdEZvdW5kRXJyb3IgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IFNjaGVtYUJ1Z3MgfSBmcm9tIFwiLi4vLi4vc3JjL2J1Z3NcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi8uLi9zcmMvZ2l0XCJcbmltcG9ydCB7XG4gIHZhbGlkRGF0YXNldCxcbiAgZ2V0RGF0YXNldHMsXG4gIGdldFNjaGVtYXMsXG4gIGRhdGFzZXREaXJlY3RvcnlTY2hlbWEsXG4gIGRpZmZVcHN0cmVhbSxcbiAgbWFzdGVyVXJsLFxufSBmcm9tIFwiLi4vLi4vc3JjL2RhdGFzZXRzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZGF0YXNldFwiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBIVE1MIGNvbXB0ZXMgcmVuZHVzIGRlIHNlYW5jZVwiLFxuICAgICAgbmFtZTogXCJjclwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSB0byBjb21taXRcIixcbiAgICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJvbmx5IGNvbnNpZGVyIHRoaXMgYnVnXCIsXG4gICAgICBuYW1lOiBcImJ1Z1wiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgY2hlY2sgb3V0cHV0cyB3aWxsIGJlIHN0b3JlZFwiLFxuICAgICAgbmFtZTogXCJvdXRwdXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgZGF0YXNldCAocG9zc2libGUgdmFsdWVzIG11c3QgaW5jbHVkZSBleGFjdGx5IG9uZSBvZiAke2dldERhdGFzZXRzKCl9KWAsXG4gICAgICBuYW1lOiBcImRhdGFzZXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgc2NoZW1hIChwb3NzaWJsZSB2YWx1ZXMgYXJlICR7Z2V0U2NoZW1hcygpfSlgLFxuICAgICAgbmFtZTogXCJzY2hlbWFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcImRpcmVjdG9yeSBpbiB3aGljaCBidWdzIGFyZSBmb3VuZCAoZGVmYXVsdCAuKVwiLFxuICAgICAgbmFtZTogXCJidWdzLWRpclwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiaW5jcmVhc2UgdmVyYm9zaXR5XCIsXG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJkZWJ1ZyBpbmZvcm1hdGlvblwiLFxuICAgICAgbmFtZTogXCJkZWJ1Z1wiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcImNoZWNrXCIsXG4gICAgICBuYW1lOiBcImNoZWNrXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiZml4XCIsXG4gICAgICBuYW1lOiBcImZpeFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJDcm9zcyBjaGVjayBkYXRhIGNvbnNpc3RlbmN5IGFuZCBmaXggcHJvYmxlbXNcIixcbiAgICAgIGNvbnRlbnQ6IFwiXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuXG4gIGlmIChvcHRpb25zLmRhdGFzZXQpIHtcbiAgICBpZiAoIXZhbGlkRGF0YXNldChvcHRpb25zLmRhdGFzZXQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAtLWRhdGFzZXQgJHtvcHRpb25zLmRhdGFzZXR9YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5zY2hlbWEpIHtcbiAgICBpZiAoIWdldFNjaGVtYXMoKS5pbmNsdWRlcyhvcHRpb25zLnNjaGVtYSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tc2NoZW1hICR7b3B0aW9ucy5zY2hlbWF9YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5jb21taXQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke29wdGlvbnMuY29tbWl0fSBkb2VzIG5vdCBleGlzdGApXG4gICAgICBvcHRpb25zLmhlbHAgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuZGVidWcpIG9wdGlvbnMudmVyYm9zZSA9IHRydWVcblxuICBpZiAoXCJoZWxwXCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHVzYWdlID0gY29tbWFuZExpbmVVc2FnZShzZWN0aW9ucylcbiAgICBjb25zb2xlLndhcm4odXNhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5leHBvcnQgY2xhc3MgQnVnc0hlbHBlciB7XG4gIG9wdGlvbnM6IGFueVxuICBidWdzOiBhbnlcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy5idWdzID0gbmV3IFNjaGVtYUJ1Z3ModGhpcy5vcHRpb25zKVxuICB9XG5cbiAgYXN5bmMgY2hlY2soKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBhbmFseXNpczogYW55ID0ge31cbiAgICBhd2FpdCB0aGlzLmJ1Z3MucHJlQ2hlY2soKVxuICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYGNoZWNrICR7dGhpcy5vcHRpb25zLmRhdGF9YClcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZ2V0RmlsZXMoW3RoaXMub3B0aW9ucy5kYXRhXSkpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBsb2FkKGZpbGUpXG4gICAgICBhbmFseXNpc1tmaWxlXSA9IGF3YWl0IHRoaXMuYnVncy5jaGVjayhjb250ZW50LCBmaWxlKVxuICAgIH1cbiAgICBhd2FpdCB0aGlzLmJ1Z3MucG9zdENoZWNrKGFuYWx5c2lzKVxuICAgIGF3YWl0IHRoaXMuc2hvdyhhbmFseXNpcylcbiAgICBpZiAodGhpcy5vcHRpb25zLm91dHB1dCkgYXdhaXQgdGhpcy5zdG9yZShhbmFseXNpcylcbiAgICByZXR1cm4gMFxuICB9XG5cbiAgYXN5bmMgc2hvdyhhbmFseXNpczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBPYmplY3Qua2V5cyhhbmFseXNpcykpIHtcbiAgICAgIGNvbnN0IGJ1ZyA9IGFuYWx5c2lzW2ZpbGVuYW1lXVxuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGJ1ZykpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYnVnW25hbWVdXG4gICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICAgIGxldCBsb2dcbiAgICAgICAgICBpZiAocmVzdWx0W1wic3RhdHVzXCJdID09IFwibmVlZHMtZml4aW5nXCIpIHtcbiAgICAgICAgICAgIGxvZyA9IGNvbnNvbGUuZXJyb3JcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICBsb2cgPSBjb25zb2xlLmxvZ1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobG9nICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9nKGAke25hbWV9IGZpbmRzICR7ZmlsZW5hbWV9ICR7cmVzdWx0W1wic3RhdHVzXCJdfWApXG4gICAgICAgICAgICBsb2cocmVzdWx0W1wiaW5mb1wiXS5qb2luKFwiXFxuXCIpKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0b3JlKGFuYWx5c2lzOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBuYW1lMnJlcG9ydHM6IGFueSA9IHt9XG4gICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBPYmplY3Qua2V5cyhhbmFseXNpcykpIHtcbiAgICAgIGNvbnN0IGJ1ZyA9IGFuYWx5c2lzW2ZpbGVuYW1lXVxuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGJ1ZykpIHtcbiAgICAgICAgaWYgKCEobmFtZSBpbiBuYW1lMnJlcG9ydHMpKSBuYW1lMnJlcG9ydHNbbmFtZV0gPSB7fVxuICAgICAgICBuYW1lMnJlcG9ydHNbbmFtZV1bZmlsZW5hbWVdID0gYnVnW25hbWVdXG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhuYW1lMnJlcG9ydHMpKSB7XG4gICAgICBjb25zdCByZXBvcnRzID0gbmFtZTJyZXBvcnRzW25hbWVdXG4gICAgICBjb25zdCBuID0gbmFtZS5zcGxpdChcIi1cIilbMV1cbiAgICAgIGxldCBsaW5lczogYW55ID0gW1xuICAgICAgICBgIyMgQnVnIFske25hbWV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy90cmljb3RldXNlcy1hc3NlbWJsZWUtcWEvaXNzdWVzLyR7TnVtYmVyKFxuICAgICAgICAgIG4sXG4gICAgICAgICl9KWAsXG4gICAgICAgIGBUaGlzIHJlcG9ydCB3YXMgY3JlYXRlZCBieSB0aGUgKipjaGVjayoqIGZ1bmN0aW9uIG9mIFske25hbWV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy90cmljb3RldXNlcy1hc3NlbWJsZWUvLS9ibG9iL21hc3Rlci9zcmMvYnVncy8ke25hbWV9LnRzKS5gLFxuICAgICAgXVxuICAgICAgY29uc3Qgc3RhdHVzMmxpbmVzOiBhbnkgPSB7XG4gICAgICAgIFwibmVlZHMtZml4aW5nXCI6IFtdLFxuICAgICAgICBcIndpbGwtYmUtZml4ZWRcIjogW10sXG4gICAgICAgIFwiYWxyZWFkeS1maXhlZFwiOiBbXSxcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgT2JqZWN0LmtleXMocmVwb3J0cykpIHtcbiAgICAgICAgY29uc3QgcmVwb3J0ID0gcmVwb3J0c1tmaWxlbmFtZV1cbiAgICAgICAgaWYgKHJlcG9ydCA9PSBudWxsIHx8IHJlcG9ydFtcInN0YXR1c1wiXSA9PSBcIm9rXCIpIGNvbnRpbnVlXG4gICAgICAgIGlmICghKHJlcG9ydFtcInN0YXR1c1wiXSBpbiBzdGF0dXMybGluZXMpKVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7ZmlsZW5hbWV9IHN0YXR1cyAke3JlcG9ydFtcInN0YXR1c1wiXX0gdW5rbm93bmApXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHJlcG9ydFtcInN0YXR1c1wiXVxuICAgICAgICBsZXQgbCA9IHN0YXR1czJsaW5lc1tzdGF0dXNdXG4gICAgICAgIGlmIChzdGF0dXMgPT0gXCJ3aWxsLWJlLWZpeGVkXCIpIGwucHVzaChgKiAke2RpZmZVcHN0cmVhbShmaWxlbmFtZSl9YClcbiAgICAgICAgZWxzZSBsLnB1c2goYCogJHttYXN0ZXJVcmwoZmlsZW5hbWUpfWApXG4gICAgICAgIGZvciAoY29uc3QgaW5mbyBvZiByZXBvcnRbXCJpbmZvXCJdKSBsLnB1c2goYCAgKiAke2luZm99YClcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgW3N0YXR1cywgbGFiZWxdIG9mIFtcbiAgICAgICAgW1wibmVlZHMtZml4aW5nXCIsIFwiVGhlIGZvbGxvd2luZyBmaWxlcyBtdXN0IGJlIGZpeGVkXCJdLFxuICAgICAgICBbXCJhbHJlYWR5LWZpeGVkXCIsIFwiVGhlIGZvbGxvd2luZyBmaWxlcyBubyBsb25nZXIgbmVlZCBhIGZpeFwiXSxcbiAgICAgICAgW1wid2lsbC1iZS1maXhlZFwiLCBcIlRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBmaXhlZFwiXSxcbiAgICAgIF0pIHtcbiAgICAgICAgbGluZXMucHVzaChgIyMjICR7bGFiZWx9YClcbiAgICAgICAgbGluZXMgPSBsaW5lcy5jb25jYXQoc3RhdHVzMmxpbmVzW3N0YXR1c10pXG4gICAgICB9XG4gICAgICBjb25zdCBvdXRwdXQgPSBgJHt0aGlzLm9wdGlvbnMub3V0cHV0fS8ke25hbWV9Lm1kYFxuICAgICAgZnMud3JpdGVGaWxlU3luYyhvdXRwdXQsIGxpbmVzLmpvaW4oXCJcXG5cIiksIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBmaXgoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBhd2FpdCB0aGlzLmJ1Z3MucHJlRml4KClcbiAgICBhd2FpdCB0aGlzLmJ1Z3MuZml4KGdldEZpbGVzKFt0aGlzLm9wdGlvbnMuZGF0YV0pKVxuICAgIHJldHVybiAwXG4gIH1cblxuICBhc3luYyBtYWluKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5jaGVjaykgcmV0dXJuIHRoaXMuY2hlY2soKVxuICAgIGVsc2UgcmV0dXJuIHRoaXMuZml4KClcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tvdXRGaXgob3B0aW9uczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGMgPSBvcHRpb25zLmNvbW1pdFxuICBpZiAoYyA9PSB1bmRlZmluZWQpIHJldHVyblxuICBjb25zdCB2ID0gb3B0aW9ucy52ZXJib3NlXG4gIGdpdC5ydW4oYywgXCJjaGVja291dCAtLXF1aWV0IG1hc3RlclwiLCB2KVxuICBpZiAoL3RtcC8udGVzdChnaXQucnVuKGMsIFwiYnJhbmNoXCIsIHYpKSkgZ2l0LnJ1bihjLCBcImJyYW5jaCAtRCB0bXBcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgLWIgdG1wIG1hc3RlclwiLCB2KVxuICBpZiAoL01lcmdlIGJ1Z2ZpeGVzLy50ZXN0KGdpdC5ydW4oYywgXCJsb2cgLS1vbmVsaW5lIC0xXCIsIHYpKSlcbiAgICBnaXQucnVuKGMsIFwicmV2ZXJ0IC0tbWFpbmxpbmUgMSAtLW5vLWVkaXQgSEVBRFwiLCB2KVxuICBnaXQucnVuKGMsIFwibWVyZ2UgLS1uby1mZiAtbSAnTWVyZ2UgdXBzdHJlYW0nIHVwc3RyZWFtL3VpZFwiLCB2KVxuICBpZiAoL2J1Z2ZpeGVzLy50ZXN0KGdpdC5ydW4oYywgXCJicmFuY2hcIiwgdikpKVxuICAgIGdpdC5ydW4oYywgXCJicmFuY2ggLUQgYnVnZml4ZXNcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgLWIgYnVnZml4ZXNcIiwgdilcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1lcmdlRml4KG9wdGlvbnM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjID0gb3B0aW9ucy5jb21taXRcbiAgaWYgKGMgPT0gdW5kZWZpbmVkKSByZXR1cm5cbiAgY29uc3QgdiA9IG9wdGlvbnMudmVyYm9zZVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCB0bXBcIiwgdilcbiAgZ2l0LnJ1bihjLCBcIm1lcmdlIC0tbm8tZmYgLW0gJ01lcmdlIGJ1Z2ZpeGVzJyBidWdmaXhlc1wiLCB2KVxuICBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIGJ1Z2ZpeGVzXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJjaGVja291dCAtLXF1aWV0IG1hc3RlclwiLCB2KVxuICBpZiAoIWdpdC50ZXN0KGMsIFwiZGlmZiAtLXF1aWV0IHRtcCBtYXN0ZXJcIiwgdikpXG4gICAgZ2l0LnJ1bihjLCBcIm1lcmdlIC0tZmYtb25seSB0bXBcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImJyYW5jaCAtRCB0bXBcIiwgdilcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRpcmVjdG9yeVNjaGVtYSA9IFtdXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGRpcmVjdG9yeVNjaGVtYSA9IFtbb3B0aW9ucy5kYXRhLCBvcHRpb25zLnNjaGVtYV1dXG4gIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gZGF0YXNldERpcmVjdG9yeVNjaGVtYShvcHRpb25zLmRhdGFzZXQpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcImVpdGhlciAtLXNjaGVtYSBvciAtLWRhdGFzZXQgaXMgcmVxdWlyZWRcIilcbiAgICByZXR1cm4gMVxuICB9XG4gIGF3YWl0IGNoZWNrb3V0Rml4KG9wdGlvbnMpXG4gIGZvciAoY29uc3QgZCBvZiBkaXJlY3RvcnlTY2hlbWEpIHtcbiAgICBvcHRpb25zLnNjaGVtYSA9IGRbMV1cbiAgICBvcHRpb25zLmRhdGEgPSBkWzBdXG4gICAgaWYgKG9wdGlvbnMuZGVidWcpXG4gICAgICBjb25zb2xlLmxvZyhgd29ya2luZyBvbiAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgIGxldCBoZWxwZXJcbiAgICB0cnkge1xuICAgICAgaGVscGVyID0gbmV3IEJ1Z3NIZWxwZXIob3B0aW9ucylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgR2V0RmlsZU5vdEZvdW5kRXJyb3IpKSB7XG4gICAgICAgIHRocm93IGVcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChvcHRpb25zLnZlcmJvc2UpXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHdvcmtpbmcgb24gZmlsZXMgJHtvcHRpb25zLmRhdGF9IHdpdGggc2NoZW1hICR7b3B0aW9ucy5zY2hlbWF9YCxcbiAgICAgIClcbiAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBoZWxwZXIubWFpbigpXG4gICAgaWYgKHN0YXR1cyAhPSAwKSByZXR1cm4gc3RhdHVzXG4gIH1cbiAgYXdhaXQgbWVyZ2VGaXgob3B0aW9ucylcbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiYnVnc19oZWxwZXIudHNcIikpXG4gIG1haW4ocHJvY2Vzcy5hcmd2KVxuICAgIC50aGVuKChzdGF0dXMpID0+IHtcbiAgICAgIHByb2Nlc3MuZXhpdChzdGF0dXMpXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLGVBQWUsTUFBTSxtQkFBbUI7QUFDL0MsT0FBT0MsZ0JBQWdCLE1BQU0sb0JBQW9CO0FBQUEsU0FDeENDLElBQUksRUFBRUMsUUFBUSxFQUFFQyxvQkFBb0I7QUFBQSxTQUNwQ0MsVUFBVTtBQUFBLE9BQ1osS0FBS0MsR0FBRztBQUFBLFNBRWJDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxVQUFVLEVBQ1ZDLHNCQUFzQixFQUN0QkMsWUFBWSxFQUNaQyxTQUFTO0FBR1gsU0FBU0MsU0FBUyxDQUFDQyxJQUFjLEVBQU87RUFDdEMsTUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7SUFDRUMsV0FBVyxFQUFFLGtEQUFrRDtJQUMvREMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLElBQUksRUFBRSxNQUFNO0lBQ1pDLElBQUksRUFBRUM7RUFDUixDQUFDLEVBQ0Q7SUFDRUosV0FBVyxFQUNULHdFQUF3RTtJQUMxRUUsSUFBSSxFQUFFLElBQUk7SUFDVkMsSUFBSSxFQUFFQztFQUNSLENBQUMsRUFDRDtJQUNFSixXQUFXLEVBQUUscUNBQXFDO0lBQ2xERSxJ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
251
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsImNvbW1hbmRMaW5lQXJncyIsImNvbW1hbmRMaW5lVXNhZ2UiLCJsb2FkIiwiZ2V0RmlsZXMiLCJHZXRGaWxlTm90Rm91bmRFcnJvciIsIlNjaGVtYUJ1Z3MiLCJnaXQiLCJ2YWxpZERhdGFzZXQiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZGlmZlVwc3RyZWFtIiwibWFzdGVyVXJsIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdE9wdGlvbiIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsInNlY3Rpb25zIiwiaGVhZGVyIiwiY29udGVudCIsIm9wdGlvbkxpc3QiLCJvcHRpb25zIiwiZGF0YXNldCIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJzY2hlbWEiLCJpbmNsdWRlcyIsImNvbW1pdCIsImV4aXN0c1N5bmMiLCJkZWJ1ZyIsInZlcmJvc2UiLCJ1c2FnZSIsIndhcm4iLCJCdWdzSGVscGVyIiwiY29uc3RydWN0b3IiLCJidWdzIiwiY2hlY2siLCJhbmFseXNpcyIsInByZUNoZWNrIiwibG9nIiwiZGF0YSIsImZpbGUiLCJwb3N0Q2hlY2siLCJzaG93Iiwib3V0cHV0Iiwic3RvcmUiLCJmaWxlbmFtZSIsIk9iamVjdCIsImtleXMiLCJidWciLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJqb2luIiwibmFtZTJyZXBvcnRzIiwicmVwb3J0cyIsIm4iLCJzcGxpdCIsImxpbmVzIiwiTnVtYmVyIiwic3RhdHVzMmxpbmVzIiwicmVwb3J0Iiwic3RhdHVzIiwibCIsInB1c2giLCJpbmZvIiwibGFiZWwiLCJjb25jYXQiLCJ3cml0ZUZpbGVTeW5jIiwiZW5jb2RpbmciLCJmaXgiLCJwcmVGaXgiLCJtYWluIiwiY2hlY2tvdXRGaXgiLCJjIiwidiIsInJ1biIsInRlc3QiLCJtZXJnZUZpeCIsImRpcmVjdG9yeVNjaGVtYSIsImQiLCJoZWxwZXIiLCJlIiwicHJvY2VzcyIsImVuZHNXaXRoIiwidGhlbiIsImV4aXQiLCJjYXRjaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2J1Z3NfaGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcywgR2V0RmlsZU5vdEZvdW5kRXJyb3IgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IFNjaGVtYUJ1Z3MgfSBmcm9tIFwiLi4vLi4vc3JjL2J1Z3NcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi8uLi9zcmMvZ2l0XCJcbmltcG9ydCB7XG4gIHZhbGlkRGF0YXNldCxcbiAgZ2V0RGF0YXNldHMsXG4gIGdldFNjaGVtYXMsXG4gIGRhdGFzZXREaXJlY3RvcnlTY2hlbWEsXG4gIGRpZmZVcHN0cmVhbSxcbiAgbWFzdGVyVXJsLFxufSBmcm9tIFwiLi4vLi4vc3JjL2RhdGFzZXRzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZGF0YXNldFwiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBIVE1MIGNvbXB0ZXMgcmVuZHVzIGRlIHNlYW5jZVwiLFxuICAgICAgbmFtZTogXCJjclwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSB0byBjb21taXRcIixcbiAgICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJvbmx5IGNvbnNpZGVyIHRoaXMgYnVnXCIsXG4gICAgICBuYW1lOiBcImJ1Z1wiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgY2hlY2sgb3V0cHV0cyB3aWxsIGJlIHN0b3JlZFwiLFxuICAgICAgbmFtZTogXCJvdXRwdXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgZGF0YXNldCAocG9zc2libGUgdmFsdWVzIG11c3QgaW5jbHVkZSBleGFjdGx5IG9uZSBvZiAke2dldERhdGFzZXRzKCl9KWAsXG4gICAgICBuYW1lOiBcImRhdGFzZXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgc2NoZW1hIChwb3NzaWJsZSB2YWx1ZXMgYXJlICR7Z2V0U2NoZW1hcygpfSlgLFxuICAgICAgbmFtZTogXCJzY2hlbWFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcImRpcmVjdG9yeSBpbiB3aGljaCBidWdzIGFyZSBmb3VuZCAoZGVmYXVsdCAuKVwiLFxuICAgICAgbmFtZTogXCJidWdzLWRpclwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiaW5jcmVhc2UgdmVyYm9zaXR5XCIsXG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJkZWJ1ZyBpbmZvcm1hdGlvblwiLFxuICAgICAgbmFtZTogXCJkZWJ1Z1wiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcImNoZWNrXCIsXG4gICAgICBuYW1lOiBcImNoZWNrXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiZml4XCIsXG4gICAgICBuYW1lOiBcImZpeFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJDcm9zcyBjaGVjayBkYXRhIGNvbnNpc3RlbmN5IGFuZCBmaXggcHJvYmxlbXNcIixcbiAgICAgIGNvbnRlbnQ6IFwiXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuXG4gIGlmIChvcHRpb25zLmRhdGFzZXQpIHtcbiAgICBpZiAoIXZhbGlkRGF0YXNldChvcHRpb25zLmRhdGFzZXQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAtLWRhdGFzZXQgJHtvcHRpb25zLmRhdGFzZXR9YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5zY2hlbWEpIHtcbiAgICBpZiAoIWdldFNjaGVtYXMoKS5pbmNsdWRlcyhvcHRpb25zLnNjaGVtYSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tc2NoZW1hICR7b3B0aW9ucy5zY2hlbWF9YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5jb21taXQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke29wdGlvbnMuY29tbWl0fSBkb2VzIG5vdCBleGlzdGApXG4gICAgICBvcHRpb25zLmhlbHAgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuZGVidWcpIG9wdGlvbnMudmVyYm9zZSA9IHRydWVcblxuICBpZiAoXCJoZWxwXCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHVzYWdlID0gY29tbWFuZExpbmVVc2FnZShzZWN0aW9ucylcbiAgICBjb25zb2xlLndhcm4odXNhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5leHBvcnQgY2xhc3MgQnVnc0hlbHBlciB7XG4gIG9wdGlvbnM6IGFueVxuICBidWdzOiBhbnlcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy5idWdzID0gbmV3IFNjaGVtYUJ1Z3ModGhpcy5vcHRpb25zKVxuICB9XG5cbiAgYXN5bmMgY2hlY2soKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBhbmFseXNpczogYW55ID0ge31cbiAgICBhd2FpdCB0aGlzLmJ1Z3MucHJlQ2hlY2soKVxuICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYGNoZWNrICR7dGhpcy5vcHRpb25zLmRhdGF9YClcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZ2V0RmlsZXMoW3RoaXMub3B0aW9ucy5kYXRhXSkpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBsb2FkKGZpbGUpXG4gICAgICBhbmFseXNpc1tmaWxlXSA9IGF3YWl0IHRoaXMuYnVncy5jaGVjayhjb250ZW50LCBmaWxlKVxuICAgIH1cbiAgICBhd2FpdCB0aGlzLmJ1Z3MucG9zdENoZWNrKGFuYWx5c2lzKVxuICAgIGF3YWl0IHRoaXMuc2hvdyhhbmFseXNpcylcbiAgICBpZiAodGhpcy5vcHRpb25zLm91dHB1dCkgYXdhaXQgdGhpcy5zdG9yZShhbmFseXNpcylcbiAgICByZXR1cm4gMFxuICB9XG5cbiAgYXN5bmMgc2hvdyhhbmFseXNpczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBPYmplY3Qua2V5cyhhbmFseXNpcykpIHtcbiAgICAgIGNvbnN0IGJ1ZyA9IGFuYWx5c2lzW2ZpbGVuYW1lXVxuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGJ1ZykpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYnVnW25hbWVdXG4gICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICAgIGxldCBsb2dcbiAgICAgICAgICBpZiAocmVzdWx0W1wic3RhdHVzXCJdID09IFwibmVlZHMtZml4aW5nXCIpIHtcbiAgICAgICAgICAgIGxvZyA9IGNvbnNvbGUuZXJyb3JcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICBsb2cgPSBjb25zb2xlLmxvZ1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobG9nICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9nKGAke25hbWV9IGZpbmRzICR7ZmlsZW5hbWV9ICR7cmVzdWx0W1wic3RhdHVzXCJdfWApXG4gICAgICAgICAgICBsb2cocmVzdWx0W1wiaW5mb1wiXS5qb2luKFwiXFxuXCIpKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0b3JlKGFuYWx5c2lzOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBuYW1lMnJlcG9ydHM6IGFueSA9IHt9XG4gICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBPYmplY3Qua2V5cyhhbmFseXNpcykpIHtcbiAgICAgIGNvbnN0IGJ1ZyA9IGFuYWx5c2lzW2ZpbGVuYW1lXVxuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGJ1ZykpIHtcbiAgICAgICAgaWYgKCEobmFtZSBpbiBuYW1lMnJlcG9ydHMpKSBuYW1lMnJlcG9ydHNbbmFtZV0gPSB7fVxuICAgICAgICBuYW1lMnJlcG9ydHNbbmFtZV1bZmlsZW5hbWVdID0gYnVnW25hbWVdXG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhuYW1lMnJlcG9ydHMpKSB7XG4gICAgICBjb25zdCByZXBvcnRzID0gbmFtZTJyZXBvcnRzW25hbWVdXG4gICAgICBjb25zdCBuID0gbmFtZS5zcGxpdChcIi1cIilbMV1cbiAgICAgIGxldCBsaW5lczogYW55ID0gW1xuICAgICAgICBgIyMgQnVnIFske25hbWV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy90cmljb3RldXNlcy1hc3NlbWJsZWUtcWEvaXNzdWVzLyR7TnVtYmVyKFxuICAgICAgICAgIG4sXG4gICAgICAgICl9KWAsXG4gICAgICAgIGBUaGlzIHJlcG9ydCB3YXMgY3JlYXRlZCBieSB0aGUgKipjaGVjayoqIGZ1bmN0aW9uIG9mIFske25hbWV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy90cmljb3RldXNlcy1hc3NlbWJsZWUvLS9ibG9iL21hc3Rlci9zcmMvYnVncy8ke25hbWV9LnRzKS5gLFxuICAgICAgXVxuICAgICAgY29uc3Qgc3RhdHVzMmxpbmVzOiBhbnkgPSB7XG4gICAgICAgIFwibmVlZHMtZml4aW5nXCI6IFtdLFxuICAgICAgICBcIndpbGwtYmUtZml4ZWRcIjogW10sXG4gICAgICAgIFwiYWxyZWFkeS1maXhlZFwiOiBbXSxcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgT2JqZWN0LmtleXMocmVwb3J0cykpIHtcbiAgICAgICAgY29uc3QgcmVwb3J0ID0gcmVwb3J0c1tmaWxlbmFtZV1cbiAgICAgICAgaWYgKHJlcG9ydCA9PSBudWxsIHx8IHJlcG9ydFtcInN0YXR1c1wiXSA9PSBcIm9rXCIpIGNvbnRpbnVlXG4gICAgICAgIGlmICghKHJlcG9ydFtcInN0YXR1c1wiXSBpbiBzdGF0dXMybGluZXMpKVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7ZmlsZW5hbWV9IHN0YXR1cyAke3JlcG9ydFtcInN0YXR1c1wiXX0gdW5rbm93bmApXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHJlcG9ydFtcInN0YXR1c1wiXVxuICAgICAgICBsZXQgbCA9IHN0YXR1czJsaW5lc1tzdGF0dXNdXG4gICAgICAgIGlmIChzdGF0dXMgPT0gXCJ3aWxsLWJlLWZpeGVkXCIpIGwucHVzaChgKiAke2RpZmZVcHN0cmVhbShmaWxlbmFtZSl9YClcbiAgICAgICAgZWxzZSBsLnB1c2goYCogJHttYXN0ZXJVcmwoZmlsZW5hbWUpfWApXG4gICAgICAgIGZvciAoY29uc3QgaW5mbyBvZiByZXBvcnRbXCJpbmZvXCJdKSBsLnB1c2goYCAgKiAke2luZm99YClcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgW3N0YXR1cywgbGFiZWxdIG9mIFtcbiAgICAgICAgW1wibmVlZHMtZml4aW5nXCIsIFwiVGhlIGZvbGxvd2luZyBmaWxlcyBtdXN0IGJlIGZpeGVkXCJdLFxuICAgICAgICBbXCJhbHJlYWR5LWZpeGVkXCIsIFwiVGhlIGZvbGxvd2luZyBmaWxlcyBubyBsb25nZXIgbmVlZCBhIGZpeFwiXSxcbiAgICAgICAgW1wid2lsbC1iZS1maXhlZFwiLCBcIlRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBmaXhlZFwiXSxcbiAgICAgIF0pIHtcbiAgICAgICAgbGluZXMucHVzaChgIyMjICR7bGFiZWx9YClcbiAgICAgICAgbGluZXMgPSBsaW5lcy5jb25jYXQoc3RhdHVzMmxpbmVzW3N0YXR1c10pXG4gICAgICB9XG4gICAgICBjb25zdCBvdXRwdXQgPSBgJHt0aGlzLm9wdGlvbnMub3V0cHV0fS8ke25hbWV9Lm1kYFxuICAgICAgZnMud3JpdGVGaWxlU3luYyhvdXRwdXQsIGxpbmVzLmpvaW4oXCJcXG5cIiksIHtcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBmaXgoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBhd2FpdCB0aGlzLmJ1Z3MucHJlRml4KClcbiAgICBhd2FpdCB0aGlzLmJ1Z3MuZml4KGdldEZpbGVzKFt0aGlzLm9wdGlvbnMuZGF0YV0pKVxuICAgIHJldHVybiAwXG4gIH1cblxuICBhc3luYyBtYWluKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5jaGVjaykgcmV0dXJuIHRoaXMuY2hlY2soKVxuICAgIGVsc2UgcmV0dXJuIHRoaXMuZml4KClcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tvdXRGaXgob3B0aW9uczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGMgPSBvcHRpb25zLmNvbW1pdFxuICBpZiAoYyA9PSB1bmRlZmluZWQpIHJldHVyblxuICBjb25zdCB2ID0gb3B0aW9ucy52ZXJib3NlXG4gIGdpdC5ydW4oYywgXCJjaGVja291dCAtLXF1aWV0IG1hc3RlclwiLCB2KVxuICBpZiAoL3RtcC8udGVzdChnaXQucnVuKGMsIFwiYnJhbmNoXCIsIHYpKSkgZ2l0LnJ1bihjLCBcImJyYW5jaCAtRCB0bXBcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgLWIgdG1wIG1hc3RlclwiLCB2KVxuICBpZiAoL01lcmdlIGJ1Z2ZpeGVzLy50ZXN0KGdpdC5ydW4oYywgXCJsb2cgLS1vbmVsaW5lIC0xXCIsIHYpKSlcbiAgICBnaXQucnVuKGMsIFwicmV2ZXJ0IC0tbWFpbmxpbmUgMSAtLW5vLWVkaXQgSEVBRFwiLCB2KVxuICBnaXQucnVuKGMsIFwibWVyZ2UgLS1uby1mZiAtbSAnTWVyZ2UgdXBzdHJlYW0nIHVwc3RyZWFtL3VpZFwiLCB2KVxuICBpZiAoL2J1Z2ZpeGVzLy50ZXN0KGdpdC5ydW4oYywgXCJicmFuY2hcIiwgdikpKVxuICAgIGdpdC5ydW4oYywgXCJicmFuY2ggLUQgYnVnZml4ZXNcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgLWIgYnVnZml4ZXNcIiwgdilcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1lcmdlRml4KG9wdGlvbnM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjID0gb3B0aW9ucy5jb21taXRcbiAgaWYgKGMgPT0gdW5kZWZpbmVkKSByZXR1cm5cbiAgY29uc3QgdiA9IG9wdGlvbnMudmVyYm9zZVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCB0bXBcIiwgdilcbiAgZ2l0LnJ1bihjLCBcIm1lcmdlIC0tbm8tZmYgLW0gJ01lcmdlIGJ1Z2ZpeGVzJyBidWdmaXhlc1wiLCB2KVxuICBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIGJ1Z2ZpeGVzXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJjaGVja291dCAtLXF1aWV0IG1hc3RlclwiLCB2KVxuICBpZiAoIWdpdC50ZXN0KGMsIFwiZGlmZiAtLXF1aWV0IHRtcCBtYXN0ZXJcIiwgdikpXG4gICAgZ2l0LnJ1bihjLCBcIm1lcmdlIC0tZmYtb25seSB0bXBcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImJyYW5jaCAtRCB0bXBcIiwgdilcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRpcmVjdG9yeVNjaGVtYSA9IFtdXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGRpcmVjdG9yeVNjaGVtYSA9IFtbb3B0aW9ucy5kYXRhLCBvcHRpb25zLnNjaGVtYV1dXG4gIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gZGF0YXNldERpcmVjdG9yeVNjaGVtYShvcHRpb25zLmRhdGFzZXQpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcImVpdGhlciAtLXNjaGVtYSBvciAtLWRhdGFzZXQgaXMgcmVxdWlyZWRcIilcbiAgICByZXR1cm4gMVxuICB9XG4gIGF3YWl0IGNoZWNrb3V0Rml4KG9wdGlvbnMpXG4gIGZvciAoY29uc3QgZCBvZiBkaXJlY3RvcnlTY2hlbWEpIHtcbiAgICBvcHRpb25zLnNjaGVtYSA9IGRbMV1cbiAgICBvcHRpb25zLmRhdGEgPSBkWzBdXG4gICAgaWYgKG9wdGlvbnMuZGVidWcpXG4gICAgICBjb25zb2xlLmxvZyhgd29ya2luZyBvbiAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgIGxldCBoZWxwZXJcbiAgICB0cnkge1xuICAgICAgaGVscGVyID0gbmV3IEJ1Z3NIZWxwZXIob3B0aW9ucylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgR2V0RmlsZU5vdEZvdW5kRXJyb3IpKSB7XG4gICAgICAgIHRocm93IGVcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChvcHRpb25zLnZlcmJvc2UpXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHdvcmtpbmcgb24gZmlsZXMgJHtvcHRpb25zLmRhdGF9IHdpdGggc2NoZW1hICR7b3B0aW9ucy5zY2hlbWF9YCxcbiAgICAgIClcbiAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBoZWxwZXIubWFpbigpXG4gICAgaWYgKHN0YXR1cyAhPSAwKSByZXR1cm4gc3RhdHVzXG4gIH1cbiAgYXdhaXQgbWVyZ2VGaXgob3B0aW9ucylcbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiYnVnc19oZWxwZXIudHNcIikpXG4gIG1haW4ocHJvY2Vzcy5hcmd2KVxuICAgIC50aGVuKChzdGF0dXMpID0+IHtcbiAgICAgIHByb2Nlc3MuZXhpdChzdGF0dXMpXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsT0FBT0EsRUFBRSxNQUFNLFVBQVU7QUFDekIsT0FBT0MsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxnQkFBZ0IsTUFBTSxvQkFBb0I7QUFBQSxTQUN4Q0MsSUFBSSxFQUFFQyxRQUFRLEVBQUVDLG9CQUFvQjtBQUFBLFNBQ3BDQyxVQUFVO0FBQUEsT0FDWixLQUFLQyxHQUFHO0FBQUEsU0FFYkMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFVBQVUsRUFDVkMsc0JBQXNCLEVBQ3RCQyxZQUFZLEVBQ1pDLFNBQVM7QUFHWCxTQUFTQyxTQUFTLENBQUNDLElBQWMsRUFBTztFQUN0QyxNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtJQUNFQyxXQUFXLEVBQUUsa0RBQWtEO0lBQy9EQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsSUFBSSxFQUFFLE1BQU07SUFDWkMsSUFBSSxFQUFFQztFQUNSLENBQUMsRUFDRDtJQUNFSixXQUFXLEVBQ1Qsd0VBQXdFO0lBQzFFRSxJQUFJLEVBQUUsSUFBSTtJQUNWQyxJQUFJLEVBQUVDO0VBQ1IsQ0FBQyxFQUNEO0lBQ0VKLFdBQVcsRUFBRSxxQ0FBcUM7SUFDbERF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
@@ -58,7 +58,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
58
58
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
59
59
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
60
60
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
61
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
61
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
62
62
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
63
63
  function parseArgs(argv) {
64
64
  var optionsDefinitions = [{
@@ -6,6 +6,9 @@ require("core-js/modules/es.symbol.js");
6
6
  require("core-js/modules/es.symbol.description.js");
7
7
  require("core-js/modules/es.symbol.iterator.js");
8
8
  require("core-js/modules/es.array.is-array.js");
9
+ require("core-js/modules/es.symbol.to-primitive.js");
10
+ require("core-js/modules/es.date.to-primitive.js");
11
+ require("core-js/modules/es.number.constructor.js");
9
12
  require("core-js/modules/es.object.define-property.js");
10
13
  require("core-js/modules/es.object.set-prototype-of.js");
11
14
  require("core-js/modules/es.function.bind.js");
@@ -40,7 +43,7 @@ var _file_systems = require("../file_systems");
40
43
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
41
44
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
42
45
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
43
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
46
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
44
47
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
45
48
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
46
49
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -53,10 +56,12 @@ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) ===
53
56
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
54
57
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
55
58
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
56
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
59
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
57
60
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
58
61
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
59
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
62
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
63
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
64
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
60
65
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
61
66
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
62
67
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
@@ -648,4 +653,4 @@ function main(argv) {
648
653
 
649
654
  /* istanbul ignore if */
650
655
  if (process.argv[1].endsWith("document_dossiers_legislatifs.ts")) process.exit(main(process.argv));
651
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsImNvbW1hbmRMaW5lVXNhZ2UiLCJ3YXJuIiwiZXFTZXQiLCJhcyIsImJzIiwic2l6ZSIsImEiLCJoYXMiLCJDb2RlMlBhdHRlcm4iLCJwYXR0ZXJuIiwiY2hpbGRyZW4iLCJfcGF0dGVybl8iLCJfbWF0Y2hfY291bnRfIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29kZTJQYXR0ZXJuQ29tRm9uZCIsIkxlY3R1cmVNYXBwaW5nIiwiU2V0IiwiYWN0ZSIsImNvZGVzIiwiYWRkIiwiY29kZUFjdGUiLCJnZXRUeXBlIiwibGliZWxsZUFjdGUiLCJub21DYW5vbmlxdWUiLCJsaWJlbGxlIiwidHlwZXMiLCJBcnJheSIsImZyb20iLCJjIiwiY29kZSIsImxvZyIsImpvaW4iLCJtYXRjaCIsImNvZGVzX2xlY3R1cmVfcmVnZXhwIiwiRXJyb3IiLCJyZXBsYWNlIiwiaXNMZWN0dXJlIiwibWFwIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiZ2V0Q29kZUFjdGUiLCJ1bmRlZmluZWQiLCJsZWN0dXJlcyIsInJlbWFwIiwibWVyZ2VDb2RlcyIsInByaW50QW5jaG9ycyIsImdldENvZGVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwiZGF0YSIsImFjdGlvbiIsImdldEZpbGVzIiwiZmlsZSIsImRvc3NpZXIiLCJsb2FkIiwicHJvY2VkdXJlIiwicmVtYXBQcm9jZWR1cmUiLCJwcm9jZWR1cmVQYXJsZW1lbnRhaXJlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsIndhbGtGaWxlcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwiY29sbGVjdCIsImFjdGVzIiwiYzJwIiwicGFyZW50IiwibWVyZ2UiLCJ2YWxpZGF0ZSIsInJlc3VsdHMiLCJsZWN0dXJlTWFwcGVyIiwicHVzaCIsIm1lcmdlX3Byb2NlZHVyZXMiLCJNYXAiLCJyZW1hcHBlZFByb2NlZHVyZXMiLCJnZXQiLCJvcmRlcmVkIiwieCIsImFzc2VydCIsInNlcXVlbmNlIiwic2hvcnRDb2RlIiwieHNpVHlwZSIsImwiLCJyZW1hcEFjdGVzIiwidmFsaWRhdGVDaHJvbm9sb2d5IiwibWVyZ2VBY3RlIiwiY29sbGVjdEFjdGVzIiwicGF0aCIsImVudHJpZXMiLCJrZXkiLCJ2YWx1ZSIsImNvbnN0cnVjdG9yIiwidmFsaWRhdGVMZXZlbCIsImNvbmNhdCIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJsZW5ndGgiLCJhbmNob3JzUHJpbnRlZCIsImFuY2hvcnMiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJrZXlzIiwib3JkZXJlZENvZGVzIiwicmVuYW1lQ01QIiwiYWRkQW5jaG9ycyIsInByaW50RW50cnkiLCJwcmludExldmVsIiwic3Vic3RyaW5nIiwicmVtYXBwZWQiLCJhZ2dyZWdhdGVkIiwiZ2V0QWdncmVnYXRlZCIsInByaW50Q29kZXMiLCJwcmludEFuY2hvcnNJbmRleCIsIm1haW4iLCJkb2MiLCJjb2xsZWN0RmlsZXMiLCJwcm9jZXNzRmlsZXMiLCJwcmludCIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgbG9hZCwgZ2V0RmlsZXMgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIGEgSlNPTiBmaWxlIG9yIGEgZ2xvYiBwYXR0ZXJuIHRvIEpTT04gZmlsZXNcIixcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJuby1zYW5pdHktY2hlY2tzXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiRG8gbm90IHBlcmZvcm0gc2FuaXR5IGNoZWNrcy5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcImluY3JlYXNlIHZlcmJvc2l0eVwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkFpZGUgw6AgbGEgZG9jdW1lbnRhdGlvbiBkdSBkb3NzaWVyIGzDqWdpc2xhdGlmXCIsXG4gICAgICBjb250ZW50OiBcIkfDqW7DqHJlIHVuZSBoacOpcmFyY2hpZSBkZXMgYWN0ZXMgbMOpZ2lzbGF0aWZzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICBpZiAoIShcImhlbHBcIiBpbiBvcHRpb25zKSAmJiAhKFwiZGF0YVwiIGluIG9wdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIi0tZGF0YSBpcyBtYW5kYXRvcnlcIilcbiAgICBvcHRpb25zLmhlbHAgPSB0cnVlXG4gIH1cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gZXFTZXQoYXM6IFNldDxzdHJpbmc+LCBiczogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgaWYgKGFzLnNpemUgIT09IGJzLnNpemUpIHJldHVybiBmYWxzZVxuICBmb3IgKHZhciBhIG9mIGFzKSBpZiAoIWJzLmhhcyhhKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmNsYXNzIENvZGUyUGF0dGVybiB7XG4gIF9wYXR0ZXJuXzogYW55XG4gIF9tYXRjaF9jb3VudF86IG51bWJlclxuICBjb25zdHJ1Y3RvcihwYXR0ZXJuOiBhbnksIGNoaWxkcmVuOiBhbnkpIHtcbiAgICB0aGlzLl9wYXR0ZXJuXyA9IHBhdHRlcm5cbiAgICB0aGlzLl9tYXRjaF9jb3VudF8gPSAwXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjaGlsZHJlbilcbiAgfVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm5Db21Gb25kIGV4dGVuZHMgQ29kZTJQYXR0ZXJuIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJeL1NBSVNJRS8oL05PTUlOLykqKC9SRVVOSU9OLykqKC9SQVBQT1JULykqJFwiLCB7fSlcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGluZyB7XG4gIGxpYmVsbGU6IGFueSA9IHt9XG4gIGNvZGVzOiBhbnkgPSBuZXcgU2V0KClcblxuICBzdGF0aWMgY29kZXNfbGVjdHVyZTogc3RyaW5nW10gPSBbXG4gICAgXCJBTjFcIixcbiAgICBcIlNOMVwiLFxuICAgIFwiQU5OTEVDXCIsXG4gICAgXCJTTk5MRUNcIixcbiAgICBcIkFOTERFRlwiLFxuICAgIFwiQU4yXCIsXG4gICAgXCJTTjJcIixcbiAgICBcIlNOM1wiLFxuICBdXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlX3JlZ2V4cDogYW55ID0gbmV3IFJlZ0V4cChcbiAgICBcIl4oPzpcIiArIExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmUuam9pbihcInxcIikgKyBcIikoLS4qKT8kXCIsXG4gIClcblxuICBzdGF0aWMgaXNMZWN0dXJlKGFjdGU6IGFueSkge1xuICAgIHJldHVybiBhY3RlLmNvZGVBY3RlLm1hdGNoKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwKVxuICB9XG5cbiAgc3RhdGljIGdldFR5cGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15BTi8pKSByZXR1cm4gXCJBTlwiXG4gICAgZWxzZSBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXlNOLykpIHJldHVybiBcIlNOXCJcbiAgICBlbHNlIHRocm93IEVycm9yKGAke2FjdGUuY29kZUFjdGV9IGRvZXMgbm90IHN0YXJ0IHdpdGggQU4gb3IgU05gKVxuICB9XG5cbiAgc3RhdGljIG1hcChjb2RlQWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlLnJlcGxhY2UoTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHAsIGBsZWN0dXJlJDFgKVxuICB9XG5cbiAgc3RhdGljIGdldENvZGVBY3RlKGFjdGU6IGFueSkge1xuICAgIGlmICghTGVjdHVyZU1hcHBpbmcuaXNMZWN0dXJlKGFjdGUpKSByZXR1cm5cblxuICAgIHJldHVybiBMZWN0dXJlTWFwcGluZy5tYXAoYWN0ZS5jb2RlQWN0ZSlcbiAgfVxuXG4gIGFkZChhY3RlOiBhbnkpIHtcbiAgICB0aGlzLmNvZGVzLmFkZChhY3RlLmNvZGVBY3RlKVxuXG4gICAgY29uc3QgdHlwZSA9IExlY3R1cmVNYXBwaW5nLmdldFR5cGUoYWN0ZSlcblxuICAgIGlmICghKGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlIGluIHRoaXMubGliZWxsZSkpXG4gICAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdID0gbmV3IFNldCgpXG4gICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXS5hZGQodHlwZSlcbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIGFjdGUuY29kZUFjdGUgPSBjb2RlQWN0ZVxuXG4gICAgbGV0IHR5cGVzID0gdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXVxuICAgIGlmICghKHR5cGVzLmhhcyhcIlNOXCIpICYmIHR5cGVzLmhhcyhcIkFOXCIpKSkge1xuICAgICAgaWYgKHR5cGVzLmhhcyhcIlNOXCIpKSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoU8OpbmF0KVwiXG4gICAgICBlbHNlIGlmICh0eXBlcy5oYXMoXCJBTlwiKSlcbiAgICAgICAgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKEFzc2VtYmzDqWUgTmF0aW9uYWxlKVwiXG4gICAgfVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55KSB7XG4gICAgZm9yIChjb25zdCBjIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvZGVzLmFkZChjKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb25zb2xlLmxvZyhgLi4gXyR7Y29kZX06YClcbiAgfVxuXG4gIGdldENvZGVzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29kZXMpLmpvaW4oXCIsXCIpXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBlciB7XG4gIG1hcHBpbmc6IGFueSA9IHt9XG5cbiAgaGFzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29kZUFjdGUgaW4gdGhpcy5tYXBwaW5nXG4gIH1cblxuICBjb2xsZWN0KGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbGVjdHVyZXMgPSB0aGlzLm1hcHBpbmdcbiAgICAgIGlmICghKGNvZGVBY3RlIGluIGxlY3R1cmVzKSkgbGVjdHVyZXNbY29kZUFjdGVdID0gbmV3IExlY3R1cmVNYXBwaW5nKClcbiAgICAgIGxlY3R1cmVzW2NvZGVBY3RlXS5hZGQoYWN0ZSlcbiAgICB9XG4gIH1cblxuICByZW1hcChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5yZW1hcChhY3RlLCBjb2RlQWN0ZSlcbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ubWVyZ2VDb2Rlcyhjb2RlcylcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5wcmludEFuY2hvcnMoKVxuICB9XG5cbiAgZ2V0Q29kZXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLmdldENvZGVzKClcbiAgfVxufVxuXG5jbGFzcyBBY3Rlc0RvY3VtZW50YXRpb24ge1xuICB2ZXJib3NlOiBib29sZWFuXG4gIHNhbml0eUNoZWNrczogYm9vbGVhblxuICBsZWN0dXJlTWFwcGVyOiBhbnkgPSBuZXcgTGVjdHVyZU1hcHBlcigpXG4gIHJlbWFwcGVkUHJvY2VkdXJlczogYW55ID0ge31cbiAgYW5jaG9yc1ByaW50ZWQ6IGFueSA9IHt9XG4gIGFuY2hvcnM6IGFueSA9IG5ldyBTZXQoKVxuICBjb2RlczogYW55ID0ge31cbiAgcHJvY2VkdXJlczogYW55ID0gbnVsbFxuICBjb2RlMnBhdHRlcm46IGFueSA9IG5ldyBDb2RlMlBhdHRlcm4obnVsbCwge1xuICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigoKC9sZWN0dXJlLykrKXwoKC9sZWN0dXJlLykrL0NNUC8oL2xlY3R1cmUvKSopKSgvQ0MvKT8oL1BST00vKT8oL0FOLUFQUExJLyk/JFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvKT8oL0RQVExFVFRSRUNULyk/KC9FVEkvKT8oL0FWQ0UvKT8oL0RHVlQvKT8oL0FDSU4vKT8oL01PVElPTi8pKigvUFJPQ0FDQy8pPygvQ09NLyk/KCgvREVCQVRTLykrKT8oL1JUUklOSS8pPyRcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05EL3wvQVZJUy8pKyRcIiwge1xuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1BVklTXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9TRUFOQ0UvKSooKC9NT1RJT04vKT8oL01PVElPTi1WT1RFLykrKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENNUDogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9UL3wvU0FJU0lFLyl7MSwyfSgvQ09NLyk/KC9ERUMvKT8oL0RFQkFUUy1BTi8vREVCQVRTLVNOLyk/XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJDTVAtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvTk9NSU4vKT8oL1JBUFBPUlQtQU4vfC9SQVBQT1JULVNOLyl7Mn0kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1BTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1TTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pKygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgICAgICBQUk9NOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUFVCLyk/JFwiLCB7fSksXG4gICAgICAgIFwiQU4tQVBQTElcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIkFsbG9jdXRpb24gZHUgUHLDqXNpZGVudCBkZSBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BUEFOLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJSw6lzb2x1dGlvbiBBcnRpY2xlIDM0LTFcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykrKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFLDqXNvbHV0aW9uOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/KC9DQy8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTL3wvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ0FFLyk/KC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICBcIkFOTFVOSS1DT00tQ0FFXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKT8oL1JFVU5JT04vKT8oL1JBUFBPUlQvKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLyk/KC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgfSksXG4gICAgXCJSYXBwb3J0IGQnaW5mb3JtYXRpb24gc2FucyBtaXNzaW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oL0FOMjAvKT8oL0VVLyk/JFwiLFxuICAgICAge1xuICAgICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgICBFVTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pKyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTWlzc2lvbiBkJ2luZm9ybWF0aW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvTUlTSU5GLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1NSVNJTkZcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJDb21taXNzaW9uIGQnZW5xdcOqdGVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DT01FTlEvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLUNPTUVOUVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkVuZ2FnZW1lbnQgZGUgbGEgcmVzcG9uc2FiaWxpdMOpIGdvdXZlcm5lbWVudGFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigoKC9NT1RJT04vKSovREVCQVRTLyl8KC9ER1ZULykpezEsMn0kXCIsIHtcbiAgICAgICAgICBcIkFOMjEtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL01PVElPTi1WT1RFLykqJFwiLCB7fSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTW90aW9uIHLDqWbDqXJlbmRhaXJlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9sZWN0dXJlLykrJFwiLCB7XG4gICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/JFwiLCB7XG4gICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIEltbXVuaXTDqTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pKyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pPygvREVDLykkXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiUmVzcG9uc2FiaWxpdMOpIHDDqW5hbGUgZHUgcHLDqXNpZGVudCBkZSBsYSByw6lwdWJsaXF1ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL2xlY3R1cmUvJFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL1JFQ0JVUkVBVS8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUHJvcG9zaXRpb24gZGUgbG9pIHByw6lzZW50w6llIGVuIGFwcGxpY2F0aW9uIGRlIGwnYXJ0aWNsZSAxMSBkZSBsYSBDb25zdGl0dXRpb25cIjpcbiAgICAgIG5ldyBDb2RlMlBhdHRlcm4oXCJeL2xlY3R1cmUvJFwiLCB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPyRcIiwge30pLFxuICAgICAgfSksXG4gIH0pXG5cbiAgY29uc3RydWN0b3Ioc2FuaXR5Q2hlY2tzOiBib29sZWFuLCB2ZXJib3NlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlXG4gICAgdGhpcy5zYW5pdHlDaGVja3MgPSBzYW5pdHlDaGVja3NcbiAgICB0aGlzLnByb2NlZHVyZXMgPSB7fVxuICAgIHRoaXMuY29kZTJwYXR0ZXJuLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgd2Fsa0ZpbGVzKGRhdGE6IHN0cmluZ1tdLCBhY3Rpb246IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhkYXRhKSkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGxvYWQoZmlsZSlcbiAgICAgIGxldCBwcm9jZWR1cmU6IHN0cmluZyA9IHRoaXMucmVtYXBQcm9jZWR1cmUoXG4gICAgICAgIGRvc3NpZXIucHJvY2VkdXJlUGFybGVtZW50YWlyZS5saWJlbGxlLFxuICAgICAgKVxuICAgICAgaWYgKCEocHJvY2VkdXJlIGluIHRoaXMucHJvY2VkdXJlcykpIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdID0ge31cbiAgICAgIGFjdGlvbihcbiAgICAgICAgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0sXG4gICAgICAgIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyxcbiAgICAgICAgdGhpcy5jb2RlMnBhdHRlcm5bcHJvY2VkdXJlXSxcbiAgICAgICAgbnVsbCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb2xsZWN0RmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoX2FjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgX2MycDogYW55LCBfcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIHByb2Nlc3NGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLm1lcmdlKGFjdGVzLCBhY3Rlc0xlZ2lzbGF0aWZzLCBjMnAsIHBhcmVudClcbiAgICAgIH0sXG4gICAgKVxuICAgIGlmICh0aGlzLnNhbml0eUNoZWNrcykgdGhpcy52YWxpZGF0ZSgpXG4gIH1cblxuICByZW1hcEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5yZW1hcChhY3RlKVxuXG4gICAgICAvLyBDQy1TQUlTSUUtIHN1ZmZpeCBkb2VzIG5vdCBpbXBseSBhIGhpZXJhcmNoeVxuICAgICAgYWN0ZS5jb2RlQWN0ZSA9IGFjdGUuY29kZUFjdGUucmVwbGFjZSgvXkNDLVNBSVNJRS4qLywgXCJDQy1TQUlTSUVcIilcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBjb2xsZWN0QWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLmNvbGxlY3QoYWN0ZSlcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICByZW1hcFByb2NlZHVyZShwcm9jZWR1cmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWVyZ2VfcHJvY2VkdXJlczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoW1xuICAgICAgW1wiUHJvcG9zaXRpb24gZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgcmF0aWZpY2F0aW9uIGRlcyB0cmFpdMOpcyBldCBjb252ZW50aW9uc1wiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBvcmdhbmlxdWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIGNvbnN0aXR1dGlvbm5lbGxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIGRlIGwnYW5uw6llXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIHJlY3RpZmljYXRpdmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VtZW50IGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgIF0pXG4gICAgaWYgKG1lcmdlX3Byb2NlZHVyZXMuaGFzKHByb2NlZHVyZSkpIHtcbiAgICAgIHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSBudWxsXG4gICAgICByZXR1cm4gbWVyZ2VfcHJvY2VkdXJlcy5nZXQocHJvY2VkdXJlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvY2VkdXJlXG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBjb2RlQWN0ZXMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIHJlZ2V4cFxuICBvcmRlcmVkQ29kZXMoY29kZXM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvZGVzID0gbmV3IFNldChjb2RlcylcbiAgICBpZiAoIXRoaXMuc2FuaXR5Q2hlY2tzKSByZXR1cm4gY29kZXNcbiAgICBsZXQgb3JkZXJlZCA9IGMycFtcIl9wYXR0ZXJuX1wiXS5tYXRjaChuZXcgUmVnRXhwKFwiLy4qPy9cIiwgXCJnXCIpKVxuICAgIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiB4LnJlcGxhY2UobmV3IFJlZ0V4cChcIi8oLiopL1wiKSwgXCIkMVwiKSlcbiAgICBpZiAocGFyZW50ICE9IG51bGwpIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiBgJHtwYXJlbnR9LSR7eH1gKVxuICAgIG9yZGVyZWQgPSBuZXcgU2V0KG9yZGVyZWQpXG4gICAgYXNzZXJ0KGVxU2V0KG9yZGVyZWQsIGNvZGVzKSwgYCR7Wy4uLm9yZGVyZWRdfSAhPSAke1suLi5jb2Rlc119YClcbiAgICByZXR1cm4gb3JkZXJlZFxuICB9XG5cbiAgdmFsaWRhdGVDaHJvbm9sb2d5KGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGF0dGVybiA9IGMycFtcIl9wYXR0ZXJuX1wiXVxuICAgIGNvbnN0IHNlcXVlbmNlID0gYWN0ZXNMZWdpc2xhdGlmc1xuICAgICAgLm1hcCgoeDogYW55KSA9PiBgLyR7eC5jb2RlQWN0ZX0vYC5yZXBsYWNlKGAvJHtwYXJlbnR9LWAsIFwiL1wiKSlcbiAgICAgIC5qb2luKFwiXCIpXG4gICAgYXNzZXJ0KFxuICAgICAgc2VxdWVuY2UubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuKSksXG4gICAgICBgJHtwYXR0ZXJufSBkb2VzIG5vdCBtYXRjaCAke3NlcXVlbmNlfWAsXG4gICAgKVxuICAgIGMycC5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIG1lcmdlQWN0ZShhY3RlczogYW55LCBhY3RlOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBjb2RlOiBzdHJpbmcgPSBhY3RlLmNvZGVBY3RlXG4gICAgbGV0IHNob3J0Q29kZTogc3RyaW5nID0gY29kZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke3BhcmVudH0tYCksIFwiXCIpXG4gICAgc2hvcnRDb2RlID0gc2hvcnRDb2RlLnJlcGxhY2UoLy0oQU58U04pJC8sIFwiXCIpXG4gICAgdGhpcy5jb2Rlc1tzaG9ydENvZGVdID0gbnVsbFxuICAgIGxldCBuYW1lOiBzdHJpbmcgPSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZVxuICAgIGlmICghKGNvZGUgaW4gYWN0ZXMpKSB7XG4gICAgICBhY3Rlc1tjb2RlXSA9IHtcbiAgICAgICAgdHlwZTogYWN0ZS54c2lUeXBlLFxuICAgICAgICBuYW1lOiBuZXcgU2V0KFtuYW1lXSksXG4gICAgICAgIHNob3J0Q29kZTogc2hvcnRDb2RlLFxuICAgICAgICBhY3Rlczoge30sXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGVzW2NvZGVdLm5hbWUuYWRkKG5hbWUpXG4gICAgfVxuICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKVxuICAgICAgdGhpcy5tZXJnZShhY3Rlc1tjb2RlXS5hY3RlcywgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzLCBjMnBbY29kZV0sIGNvZGUpXG4gIH1cblxuICBtZXJnZShhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGwgPSB0aGlzLnJlbWFwQWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICB0aGlzLnZhbGlkYXRlQ2hyb25vbG9neShsLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgbCkgdGhpcy5tZXJnZUFjdGUoYWN0ZXMsIGFjdGUsIGMycCwgcGFyZW50KVxuICB9XG5cbiAgY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgdGhpcy5jb2xsZWN0QWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcykpXG4gICAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSkgdGhpcy5jb2xsZWN0KGFjdGUuYWN0ZXNMZWdpc2xhdGlmcylcbiAgfVxuXG4gIHZhbGlkYXRlTGV2ZWwoYzJwOiBhbnksIHBhdGg6IGFueSkge1xuICAgIGFzc2VydChjMnAuX21hdGNoX2NvdW50XyA+IDAsIGAke3BhdGh9IGlzIG5ldmVyIHVzZWRgKVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGMycCkgYXMgW3N0cmluZywgYW55XVtdKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwiQ29kZTJQYXR0ZXJuXCIpXG4gICAgICAgIHRoaXMudmFsaWRhdGVMZXZlbCh2YWx1ZSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRoaXMudmFsaWRhdGVMZXZlbCh0aGlzLmNvZGUycGF0dGVybiwgW10pXG4gIH1cblxuICBwcmludEVudHJ5KHNlY3Rpb25zOiBzdHJpbmcsIGVudHJ5OiBzdHJpbmcsIGNvZGVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBcXGAke2VudHJ5fVxcYF9fYFxuICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKHNlY3Rpb25zWzBdKVxuICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICBjb25zb2xlLmxvZyhjb2RlcylcbiAgfVxuXG4gIGFkZEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpXG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIubWVyZ2VDb2Rlcyh0aGlzLmFuY2hvcnMsIGtleSlcbiAgICBlbHNlIHRoaXMuYW5jaG9ycy5hZGQoa2V5KVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICB0aGlzLmFuY2hvcnNQcmludGVkW2tleV0gPSBudWxsXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgdGhpcy5sZWN0dXJlTWFwcGVyLnByaW50QW5jaG9ycyhrZXkpXG4gICAgZWxzZSBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoa2V5OiBzdHJpbmcsIHNob3J0Q29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm4gYGNmIFxcXFwqJHtzaG9ydENvZGV9XFxcXCpgXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgcmV0dXJuIHRoaXMubGVjdHVyZU1hcHBlci5nZXRDb2RlcyhrZXkpXG4gICAgZWxzZSByZXR1cm4ga2V5XG4gIH1cblxuICByZW5hbWVDTVAoa2V5OiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIkNNUFwiKSkge1xuICAgICAgaWYgKGtleS5lbmRzV2l0aChcIi1TTlwiKSkgcmV0dXJuIGAke25hbWV9IChTw6luYXQpYFxuICAgICAgZWxzZSBpZiAoa2V5LmVuZHNXaXRoKFwiLUFOXCIpKSByZXR1cm4gYCR7bmFtZX0gKEFzc2VtYmzDqWUgTmF0aW9uYWxlKWBcbiAgICAgIGVsc2UgcmV0dXJuIG5hbWVcbiAgICB9IGVsc2UgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIHByaW50TGV2ZWwoYWN0ZXM6IGFueSwgc2VjdGlvbnM6IHN0cmluZywgYzJwOiBhbnksIHBhcmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5czogU2V0PHN0cmluZz4gPSB0aGlzLm9yZGVyZWRDb2RlcyhPYmplY3Qua2V5cyhhY3RlcyksIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYWN0ZXNba2V5XVxuICAgICAgbGV0IG5hbWUgPSBBcnJheS5mcm9tKHZhbHVlLm5hbWUpLmpvaW4oXCIsIFwiKVxuICAgICAgbmFtZSA9IHRoaXMucmVuYW1lQ01QKGtleSwgbmFtZSlcbiAgICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRDb2RlcyhrZXksIHZhbHVlLnNob3J0Q29kZSlcbiAgICAgIHRoaXMuYWRkQW5jaG9ycyhrZXkpXG4gICAgICB0aGlzLnByaW50QW5jaG9ycyhrZXkpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgdGhpcy5wcmludEVudHJ5KHNlY3Rpb25zLCBgJHtuYW1lfSA8JHt2YWx1ZS5zaG9ydENvZGV9VE9DXz5gLCBjb2RlcylcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUuYWN0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMucHJpbnRMZXZlbCh2YWx1ZS5hY3Rlcywgc2VjdGlvbnMuc3Vic3RyaW5nKDEpLCBjMnBba2V5XSwga2V5KVxuICAgIH1cbiAgfVxuXG4gIHByaW50Q29kZXMoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5jb2RlcykpXG4gICAgICBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fVRPQzogaHR0cDovL2ApXG4gIH1cblxuICBwcmludEFuY2hvcnNJbmRleCgpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmFuY2hvcnMpKVxuICAgICAgY29uc29sZS5sb2coYCogOnJlZjpcXGAke2NvZGV9IDwke2NvZGV9PlxcYGApXG4gIH1cblxuICBnZXRBZ2dyZWdhdGVkKHByb2NlZHVyZTogc3RyaW5nKSB7XG4gICAgaWYgKHByb2NlZHVyZSA9PSBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIpIHtcbiAgICAgIGNvbnN0IHJlbWFwcGVkID0gT2JqZWN0LmtleXModGhpcy5yZW1hcHBlZFByb2NlZHVyZXMpLmpvaW4oXCIsIFwiKVxuICAgICAgcmV0dXJuIGAgKGFncsOpZ2F0aW9uIGRlICR7cmVtYXBwZWR9KWBcbiAgICB9IGVsc2UgcmV0dXJuIFwiXCJcbiAgfVxuXG4gIHByaW50KCk6IHZvaWQge1xuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWQgPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgYWN0ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucHJvY2VkdXJlcykgYXMgW1xuICAgICAgc3RyaW5nLFxuICAgICAgYW55LFxuICAgIF1bXSkge1xuICAgICAgY29uc3QgY29kZSA9IGtleS5yZXBsYWNlKC8gKy9nLCBcIl9cIilcbiAgICAgIHRoaXMuY29kZXNbY29kZV0gPSBudWxsXG4gICAgICBjb25zdCBhZ2dyZWdhdGVkID0gdGhpcy5nZXRBZ2dyZWdhdGVkKGtleSlcbiAgICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7a2V5fSA8JHtjb2RlfVRPQ18+XFxgX18ke2FnZ3JlZ2F0ZWR9YFxuICAgICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihcIj1cIilcbiAgICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICAgIHRoaXMucHJpbnRMZXZlbChhY3RlcywgXCItfi4nXCIsIHRoaXMuY29kZTJwYXR0ZXJuW2tleV0sIG51bGwpXG4gICAgfVxuICAgIHRoaXMucHJpbnRDb2RlcygpXG4gICAgdGhpcy5wcmludEFuY2hvcnNJbmRleCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZG9jID0gbmV3IEFjdGVzRG9jdW1lbnRhdGlvbihcbiAgICAhb3B0aW9uc1tcIm5vLXNhbml0eS1jaGVja3NcIl0sXG4gICAgb3B0aW9ucy52ZXJib3NlLFxuICApXG4gIGRvYy5jb2xsZWN0RmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJvY2Vzc0ZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByaW50KClcbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBZ0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVoRCxTQUFTQSxTQUFTLENBQUNDLElBQWMsRUFBTztFQUN0QyxJQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtJQUNFQyxXQUFXLEVBQUUseURBQXlEO0lBQ3RFQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsUUFBUSxFQUFFLElBQUk7SUFDZEMsSUFBSSxFQUFFLE1BQU07SUFDWkMsSUFBSSxFQUFFQztFQUNSLENBQUMsRUFDRDtJQUNFRixJQUFJLEVBQUUsa0JBQWtCO0lBQ3hCQyxJQUFJLEVBQUVFLE9BQU87SUFDYk4sV0FBVyxFQUFFO0VBQ2YsQ0FBQyxFQUNEO0lBQ0VHLElBQUksRUFBRSxTQUFTO0lBQ2ZDLElBQUksRUFBRUUsT0FBTztJQUNiTixXQUFXLEVBQUU7RUFDZixDQUFDLEVBQ0Q7SUFDRUcsSUFBSSxFQUFFLE1BQU07SUFDWkgsV0FBVyxFQUFFO0VBQ2YsQ0FBQyxD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
656
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsImNvbW1hbmRMaW5lVXNhZ2UiLCJ3YXJuIiwiZXFTZXQiLCJhcyIsImJzIiwic2l6ZSIsImEiLCJoYXMiLCJDb2RlMlBhdHRlcm4iLCJwYXR0ZXJuIiwiY2hpbGRyZW4iLCJfcGF0dGVybl8iLCJfbWF0Y2hfY291bnRfIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29kZTJQYXR0ZXJuQ29tRm9uZCIsIkxlY3R1cmVNYXBwaW5nIiwiU2V0IiwiYWN0ZSIsImNvZGVzIiwiYWRkIiwiY29kZUFjdGUiLCJnZXRUeXBlIiwibGliZWxsZUFjdGUiLCJub21DYW5vbmlxdWUiLCJsaWJlbGxlIiwidHlwZXMiLCJBcnJheSIsImZyb20iLCJjIiwiY29kZSIsImxvZyIsImpvaW4iLCJtYXRjaCIsImNvZGVzX2xlY3R1cmVfcmVnZXhwIiwiRXJyb3IiLCJyZXBsYWNlIiwiaXNMZWN0dXJlIiwibWFwIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiZ2V0Q29kZUFjdGUiLCJ1bmRlZmluZWQiLCJsZWN0dXJlcyIsInJlbWFwIiwibWVyZ2VDb2RlcyIsInByaW50QW5jaG9ycyIsImdldENvZGVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwiZGF0YSIsImFjdGlvbiIsImdldEZpbGVzIiwiZmlsZSIsImRvc3NpZXIiLCJsb2FkIiwicHJvY2VkdXJlIiwicmVtYXBQcm9jZWR1cmUiLCJwcm9jZWR1cmVQYXJsZW1lbnRhaXJlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsIndhbGtGaWxlcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwiY29sbGVjdCIsImFjdGVzIiwiYzJwIiwicGFyZW50IiwibWVyZ2UiLCJ2YWxpZGF0ZSIsInJlc3VsdHMiLCJsZWN0dXJlTWFwcGVyIiwicHVzaCIsIm1lcmdlX3Byb2NlZHVyZXMiLCJNYXAiLCJyZW1hcHBlZFByb2NlZHVyZXMiLCJnZXQiLCJvcmRlcmVkIiwieCIsImFzc2VydCIsInNlcXVlbmNlIiwic2hvcnRDb2RlIiwieHNpVHlwZSIsImwiLCJyZW1hcEFjdGVzIiwidmFsaWRhdGVDaHJvbm9sb2d5IiwibWVyZ2VBY3RlIiwiY29sbGVjdEFjdGVzIiwicGF0aCIsImVudHJpZXMiLCJrZXkiLCJ2YWx1ZSIsImNvbnN0cnVjdG9yIiwidmFsaWRhdGVMZXZlbCIsImNvbmNhdCIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJsZW5ndGgiLCJhbmNob3JzUHJpbnRlZCIsImFuY2hvcnMiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJrZXlzIiwib3JkZXJlZENvZGVzIiwicmVuYW1lQ01QIiwiYWRkQW5jaG9ycyIsInByaW50RW50cnkiLCJwcmludExldmVsIiwic3Vic3RyaW5nIiwicmVtYXBwZWQiLCJhZ2dyZWdhdGVkIiwiZ2V0QWdncmVnYXRlZCIsInByaW50Q29kZXMiLCJwcmludEFuY2hvcnNJbmRleCIsIm1haW4iLCJkb2MiLCJjb2xsZWN0RmlsZXMiLCJwcm9jZXNzRmlsZXMiLCJwcmludCIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgbG9hZCwgZ2V0RmlsZXMgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIGEgSlNPTiBmaWxlIG9yIGEgZ2xvYiBwYXR0ZXJuIHRvIEpTT04gZmlsZXNcIixcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJuby1zYW5pdHktY2hlY2tzXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiRG8gbm90IHBlcmZvcm0gc2FuaXR5IGNoZWNrcy5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcImluY3JlYXNlIHZlcmJvc2l0eVwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkFpZGUgw6AgbGEgZG9jdW1lbnRhdGlvbiBkdSBkb3NzaWVyIGzDqWdpc2xhdGlmXCIsXG4gICAgICBjb250ZW50OiBcIkfDqW7DqHJlIHVuZSBoacOpcmFyY2hpZSBkZXMgYWN0ZXMgbMOpZ2lzbGF0aWZzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICBpZiAoIShcImhlbHBcIiBpbiBvcHRpb25zKSAmJiAhKFwiZGF0YVwiIGluIG9wdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIi0tZGF0YSBpcyBtYW5kYXRvcnlcIilcbiAgICBvcHRpb25zLmhlbHAgPSB0cnVlXG4gIH1cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gZXFTZXQoYXM6IFNldDxzdHJpbmc+LCBiczogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgaWYgKGFzLnNpemUgIT09IGJzLnNpemUpIHJldHVybiBmYWxzZVxuICBmb3IgKHZhciBhIG9mIGFzKSBpZiAoIWJzLmhhcyhhKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmNsYXNzIENvZGUyUGF0dGVybiB7XG4gIF9wYXR0ZXJuXzogYW55XG4gIF9tYXRjaF9jb3VudF86IG51bWJlclxuICBjb25zdHJ1Y3RvcihwYXR0ZXJuOiBhbnksIGNoaWxkcmVuOiBhbnkpIHtcbiAgICB0aGlzLl9wYXR0ZXJuXyA9IHBhdHRlcm5cbiAgICB0aGlzLl9tYXRjaF9jb3VudF8gPSAwXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjaGlsZHJlbilcbiAgfVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm5Db21Gb25kIGV4dGVuZHMgQ29kZTJQYXR0ZXJuIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJeL1NBSVNJRS8oL05PTUlOLykqKC9SRVVOSU9OLykqKC9SQVBQT1JULykqJFwiLCB7fSlcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGluZyB7XG4gIGxpYmVsbGU6IGFueSA9IHt9XG4gIGNvZGVzOiBhbnkgPSBuZXcgU2V0KClcblxuICBzdGF0aWMgY29kZXNfbGVjdHVyZTogc3RyaW5nW10gPSBbXG4gICAgXCJBTjFcIixcbiAgICBcIlNOMVwiLFxuICAgIFwiQU5OTEVDXCIsXG4gICAgXCJTTk5MRUNcIixcbiAgICBcIkFOTERFRlwiLFxuICAgIFwiQU4yXCIsXG4gICAgXCJTTjJcIixcbiAgICBcIlNOM1wiLFxuICBdXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlX3JlZ2V4cDogYW55ID0gbmV3IFJlZ0V4cChcbiAgICBcIl4oPzpcIiArIExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmUuam9pbihcInxcIikgKyBcIikoLS4qKT8kXCIsXG4gIClcblxuICBzdGF0aWMgaXNMZWN0dXJlKGFjdGU6IGFueSkge1xuICAgIHJldHVybiBhY3RlLmNvZGVBY3RlLm1hdGNoKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwKVxuICB9XG5cbiAgc3RhdGljIGdldFR5cGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15BTi8pKSByZXR1cm4gXCJBTlwiXG4gICAgZWxzZSBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXlNOLykpIHJldHVybiBcIlNOXCJcbiAgICBlbHNlIHRocm93IEVycm9yKGAke2FjdGUuY29kZUFjdGV9IGRvZXMgbm90IHN0YXJ0IHdpdGggQU4gb3IgU05gKVxuICB9XG5cbiAgc3RhdGljIG1hcChjb2RlQWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlLnJlcGxhY2UoTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHAsIGBsZWN0dXJlJDFgKVxuICB9XG5cbiAgc3RhdGljIGdldENvZGVBY3RlKGFjdGU6IGFueSkge1xuICAgIGlmICghTGVjdHVyZU1hcHBpbmcuaXNMZWN0dXJlKGFjdGUpKSByZXR1cm5cblxuICAgIHJldHVybiBMZWN0dXJlTWFwcGluZy5tYXAoYWN0ZS5jb2RlQWN0ZSlcbiAgfVxuXG4gIGFkZChhY3RlOiBhbnkpIHtcbiAgICB0aGlzLmNvZGVzLmFkZChhY3RlLmNvZGVBY3RlKVxuXG4gICAgY29uc3QgdHlwZSA9IExlY3R1cmVNYXBwaW5nLmdldFR5cGUoYWN0ZSlcblxuICAgIGlmICghKGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlIGluIHRoaXMubGliZWxsZSkpXG4gICAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdID0gbmV3IFNldCgpXG4gICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXS5hZGQodHlwZSlcbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIGFjdGUuY29kZUFjdGUgPSBjb2RlQWN0ZVxuXG4gICAgbGV0IHR5cGVzID0gdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXVxuICAgIGlmICghKHR5cGVzLmhhcyhcIlNOXCIpICYmIHR5cGVzLmhhcyhcIkFOXCIpKSkge1xuICAgICAgaWYgKHR5cGVzLmhhcyhcIlNOXCIpKSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoU8OpbmF0KVwiXG4gICAgICBlbHNlIGlmICh0eXBlcy5oYXMoXCJBTlwiKSlcbiAgICAgICAgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKEFzc2VtYmzDqWUgTmF0aW9uYWxlKVwiXG4gICAgfVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55KSB7XG4gICAgZm9yIChjb25zdCBjIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvZGVzLmFkZChjKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb25zb2xlLmxvZyhgLi4gXyR7Y29kZX06YClcbiAgfVxuXG4gIGdldENvZGVzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29kZXMpLmpvaW4oXCIsXCIpXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBlciB7XG4gIG1hcHBpbmc6IGFueSA9IHt9XG5cbiAgaGFzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29kZUFjdGUgaW4gdGhpcy5tYXBwaW5nXG4gIH1cblxuICBjb2xsZWN0KGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbGVjdHVyZXMgPSB0aGlzLm1hcHBpbmdcbiAgICAgIGlmICghKGNvZGVBY3RlIGluIGxlY3R1cmVzKSkgbGVjdHVyZXNbY29kZUFjdGVdID0gbmV3IExlY3R1cmVNYXBwaW5nKClcbiAgICAgIGxlY3R1cmVzW2NvZGVBY3RlXS5hZGQoYWN0ZSlcbiAgICB9XG4gIH1cblxuICByZW1hcChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5yZW1hcChhY3RlLCBjb2RlQWN0ZSlcbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ubWVyZ2VDb2Rlcyhjb2RlcylcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5wcmludEFuY2hvcnMoKVxuICB9XG5cbiAgZ2V0Q29kZXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLmdldENvZGVzKClcbiAgfVxufVxuXG5jbGFzcyBBY3Rlc0RvY3VtZW50YXRpb24ge1xuICB2ZXJib3NlOiBib29sZWFuXG4gIHNhbml0eUNoZWNrczogYm9vbGVhblxuICBsZWN0dXJlTWFwcGVyOiBhbnkgPSBuZXcgTGVjdHVyZU1hcHBlcigpXG4gIHJlbWFwcGVkUHJvY2VkdXJlczogYW55ID0ge31cbiAgYW5jaG9yc1ByaW50ZWQ6IGFueSA9IHt9XG4gIGFuY2hvcnM6IGFueSA9IG5ldyBTZXQoKVxuICBjb2RlczogYW55ID0ge31cbiAgcHJvY2VkdXJlczogYW55ID0gbnVsbFxuICBjb2RlMnBhdHRlcm46IGFueSA9IG5ldyBDb2RlMlBhdHRlcm4obnVsbCwge1xuICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigoKC9sZWN0dXJlLykrKXwoKC9sZWN0dXJlLykrL0NNUC8oL2xlY3R1cmUvKSopKSgvQ0MvKT8oL1BST00vKT8oL0FOLUFQUExJLyk/JFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvKT8oL0RQVExFVFRSRUNULyk/KC9FVEkvKT8oL0FWQ0UvKT8oL0RHVlQvKT8oL0FDSU4vKT8oL01PVElPTi8pKigvUFJPQ0FDQy8pPygvQ09NLyk/KCgvREVCQVRTLykrKT8oL1JUUklOSS8pPyRcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05EL3wvQVZJUy8pKyRcIiwge1xuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1BVklTXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9TRUFOQ0UvKSooKC9NT1RJT04vKT8oL01PVElPTi1WT1RFLykrKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENNUDogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9UL3wvU0FJU0lFLyl7MSwyfSgvQ09NLyk/KC9ERUMvKT8oL0RFQkFUUy1BTi8vREVCQVRTLVNOLyk/XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJDTVAtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvTk9NSU4vKT8oL1JBUFBPUlQtQU4vfC9SQVBQT1JULVNOLyl7Mn0kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1BTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1TTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pKygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgICAgICBQUk9NOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUFVCLyk/JFwiLCB7fSksXG4gICAgICAgIFwiQU4tQVBQTElcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIkFsbG9jdXRpb24gZHUgUHLDqXNpZGVudCBkZSBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BUEFOLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJSw6lzb2x1dGlvbiBBcnRpY2xlIDM0LTFcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykrKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFLDqXNvbHV0aW9uOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/KC9DQy8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTL3wvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ0FFLyk/KC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICBcIkFOTFVOSS1DT00tQ0FFXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKT8oL1JFVU5JT04vKT8oL1JBUFBPUlQvKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLyk/KC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgfSksXG4gICAgXCJSYXBwb3J0IGQnaW5mb3JtYXRpb24gc2FucyBtaXNzaW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oL0FOMjAvKT8oL0VVLyk/JFwiLFxuICAgICAge1xuICAgICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgICBFVTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pKyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTWlzc2lvbiBkJ2luZm9ybWF0aW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvTUlTSU5GLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1NSVNJTkZcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJDb21taXNzaW9uIGQnZW5xdcOqdGVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DT01FTlEvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLUNPTUVOUVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkVuZ2FnZW1lbnQgZGUgbGEgcmVzcG9uc2FiaWxpdMOpIGdvdXZlcm5lbWVudGFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigoKC9NT1RJT04vKSovREVCQVRTLyl8KC9ER1ZULykpezEsMn0kXCIsIHtcbiAgICAgICAgICBcIkFOMjEtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL01PVElPTi1WT1RFLykqJFwiLCB7fSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTW90aW9uIHLDqWbDqXJlbmRhaXJlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9sZWN0dXJlLykrJFwiLCB7XG4gICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/JFwiLCB7XG4gICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIEltbXVuaXTDqTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pKyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pPygvREVDLykkXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiUmVzcG9uc2FiaWxpdMOpIHDDqW5hbGUgZHUgcHLDqXNpZGVudCBkZSBsYSByw6lwdWJsaXF1ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL2xlY3R1cmUvJFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL1JFQ0JVUkVBVS8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUHJvcG9zaXRpb24gZGUgbG9pIHByw6lzZW50w6llIGVuIGFwcGxpY2F0aW9uIGRlIGwnYXJ0aWNsZSAxMSBkZSBsYSBDb25zdGl0dXRpb25cIjpcbiAgICAgIG5ldyBDb2RlMlBhdHRlcm4oXCJeL2xlY3R1cmUvJFwiLCB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPyRcIiwge30pLFxuICAgICAgfSksXG4gIH0pXG5cbiAgY29uc3RydWN0b3Ioc2FuaXR5Q2hlY2tzOiBib29sZWFuLCB2ZXJib3NlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlXG4gICAgdGhpcy5zYW5pdHlDaGVja3MgPSBzYW5pdHlDaGVja3NcbiAgICB0aGlzLnByb2NlZHVyZXMgPSB7fVxuICAgIHRoaXMuY29kZTJwYXR0ZXJuLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgd2Fsa0ZpbGVzKGRhdGE6IHN0cmluZ1tdLCBhY3Rpb246IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhkYXRhKSkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGxvYWQoZmlsZSlcbiAgICAgIGxldCBwcm9jZWR1cmU6IHN0cmluZyA9IHRoaXMucmVtYXBQcm9jZWR1cmUoXG4gICAgICAgIGRvc3NpZXIucHJvY2VkdXJlUGFybGVtZW50YWlyZS5saWJlbGxlLFxuICAgICAgKVxuICAgICAgaWYgKCEocHJvY2VkdXJlIGluIHRoaXMucHJvY2VkdXJlcykpIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdID0ge31cbiAgICAgIGFjdGlvbihcbiAgICAgICAgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0sXG4gICAgICAgIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyxcbiAgICAgICAgdGhpcy5jb2RlMnBhdHRlcm5bcHJvY2VkdXJlXSxcbiAgICAgICAgbnVsbCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb2xsZWN0RmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoX2FjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgX2MycDogYW55LCBfcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIHByb2Nlc3NGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLm1lcmdlKGFjdGVzLCBhY3Rlc0xlZ2lzbGF0aWZzLCBjMnAsIHBhcmVudClcbiAgICAgIH0sXG4gICAgKVxuICAgIGlmICh0aGlzLnNhbml0eUNoZWNrcykgdGhpcy52YWxpZGF0ZSgpXG4gIH1cblxuICByZW1hcEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5yZW1hcChhY3RlKVxuXG4gICAgICAvLyBDQy1TQUlTSUUtIHN1ZmZpeCBkb2VzIG5vdCBpbXBseSBhIGhpZXJhcmNoeVxuICAgICAgYWN0ZS5jb2RlQWN0ZSA9IGFjdGUuY29kZUFjdGUucmVwbGFjZSgvXkNDLVNBSVNJRS4qLywgXCJDQy1TQUlTSUVcIilcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBjb2xsZWN0QWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLmNvbGxlY3QoYWN0ZSlcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICByZW1hcFByb2NlZHVyZShwcm9jZWR1cmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWVyZ2VfcHJvY2VkdXJlczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoW1xuICAgICAgW1wiUHJvcG9zaXRpb24gZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgcmF0aWZpY2F0aW9uIGRlcyB0cmFpdMOpcyBldCBjb252ZW50aW9uc1wiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBvcmdhbmlxdWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIGNvbnN0aXR1dGlvbm5lbGxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIGRlIGwnYW5uw6llXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIHJlY3RpZmljYXRpdmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VtZW50IGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgIF0pXG4gICAgaWYgKG1lcmdlX3Byb2NlZHVyZXMuaGFzKHByb2NlZHVyZSkpIHtcbiAgICAgIHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSBudWxsXG4gICAgICByZXR1cm4gbWVyZ2VfcHJvY2VkdXJlcy5nZXQocHJvY2VkdXJlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvY2VkdXJlXG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBjb2RlQWN0ZXMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIHJlZ2V4cFxuICBvcmRlcmVkQ29kZXMoY29kZXM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvZGVzID0gbmV3IFNldChjb2RlcylcbiAgICBpZiAoIXRoaXMuc2FuaXR5Q2hlY2tzKSByZXR1cm4gY29kZXNcbiAgICBsZXQgb3JkZXJlZCA9IGMycFtcIl9wYXR0ZXJuX1wiXS5tYXRjaChuZXcgUmVnRXhwKFwiLy4qPy9cIiwgXCJnXCIpKVxuICAgIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiB4LnJlcGxhY2UobmV3IFJlZ0V4cChcIi8oLiopL1wiKSwgXCIkMVwiKSlcbiAgICBpZiAocGFyZW50ICE9IG51bGwpIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiBgJHtwYXJlbnR9LSR7eH1gKVxuICAgIG9yZGVyZWQgPSBuZXcgU2V0KG9yZGVyZWQpXG4gICAgYXNzZXJ0KGVxU2V0KG9yZGVyZWQsIGNvZGVzKSwgYCR7Wy4uLm9yZGVyZWRdfSAhPSAke1suLi5jb2Rlc119YClcbiAgICByZXR1cm4gb3JkZXJlZFxuICB9XG5cbiAgdmFsaWRhdGVDaHJvbm9sb2d5KGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGF0dGVybiA9IGMycFtcIl9wYXR0ZXJuX1wiXVxuICAgIGNvbnN0IHNlcXVlbmNlID0gYWN0ZXNMZWdpc2xhdGlmc1xuICAgICAgLm1hcCgoeDogYW55KSA9PiBgLyR7eC5jb2RlQWN0ZX0vYC5yZXBsYWNlKGAvJHtwYXJlbnR9LWAsIFwiL1wiKSlcbiAgICAgIC5qb2luKFwiXCIpXG4gICAgYXNzZXJ0KFxuICAgICAgc2VxdWVuY2UubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuKSksXG4gICAgICBgJHtwYXR0ZXJufSBkb2VzIG5vdCBtYXRjaCAke3NlcXVlbmNlfWAsXG4gICAgKVxuICAgIGMycC5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIG1lcmdlQWN0ZShhY3RlczogYW55LCBhY3RlOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBjb2RlOiBzdHJpbmcgPSBhY3RlLmNvZGVBY3RlXG4gICAgbGV0IHNob3J0Q29kZTogc3RyaW5nID0gY29kZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke3BhcmVudH0tYCksIFwiXCIpXG4gICAgc2hvcnRDb2RlID0gc2hvcnRDb2RlLnJlcGxhY2UoLy0oQU58U04pJC8sIFwiXCIpXG4gICAgdGhpcy5jb2Rlc1tzaG9ydENvZGVdID0gbnVsbFxuICAgIGxldCBuYW1lOiBzdHJpbmcgPSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZVxuICAgIGlmICghKGNvZGUgaW4gYWN0ZXMpKSB7XG4gICAgICBhY3Rlc1tjb2RlXSA9IHtcbiAgICAgICAgdHlwZTogYWN0ZS54c2lUeXBlLFxuICAgICAgICBuYW1lOiBuZXcgU2V0KFtuYW1lXSksXG4gICAgICAgIHNob3J0Q29kZTogc2hvcnRDb2RlLFxuICAgICAgICBhY3Rlczoge30sXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGVzW2NvZGVdLm5hbWUuYWRkKG5hbWUpXG4gICAgfVxuICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKVxuICAgICAgdGhpcy5tZXJnZShhY3Rlc1tjb2RlXS5hY3RlcywgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzLCBjMnBbY29kZV0sIGNvZGUpXG4gIH1cblxuICBtZXJnZShhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGwgPSB0aGlzLnJlbWFwQWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICB0aGlzLnZhbGlkYXRlQ2hyb25vbG9neShsLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgbCkgdGhpcy5tZXJnZUFjdGUoYWN0ZXMsIGFjdGUsIGMycCwgcGFyZW50KVxuICB9XG5cbiAgY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgdGhpcy5jb2xsZWN0QWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcykpXG4gICAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSkgdGhpcy5jb2xsZWN0KGFjdGUuYWN0ZXNMZWdpc2xhdGlmcylcbiAgfVxuXG4gIHZhbGlkYXRlTGV2ZWwoYzJwOiBhbnksIHBhdGg6IGFueSkge1xuICAgIGFzc2VydChjMnAuX21hdGNoX2NvdW50XyA+IDAsIGAke3BhdGh9IGlzIG5ldmVyIHVzZWRgKVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGMycCkgYXMgW3N0cmluZywgYW55XVtdKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwiQ29kZTJQYXR0ZXJuXCIpXG4gICAgICAgIHRoaXMudmFsaWRhdGVMZXZlbCh2YWx1ZSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRoaXMudmFsaWRhdGVMZXZlbCh0aGlzLmNvZGUycGF0dGVybiwgW10pXG4gIH1cblxuICBwcmludEVudHJ5KHNlY3Rpb25zOiBzdHJpbmcsIGVudHJ5OiBzdHJpbmcsIGNvZGVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBcXGAke2VudHJ5fVxcYF9fYFxuICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKHNlY3Rpb25zWzBdKVxuICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICBjb25zb2xlLmxvZyhjb2RlcylcbiAgfVxuXG4gIGFkZEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpXG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIubWVyZ2VDb2Rlcyh0aGlzLmFuY2hvcnMsIGtleSlcbiAgICBlbHNlIHRoaXMuYW5jaG9ycy5hZGQoa2V5KVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICB0aGlzLmFuY2hvcnNQcmludGVkW2tleV0gPSBudWxsXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgdGhpcy5sZWN0dXJlTWFwcGVyLnByaW50QW5jaG9ycyhrZXkpXG4gICAgZWxzZSBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoa2V5OiBzdHJpbmcsIHNob3J0Q29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm4gYGNmIFxcXFwqJHtzaG9ydENvZGV9XFxcXCpgXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgcmV0dXJuIHRoaXMubGVjdHVyZU1hcHBlci5nZXRDb2RlcyhrZXkpXG4gICAgZWxzZSByZXR1cm4ga2V5XG4gIH1cblxuICByZW5hbWVDTVAoa2V5OiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIkNNUFwiKSkge1xuICAgICAgaWYgKGtleS5lbmRzV2l0aChcIi1TTlwiKSkgcmV0dXJuIGAke25hbWV9IChTw6luYXQpYFxuICAgICAgZWxzZSBpZiAoa2V5LmVuZHNXaXRoKFwiLUFOXCIpKSByZXR1cm4gYCR7bmFtZX0gKEFzc2VtYmzDqWUgTmF0aW9uYWxlKWBcbiAgICAgIGVsc2UgcmV0dXJuIG5hbWVcbiAgICB9IGVsc2UgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIHByaW50TGV2ZWwoYWN0ZXM6IGFueSwgc2VjdGlvbnM6IHN0cmluZywgYzJwOiBhbnksIHBhcmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5czogU2V0PHN0cmluZz4gPSB0aGlzLm9yZGVyZWRDb2RlcyhPYmplY3Qua2V5cyhhY3RlcyksIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYWN0ZXNba2V5XVxuICAgICAgbGV0IG5hbWUgPSBBcnJheS5mcm9tKHZhbHVlLm5hbWUpLmpvaW4oXCIsIFwiKVxuICAgICAgbmFtZSA9IHRoaXMucmVuYW1lQ01QKGtleSwgbmFtZSlcbiAgICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRDb2RlcyhrZXksIHZhbHVlLnNob3J0Q29kZSlcbiAgICAgIHRoaXMuYWRkQW5jaG9ycyhrZXkpXG4gICAgICB0aGlzLnByaW50QW5jaG9ycyhrZXkpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgdGhpcy5wcmludEVudHJ5KHNlY3Rpb25zLCBgJHtuYW1lfSA8JHt2YWx1ZS5zaG9ydENvZGV9VE9DXz5gLCBjb2RlcylcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUuYWN0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMucHJpbnRMZXZlbCh2YWx1ZS5hY3Rlcywgc2VjdGlvbnMuc3Vic3RyaW5nKDEpLCBjMnBba2V5XSwga2V5KVxuICAgIH1cbiAgfVxuXG4gIHByaW50Q29kZXMoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5jb2RlcykpXG4gICAgICBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fVRPQzogaHR0cDovL2ApXG4gIH1cblxuICBwcmludEFuY2hvcnNJbmRleCgpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmFuY2hvcnMpKVxuICAgICAgY29uc29sZS5sb2coYCogOnJlZjpcXGAke2NvZGV9IDwke2NvZGV9PlxcYGApXG4gIH1cblxuICBnZXRBZ2dyZWdhdGVkKHByb2NlZHVyZTogc3RyaW5nKSB7XG4gICAgaWYgKHByb2NlZHVyZSA9PSBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIpIHtcbiAgICAgIGNvbnN0IHJlbWFwcGVkID0gT2JqZWN0LmtleXModGhpcy5yZW1hcHBlZFByb2NlZHVyZXMpLmpvaW4oXCIsIFwiKVxuICAgICAgcmV0dXJuIGAgKGFncsOpZ2F0aW9uIGRlICR7cmVtYXBwZWR9KWBcbiAgICB9IGVsc2UgcmV0dXJuIFwiXCJcbiAgfVxuXG4gIHByaW50KCk6IHZvaWQge1xuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWQgPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgYWN0ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucHJvY2VkdXJlcykgYXMgW1xuICAgICAgc3RyaW5nLFxuICAgICAgYW55LFxuICAgIF1bXSkge1xuICAgICAgY29uc3QgY29kZSA9IGtleS5yZXBsYWNlKC8gKy9nLCBcIl9cIilcbiAgICAgIHRoaXMuY29kZXNbY29kZV0gPSBudWxsXG4gICAgICBjb25zdCBhZ2dyZWdhdGVkID0gdGhpcy5nZXRBZ2dyZWdhdGVkKGtleSlcbiAgICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7a2V5fSA8JHtjb2RlfVRPQ18+XFxgX18ke2FnZ3JlZ2F0ZWR9YFxuICAgICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihcIj1cIilcbiAgICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICAgIHRoaXMucHJpbnRMZXZlbChhY3RlcywgXCItfi4nXCIsIHRoaXMuY29kZTJwYXR0ZXJuW2tleV0sIG51bGwpXG4gICAgfVxuICAgIHRoaXMucHJpbnRDb2RlcygpXG4gICAgdGhpcy5wcmludEFuY2hvcnNJbmRleCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZG9jID0gbmV3IEFjdGVzRG9jdW1lbnRhdGlvbihcbiAgICAhb3B0aW9uc1tcIm5vLXNhbml0eS1jaGVja3NcIl0sXG4gICAgb3B0aW9ucy52ZXJib3NlLFxuICApXG4gIGRvYy5jb2xsZWN0RmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJvY2Vzc0ZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByaW50KClcbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBZ0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFaEQsU0FBU0EsU0FBUyxDQUFDQyxJQUFjLEVBQU87RUFDdEMsSUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7SUFDRUMsV0FBVyxFQUFFLHlEQUF5RDtJQUN0RUMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLElBQUksRUFBRSxNQUFNO0lBQ1pDLElBQUksRUFBRUM7RUFDUixDQUFDLEVBQ0Q7SUFDRUYsSUFBSSxFQUFFLGtCQUFrQjtJQUN4QkMsSUFBSSxFQUFFRSxPQUFPO0lBQ2JOLFdBQVcsRUFBRTtFQUNmLENBQUMsRUFDRDtJQUNFRyxJQUFJLEVBQUUsU0FBUztJQUNmQyxJQUFJLEVBQUVFLE9BQU87SUFDYk4sV0FBVyxFQUFFO0VBQ2YsQ0FBQyxFQUNEO0lBQ0VHLElBQUksRUFBRSxNQUFNO0lBQ1pILFdBQVcsRUFBRTtFQUNmLENBQUMsQ0FDRjtFQUNELElBQU1PLFFBQVEsR0FBRyxDQUNmO0lBQ0VDLE1BQU0sRUFBRSwrQ0FBK0M7SUFDdkRDLE9BQU8sRUFBRTtFQUNYLENBQUMsRUFDRDtJQUNFRCxNQUFNLEVBQUUsU0FBUztJQUNqQkUsVUFBVSxFQUFFWDtFQUNkLENBQUMsQ0FDRjtFQUNELElBQU1ZLE9BQU8sR0FBRyxJQUFBQywyQkFBZSxFQUFDYixrQkFBa0IsRUFBRTtJQUNsREQsSUFBSSxFQUFFQTtFQUNSLENBQUMsQ0FBQztFQUNGLElBQUksRUFBRSxNQUFNLElBQUlhLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJQSxPQUFPLENBQUMsRUFBRTtJQUNoREUsT0FBTyxDQUFDQyxLQUFLLENBQUMscUJBQXFCLENBQUM7SUFDcENILE9BQU8sQ0FBQ0ksSUFBSSxHQUFHLElBQUk7RUFDckI7RUFDQSxJQUFJLE1BQU0sSUFBSUosT0FBTyxFQUFFO0lBQ3JCLElBQU1LLEtBQUssR0FBRyxJQUFBQyw0QkFBZ0IsRUFBQ1YsUUFBUSxDQUFDO0lBQ3hDTSxPQUFPLENBQUNLLElBQUksQ0FBQ0YsS0FBSyxDQUFDO0lBQ25CLE9BQU8sSUFBSTtFQUNiO0VBQ0EsT0FBT0wsT0FBTztBQUNoQjtBQUVBLFNBQVNRLEtBQUssQ0FBQ0MsRUFBZSxFQUFFQyxFQUFlLEVBQVc7RUFDeEQsSUFBSUQsRUFBRSxDQUFDRSxJQUFJLEtBQUtELEVBQUUsQ0FBQ0MsSUFBSSxFQUFFLE9BQU8sS0FBSztFQUFBLDJDQUN2QkYsRUFBRTtJQUFBO0VBQUE7SUFBaEIsb0RBQWtCO01BQUEsSUFBVEcsQ0FBQztNQUFRLElBQUksQ0FBQ0YsRUFBRSxDQUFDRyxHQUFHLENBQUNELENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSztJQUFEO0VBQUM7SUFBQTtFQUFBO0lBQUE7RUFBQTtFQUM5QyxPQUFPLElBQUk7QUFDYjtBQUFDLElBRUtFLFlBQVksNkJBR2hCLHNCQUFZQyxPQUFZLEVBQUVDLFFBQWEsRUFBRTtFQUFBO0VBQUE7RUFBQTtFQUN2QyxJQUFJLENBQUNDLFNBQVMsR0FBR0YsT0FBTztFQUN4QixJQUFJLENBQUNHLGFBQWEsR0FBRyxDQUFDO0VBQ3RCQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLEVBQUVKLFFBQVEsQ0FBQztBQUMvQixDQUFDO0FBQUEsSUFHR0ssbUJBQW1CO0VBQUE7RUFBQTtFQUN2QiwrQkFBYztJQUFBO0lBQUEseUJBQ04sOENBQThDLEVBQUUsQ0FBQyxDQUFDO0VBQzFEO0VBQUM7QUFBQSxFQUgrQlAsWUFBWTtBQUFBLElBTXhDUSxjQUFjO0VBQUE7SUFBQTtJQUFBLGlDQUNILENBQUMsQ0FBQztJQUFBLCtCQUNKLElBQUlDLEdBQUcsRUFBRTtFQUFBO0VBQUE7SUFBQTtJQUFBLE9Bb0N0QixhQUFJQyxJQUFTLEVBQUU7TUFDYixJQUFJLENBQUNDLEtBQUssQ0FBQ0MsR0FBRyxDQUFDRixJQUFJLENBQUNHLFFBQVEsQ0FBQztNQUU3QixJQUFNbEMsSUFBSSxHQUFHNkIsY0FBYyxDQUFDTSxPQUFPLENBQUNKLElBQUksQ0FBQztNQUV6QyxJQUFJLEVBQUVBLElBQUksQ0FBQ0ssV0FBVyxDQUFDQyxZQUFZLElBQUksSUFBSSxDQUFDQyxPQUFPLENBQUMsRUFDbEQsSUFBSSxDQUFDQSxPQUFPLENBQUNQLElBQUksQ0FBQ0ssV0FBVyxDQUFDQyxZQUFZLENBQUMsR0FBRyxJQUFJUCxHQUFHLEVBQUU7TUFDekQsSUFBSSxDQUFDUSxPQUFPLENBQUNQLElBQUksQ0FBQ0ssV0FBVyxDQUFDQyxZQUFZLENBQUMsQ0FBQ0osR0FBRyxDQUFDakMsSUFBSSxDQUFDO0lBQ3ZEO0VBQUM7SUFBQTtJQUFBLE9BRUQsZUFBTStCLElBQVMsRUFBRUcsUUFBZ0IsRUFBRTtNQUNqQ0gsSUFBSSxDQUFDRyxRQUFRLEdBQUdBLFFBQVE7TUFFeEIsSUFBSUssS0FBSyxHQUFHLElBQUksQ0FBQ0QsT0FBTyxDQUFDUCxJQUFJLENBQUNLLFdBQVcsQ0FBQ0MsWUFBWSxDQUFDO01BQ3ZELElBQUksRUFBRUUsS0FBSyxDQUFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJbUIsS0FBSyxDQUFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7UUFDekMsSUFBSW1CLEtBQUssQ0FBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRVcsSUFBSSxDQUFDSyxXQUFXLENBQUNDLFlBQVksSUFBSSxVQUFVLE1BQzNELElBQUlFLEtBQUssQ0FBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFDdEJXLElBQUksQ0FBQ0ssV0FBVyxDQUFDQyxZQUFZLElBQUksd0JBQXdCO01BQzdEO0lBQ0Y7RUFBQztJQUFBO0lBQUEsT0FFRCxvQkFBV0wsS0FBVSxFQUFFO01BQ3JCLCtCQUFnQlEsS0FBSyxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDVCxLQUFLLENBQUM7UUFBakMsSUFBTVUsQ0FBQztRQUE0QlYsS0FBSyxDQUFDQyxHQUFHLENBQUNTLENBQUMsQ0FBQztNQUFBO0lBQ3REO0VBQUM7SUFBQTtJQUFBLE9BRUQsd0JBQWU7TUFDYixpQ0FBbUJGLEtBQUssQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQ1QsS0FBSyxDQUFDO1FBQXBDLElBQU1XLElBQUk7UUFBNEJsQyxPQUFPLENBQUNtQyxHQUFHLGVBQVFELElBQUksT0FBSTtNQUFBO0lBQ3hFO0VBQUM7SUFBQTtJQUFBLE9BRUQsb0JBQVc7TUFDVCxPQUFPSCxLQUFLLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUNULEtBQUssQ0FBQyxDQUFDYSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3pDO0VBQUM7SUFBQTtJQUFBLE9BbkRELG1CQUFpQmQsSUFBUyxFQUFFO01BQzFCLE9BQU9BLElBQUksQ0FBQ0csUUFBUSxDQUFDWSxLQUFLLENBQUNqQixjQUFjLENBQUNrQixvQkFBb0IsQ0FBQztJQUNqRTtFQUFDO0lBQUE7SUFBQSxPQUVELGlCQUFlaEIsSUFBUyxFQUFFO01BQ3hCLElBQUlBLElBQUksQ0FBQ0csUUFBUSxDQUFDWSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLE1BQ3RDLElBQUlmLElBQUksQ0FBQ0csUUFBUSxDQUFDWSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLE1BQzNDLE1BQU1FLEtBQUssV0FBSWpCLElBQUksQ0FBQ0csUUFBUSxtQ0FBZ0M7SUFDbkU7RUFBQztJQUFBO0lBQUEsT0FFRCxhQUFXQSxRQUFhLEVBQUU7TUFDeEIsT0FBT0EsUUFBUSxDQUFDZSxPQUFPLENBQUNwQixjQUFjLENBQUNrQixvQkFBb0IsY0FBYztJQUMzRTtFQUFDO0lBQUE7SUFBQSxPQUVELHFCQUFtQmhCLElBQVMsRUFBRTtNQUM1QixJQUFJLENBQUNGLGNBQWMsQ0FBQ3FCLFNBQVMsQ0FBQ25CLElBQUksQ0FBQyxFQUFFO01BRXJDLE9BQU9GLGNBQWMsQ0FBQ3NCLEdBQUcsQ0FBQ3BCLElBQUksQ0FBQ0csUUFBUSxDQUFDO0lBQzFDO0VBQUM7RUFBQTtBQUFBO0FBQUEsZ0JBcENHTCxjQUFjLG1CQUllLENBQy9CLEtBQUssRUFDTCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLENBQ047QUFBQSxnQkFiR0EsY0FBYywwQkFjaUIsSUFBSXVCLE1BQU0sQ0FDM0MsTUFBTSxHQUFHdkIsY0FBYyxDQUFDd0IsYUFBYSxDQUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUM3RDtBQUFBLElBd0RHUyxhQUFhO0VBQUE7SUFBQTtJQUFBLGlDQUNGLENBQUMsQ0FBQztFQUFBO0VBQUE7SUFBQTtJQUFBLE9BRWpCLGFBQUlwQixRQUFnQixFQUFFO01BQ3BCLE9BQU9BLFFBQVEsSUFBSSxJQUFJLENBQUNxQixPQUFPO0lBQ2pDO0VBQUM7SUFBQTtJQUFBLE9BRUQsaUJBQVF4QixJQUFTLEVBQUU7TUFDakIsSUFBTUcsUUFBUSxHQUFHTCxjQUFjLENBQUMyQixXQUFXLENBQUN6QixJQUFJLENBQUM7TUFDakQsSUFBSUcsUUFBUSxJQUFJdUIsU0FBUyxFQUFFO1FBQ3pCLElBQUlDLFFBQVEsR0FBRyxJQUFJLENBQUNILE9BQU87UUFDM0IsSUFBSSxFQUFFckIsUUFBUSxJQUFJd0IsUUFBUSxDQUFDLEVBQUVBLFFBQVEsQ0FBQ3hCLFFBQVEsQ0FBQyxHQUFHLElBQUlMLGNBQWMsRUFBRTtRQUN0RTZCLFFBQVEsQ0FBQ3hCLFFBQVEsQ0FBQyxDQUFDRCxHQUFHLENBQUNGLElBQUksQ0FBQztNQUM5QjtJQUNGO0VBQUM7SUFBQTtJQUFBLE9BRUQsZUFBTUEsSUFBUyxFQUFFO01BQ2YsSUFBTUcsUUFBUSxHQUFHTCxjQUFjLENBQUMyQixXQUFXLENBQUN6QixJQUFJLENBQUM7TUFDakQsSUFBSUcsUUFBUSxJQUFJdUIsU0FBUyxFQUFFLElBQUksQ0FBQ0YsT0FBTyxDQUFDckIsUUFBUSxDQUFDLENBQUN5QixLQUFLLENBQUM1QixJQUFJLEVBQUVHLFFBQVEsQ0FBQztJQUN6RTtFQUFDO0lBQUE7SUFBQSxPQUVELG9CQUFXRixLQUFVLEVBQUVFLFFBQWdCLEVBQUU7TUFDdkMsSUFBSSxDQUFDcUIsT0FBTyxDQUFDckIsUUFBUSxDQUFDLENBQUMwQixVQUFVLENBQUM1QixLQUFLLENBQUM7SUFDMUM7RUFBQztJQUFBO0lBQUEsT0FFRCxzQkFBYUUsUUFBZ0IsRUFBRTtNQUM3QixJQUFJLENBQUNxQixPQUFPLENBQUNyQixRQUFRLENBQUMsQ0FBQzJCLFlBQVksRUFBRTtJQUN2QztFQUFDO0lBQUE7SUFBQSxPQUVELGtCQUFTM0IsUUFBZ0IsRUFBRTtNQUN6QixPQUFPLElBQUksQ0FBQ3FCLE9BQU8sQ0FBQ3JCLFFBQVEsQ0FBQyxDQUFDNEIsUUFBUSxFQUFFO0lBQzFDO0VBQUM7RUFBQTtBQUFBO0FBQUEsSUFHR0Msa0JBQWtCO0VBbUl0Qiw0QkFBWUMsWUFBcUIsRUFBNEI7SUFBQSxJQUExQkMsT0FBZ0IsdUVBQUcsS0FBSztJQUFBO0lBQUE7SUFBQTtJQUFBLHVDQWhJdEMsSUFBSVgsYUFBYSxFQUFFO0lBQUEsNENBQ2QsQ0FBQyxDQUFDO0lBQUEsd0NBQ04sQ0FBQyxDQUFDO0lBQUEsaUNBQ1QsSUFBSXhCLEdBQUcsRUFBRTtJQUFBLCtCQUNYLENBQUMsQ0FBQztJQUFBLG9DQUNHLElBQUk7SUFBQSxzQ0FDRixJQUFJVCxZQUFZLENBQUMsSUFBSSxFQUFFO01BQ3pDLHVCQUF1QixFQUFFLElBQUlBLFlBQVksQ0FDdkMsaUZBQWlGLEVBQ2pGO1FBQ0U2QyxPQUFPLEVBQUUsSUFBSTdDLFlBQVksQ0FDdkIseUhBQXlILEVBQ3pIO1VBQ0UsYUFBYSxFQUFFLElBQUlBLFlBQVksQ0FBQyxvQkFBb0IsRUFBRTtZQUNwRCxrQkFBa0IsRUFBRSxJQUFJTyxtQkFBbUIsRUFBRTtZQUM3QyxrQkFBa0IsRUFBRSxJQUFJQSxtQkFBbUI7VUFDN0MsQ0FBQyxDQUFDO1VBQ0YsZ0JBQWdCLEVBQUUsSUFBSVAsWUFBWSxDQUNoQyxxREFBcUQsRUFDckQsQ0FBQyxDQUFDO1FBRU4sQ0FBQyxDQUNGO1FBQ0Q4QyxHQUFHLEVBQUUsSUFBSTlDLFlBQVksQ0FDbkIsbUVBQW1FLEVBQ25FO1VBQ0UsU0FBUyxFQUFFLElBQUlBLFlBQVksQ0FDekIsNENBQTRDLEVBQzVDLENBQUMsQ0FBQyxDQUNIO1VBQ0QsZUFBZSxFQUFFLElBQUlBLFlBQVksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQztVQUM5RCxlQUFlLEVBQUUsSUFBSUEsWUFBWSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQ0Y7UUFDRCtDLEVBQUUsRUFBRSxJQUFJL0MsWUFBWSxDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hEZ0QsSUFBSSxFQUFFLElBQUloRCxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLFVBQVUsRUFBRSxJQUFJQSxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO01BQ25ELENBQUMsQ0FDRjtNQUNELGtEQUFrRCxFQUFFLElBQUlBLFlBQVksQ0FDbEUsVUFBVSxFQUNWO1FBQ0VpRCxJQUFJLEVBQUUsSUFBSWpELFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO01BQzFDLENBQUMsQ0FDRjtNQUNELHlCQUF5QixFQUFFLElBQUlBLFlBQVksQ0FBQyxlQUFlLEVBQUU7UUFDM0RrRCxNQUFNLEVBQUUsSUFBSWxELFlBQVksQ0FBQyxvQ0FBb0MsRUFBRTtVQUM3RCxlQUFlLEVBQUUsSUFBSUEsWUFBWSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO01BQ0gsQ0FBQyxDQUFDO01BQ0ZtRCxVQUFVLEVBQUUsSUFBSW5ELFlBQVksQ0FBQyxzQkFBc0IsRUFBRTtRQUNuRGtELE1BQU0sRUFBRSxJQUFJbEQsWUFBWSxDQUFDLDBDQUEwQyxFQUFFO1VBQ25FLFlBQVksRUFBRSxJQUFJQSxZQUFZLENBQUMscUJBQXFCLEVBQUU7WUFDcEQsaUJBQWlCLEVBQUUsSUFBSU8sbUJBQW1CLEVBQUU7WUFDNUMsZ0JBQWdCLEVBQUUsSUFBSVAsWUFBWSxDQUNoQyx5REFBeUQsRUFDekQsQ0FBQyxDQUFDO1VBRU4sQ0FBQyxDQUFDO1VBQ0YsZUFBZSxFQUFFLElBQUlBLFlBQVksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDO1FBQ0YrQyxFQUFFLEVBQUUsSUFBSS9DLFlBQVksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUM7TUFDekQsQ0FBQyxDQUFDO01BQ0Ysb0NBQW9DLEVBQUUsSUFBSUEsWUFBWSxDQUNwRCxvQkFBb0IsRUFDcEI7UUFDRW9ELElBQUksRUFBRSxJQUFJcEQsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDcUQsRUFBRSxFQUFFLElBQUlyRCxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztNQUN2QyxDQUFDLENBQ0Y7TUFDRCx1QkFBdUIsRUFBRSxJQUFJQSxZQUFZLENBQUMsYUFBYSxFQUFFO1FBQ3ZEb0QsSUFBSSxFQUFFLElBQUlwRCxZQUFZLENBQUMsZUFBZSxFQUFFO1VBQ3RDLGFBQWEsRUFBRSxJQUFJQSxZQUFZLENBQzdCLG1DQUFtQyxFQUNuQyxDQUFDLENBQUM7UUFFTixDQUFDO01BQ0gsQ0FBQyxDQUFDO01BQ0Ysc0JBQXNCLEVBQUUsSUFBSUEsWUFBWSxDQUFDLGFBQWEsRUFBRTtRQUN0RG9ELElBQUksRUFBRSxJQUFJcEQsWUFBWSxDQUFDLGVBQWUsRUFBRTtVQUN0QyxhQUFhLEVBQUUsSUFBSUEsWUFBWSxDQUM3QixtQ0FBbUMsRUFDbkMsQ0FBQyxDQUFDO1FBRU4sQ0FBQztNQUNILENBQUMsQ0FBQztNQUNGLGlEQUFpRCxFQUFFLElBQUlBLFlBQVksQ0FDakUsVUFBVSxFQUNWO1FBQ0VpRCxJQUFJLEVBQUUsSUFBSWpELFlBQVksQ0FBQyx5Q0FBeUMsRUFBRTtVQUNoRSxhQUFhLEVBQUUsSUFBSUEsWUFBWSxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO01BQ0gsQ0FBQyxDQUNGO01BQ0QscUJBQXFCLEVBQUUsSUFBSUEsWUFBWSxDQUFDLGdCQUFnQixFQUFFO1FBQ3hENkMsT0FBTyxFQUFFLElBQUk3QyxZQUFZLENBQUMsaUNBQWlDLEVBQUU7VUFDM0QsYUFBYSxFQUFFLElBQUlBLFlBQVksQ0FBQyxhQUFhLEVBQUU7WUFDN0Msa0JBQWtCLEVBQUUsSUFBSUEsWUFBWSxDQUNsQyxxQ0FBcUMsRUFDckMsQ0FBQyxDQUFDO1VBRU4sQ0FBQyxDQUFDO1VBQ0YsZ0JBQWdCLEVBQUUsSUFBSUEsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQztNQUNILENBQUMsQ0FBQztNQUNGc0QsUUFBUSxFQUFFLElBQUl0RCxZQUFZLENBQUMsZUFBZSxFQUFFO1FBQzFDa0QsTUFBTSxFQUFFLElBQUlsRCxZQUFZLENBQUMsNENBQTRDLEVBQUU7VUFDckUsWUFBWSxFQUFFLElBQUlBLFlBQVksQ0FBQyxhQUFhLEVBQUU7WUFDNUMsaUJBQWlCLEVBQUUsSUFBSUEsWUFBWSxDQUNqQyxxQ0FBcUMsRUFDckMsQ0FBQyxDQUFDO1VBRU4sQ0FBQyxDQUFDO1VBQ0YsZUFBZSxFQUFFLElBQUlBLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztNQUNILENBQUMsQ0FBQztNQUNGLHFEQUFxRCxFQUFFLElBQUlBLFlBQVksQ0FDckUsYUFBYSxFQUNiO1FBQ0U2QyxPQUFPLEVBQUUsSUFBSTdDLFlBQVksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLENBQUM7TUFDNUQsQ0FBQyxDQUNGO01BQ0QsZ0ZBQWdGLEVBQzlFLElBQUlBLFlBQVksQ0FBQyxhQUFhLEVBQUU7UUFDOUI2QyxPQUFPLEVBQUUsSUFBSTdDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO01BQzlDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFHQSxJQUFJLENBQUM0QyxPQUFPLEdBQUdBLE9BQU87SUFDdEIsSUFBSSxDQUFDRCxZQUFZLEdBQUdBLFlBQVk7SUFDaEMsSUFBSSxDQUFDWSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksQ0FBQ0MsWUFBWSxDQUFDcEQsYUFBYSxFQUFFO0VBQ25DO0VBQUM7SUFBQTtJQUFBLE9BRUQsbUJBQVVxRCxJQUFjLEVBQUVDLE1BQVcsRUFBRTtNQUFBLDRDQUNsQixJQUFBQyxzQkFBUSxFQUFDRixJQUFJLENBQUM7UUFBQTtNQUFBO1FBQWpDLHVEQUFtQztVQUFBLElBQXhCRyxJQUFJO1VBQ2IsSUFBTUMsT0FBTyxHQUFHLElBQUFDLGtCQUFJLEVBQUNGLElBQUksQ0FBQztVQUMxQixJQUFJRyxTQUFpQixHQUFHLElBQUksQ0FBQ0MsY0FBYyxDQUN6Q0gsT0FBTyxDQUFDSSxzQkFBc0IsQ0FBQ2hELE9BQU8sQ0FDdkM7VUFDRCxJQUFJLEVBQUU4QyxTQUFTLElBQUksSUFBSSxDQUFDUixVQUFVLENBQUMsRUFBRSxJQUFJLENBQUNBLFVBQVUsQ0FBQ1EsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1VBQ3BFTCxNQUFNLENBQ0osSUFBSSxDQUFDSCxVQUFVLENBQUNRLFNBQVMsQ0FBQyxFQUMxQkYsT0FBTyxDQUFDSyxnQkFBZ0IsRUFDeEIsSUFBSSxDQUFDVixZQUFZLENBQUNPLFNBQVMsQ0FBQyxFQUM1QixJQUFJLENBQ0w7UUFDSDtNQUFDO1FBQUE7TUFBQTtRQUFBO01BQUE7SUFDSDtFQUFDO0lBQUE7SUFBQSxPQUVELHNCQUFhTixJQUFjLEVBQUU7TUFBQTtNQUMzQixJQUFJLENBQUNVLFNBQVMsQ0FDWlYsSUFBSSxFQUNKLFVBQUNXLE1BQVcsRUFBRUYsZ0JBQXFCLEVBQUVHLElBQVMsRUFBRUMsT0FBZSxFQUFLO1FBQ2xFLEtBQUksQ0FBQ0MsT0FBTyxDQUFDTCxnQkFBZ0IsQ0FBQztNQUNoQyxDQUFDLENBQ0Y7SUFDSDtFQUFDO0lBQUE7SUFBQSxPQUVELHNCQUFhVCxJQUFjLEVBQUU7TUFBQTtNQUMzQixJQUFJLENBQUNVLFNBQVMsQ0FDWlYsSUFBSSxFQUNKLFVBQUNlLEtBQVUsRUFBRU4sZ0JBQXFCLEVBQUVPLEdBQVEsRUFBRUMsTUFBYyxFQUFLO1FBQy9ELE1BQUksQ0FBQ0MsS0FBSyxDQUFDSCxLQUFLLEVBQUVOLGdCQUFnQixFQUFFTyxHQUFHLEVBQUVDLE1BQU0sQ0FBQztNQUNsRCxDQUFDLENBQ0Y7TUFDRCxJQUFJLElBQUksQ0FBQy9CLFlBQVksRUFBRSxJQUFJLENBQUNpQyxRQUFRLEVBQUU7SUFDeEM7RUFBQztJQUFBO0lBQUEsT0FFRCxvQkFBV0osS0FBVSxFQUFPO01BQzFCLElBQUlLLE9BQU8sR0FBRyxFQUFFO01BQUEsNENBQ0dMLEtBQUs7UUFBQTtNQUFBO1FBQXhCLHVEQUEwQjtVQUFBLElBQWY5RCxJQUFJO1VBQ2IsSUFBSSxDQUFDb0UsYUFBYSxDQUFDeEMsS0FBSyxDQUFDNUIsSUFBSSxDQUFDOztVQUU5QjtVQUNBQSxJQUFJLENBQUNHLFFBQVEsR0FBR0gsSUFBSSxDQUFDRyxRQUFRLENBQUNlLE9BQU8sQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDO1VBRWxFaUQsT0FBTyxDQUFDRSxJQUFJLENBQUNyRSxJQUFJLENBQUM7UUFDcEI7TUFBQztRQUFBO01BQUE7UUFBQTtNQUFBO01BQ0QsT0FBT21FLE9BQU87SUFDaEI7RUFBQztJQUFBO0lBQUEsT0FFRCxzQkFBYUwsS0FBVSxFQUFPO01BQzVCLElBQUlLLE9BQU8sR0FBRyxFQUFFO01BQUEsNENBQ0dMLEtBQUs7UUFBQTtNQUFBO1FBQXhCLHVEQUEwQjtVQUFBLElBQWY5RCxJQUFJO1VBQ2IsSUFBSSxDQUFDb0UsYUFBYSxDQUFDUCxPQUFPLENBQUM3RCxJQUFJLENBQUM7VUFFaENtRSxPQUFPLENBQUNFLElBQUksQ0FBQ3JFLElBQUksQ0FBQztRQUNwQjtNQUFDO1FBQUE7TUFBQTtRQUFBO01BQUE7TUFDRCxPQUFPbUUsT0FBTztJQUNoQjtFQUFDO0lBQUE7SUFBQSxPQUVELHdCQUFlZCxTQUFpQixFQUFVO01BQ3hDLElBQU1pQixnQkFBa0MsR0FBRyxJQUFJQyxHQUFHLENBQUMsQ0FDakQsQ0FBQyw4QkFBOEIsRUFBRSx1QkFBdUIsQ0FBQyxFQUN6RCxDQUFDLHlCQUF5QixFQUFFLHVCQUF1QixDQUFDLEVBQ3BELENBQ0UsbURBQW1ELEVBQ25ELHVCQUF1QixDQUN4QixFQUNELENBQUMsd0NBQXdDLEVBQUUsdUJBQXVCLENBQUMsRUFDbkUsQ0FDRSxnREFBZ0QsRUFDaEQsdUJBQXVCLENBQ3hCLEVBQ0QsQ0FBQyxzQ0FBc0MsRUFBRSx1QkFBdUIsQ0FBQyxFQUNqRSxDQUFDLHlDQUF5QyxFQUFFLHVCQUF1QixDQUFDLEVBQ3BFLENBQ0UscURBQXFELEVBQ3JELHVCQUF1QixDQUN4QixDQUNGLENBQUM7TUFDRixJQUFJRCxnQkFBZ0IsQ0FBQ2pGLEdBQUcsQ0FBQ2dFLFNBQVMsQ0FBQyxFQUFFO1FBQ25DLElBQUksQ0FBQ21CLGtCQUFrQixDQUFDbkIsU0FBUyxDQUFDLEdBQUcsSUFBSTtRQUN6QyxPQUFPaUIsZ0JBQWdCLENBQUNHLEdBQUcsQ0FBQ3BCLFNBQVMsQ0FBQztNQUN4QyxDQUFDLE1BQU07UUFDTCxPQUFPQSxTQUFTO01BQ2xCO0lBQ0Y7O0lBRUE7RUFBQTtJQUFBO0lBQUEsT0FDQSxzQkFBYXBELEtBQVUsRUFBRThELEdBQVEsRUFBRUMsTUFBYyxFQUFlO01BQzlEL0QsS0FBSyxHQUFHLElBQUlGLEdBQUcsQ0FBQ0UsS0FBSyxDQUFDO01BQ3RCLElBQUksQ0FBQyxJQUFJLENBQUNnQyxZQUFZLEVBQUUsT0FBT2hDLEtBQUs7TUFDcEMsSUFBSXlFLE9BQU8sR0FBR1gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDaEQsS0FBSyxDQUFDLElBQUlNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7TUFDOURxRCxPQUFPLEdBQUdBLE9BQU8sQ0FBQ3RELEdBQUcsQ0FBQyxVQUFDdUQsQ0FBUztRQUFBLE9BQUtBLENBQUMsQ0FBQ3pELE9BQU8sQ0FBQyxJQUFJRyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDO01BQUEsRUFBQztNQUMzRSxJQUFJMkMsTUFBTSxJQUFJLElBQUksRUFBRVUsT0FBTyxHQUFHQSxPQUFPLENBQUN0RCxHQUFHLENBQUMsVUFBQ3VELENBQVM7UUFBQSxpQkFBUVgsTUFBTSxjQUFJVyxDQUFDO01BQUEsQ0FBRSxDQUFDO01BQzFFRCxPQUFPLEdBQUcsSUFBSTNFLEdBQUcsQ0FBQzJFLE9BQU8sQ0FBQztNQUMxQixJQUFBRSxrQkFBTSxFQUFDNUYsS0FBSyxDQUFDMEYsT0FBTyxFQUFFekUsS0FBSyxDQUFDLCtCQUFTeUUsT0FBTyxxQ0FBWXpFLEtBQUssR0FBSTtNQUNqRSxPQUFPeUUsT0FBTztJQUNoQjtFQUFDO0lBQUE7SUFBQSxPQUVELDRCQUFtQmxCLGdCQUFxQixFQUFFTyxHQUFRLEVBQUVDLE1BQWMsRUFBUTtNQUN4RSxJQUFNekUsT0FBTyxHQUFHd0UsR0FBRyxDQUFDLFdBQVcsQ0FBQztNQUNoQyxJQUFNYyxRQUFRLEdBQUdyQixnQkFBZ0IsQ0FDOUJwQyxHQUFHLENBQUMsVUFBQ3VELENBQU07UUFBQSxPQUFLLFdBQUlBLENBQUMsQ0FBQ3hFLFFBQVEsT0FBSWUsT0FBTyxZQUFLOEMsTUFBTSxRQUFLLEdBQUcsQ0FBQztNQUFBLEVBQUMsQ0FDOURsRCxJQUFJLENBQUMsRUFBRSxDQUFDO01BQ1gsSUFBQThELGtCQUFNLEVBQ0pDLFFBQVEsQ0FBQzlELEtBQUssQ0FBQyxJQUFJTSxNQUFNLENBQUM5QixPQUFPLENBQUMsQ0FBQyxZQUNoQ0EsT0FBTyw2QkFBbUJzRixRQUFRLEVBQ3RDO01BQ0RkLEdBQUcsQ0FBQ3JFLGFBQWEsRUFBRTtJQUNyQjtFQUFDO0lBQUE7SUFBQSxPQUVELG1CQUFVb0UsS0FBVSxFQUFFOUQsSUFBUyxFQUFFK0QsR0FBUSxFQUFFQyxNQUFjLEVBQVE7TUFDL0QsSUFBSXBELElBQVksR0FBR1osSUFBSSxDQUFDRyxRQUFRO01BQ2hDLElBQUkyRSxTQUFpQixHQUFHbEUsSUFBSSxDQUFDTSxPQUFPLENBQUMsSUFBSUcsTUFBTSxZQUFLMkMsTUFBTSxPQUFJLEVBQUUsRUFBRSxDQUFDO01BQ25FYyxTQUFTLEdBQUdBLFNBQVMsQ0FBQzVELE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO01BQzlDLElBQUksQ0FBQ2pCLEtBQUssQ0FBQzZFLFNBQVMsQ0FBQyxHQUFHLElBQUk7TUFDNUIsSUFBSTlHLElBQVksR0FBR2dDLElBQUksQ0FBQ0ssV0FBVyxDQUFDQyxZQUFZO01BQ2hELElBQUksRUFBRU0sSUFBSSxJQUFJa0QsS0FBSyxDQUFDLEVBQUU7UUFDcEJBLEtBQUssQ0FBQ2xELElBQUksQ0FBQyxHQUFHO1VBQ1ozQyxJQUFJLEVBQUUrQixJQUFJLENBQUMrRSxPQUFPO1VBQ2xCL0csSUFBSSxFQUFFLElBQUkrQixHQUFHLENBQUMsQ0FBQy9CLElBQUksQ0FBQyxDQUFDO1VBQ3JCOEcsU0FBUyxFQUFFQSxTQUFTO1VBQ3BCaEIsS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDO01BQ0gsQ0FBQyxNQUFNO1FBQ0xBLEtBQUssQ0FBQ2xELElBQUksQ0FBQyxDQUFDNUMsSUFBSSxDQUFDa0MsR0FBRyxDQUFDbEMsSUFBSSxDQUFDO01BQzVCO01BQ0EsSUFBSSxrQkFBa0IsSUFBSWdDLElBQUksRUFDNUIsSUFBSSxDQUFDaUUsS0FBSyxDQUFDSCxLQUFLLENBQUNsRCxJQUFJLENBQUMsQ0FBQ2tELEtBQUssRUFBRTlELElBQUksQ0FBQ3dELGdCQUFnQixFQUFFTyxHQUFHLENBQUNuRCxJQUFJLENBQUMsRUFBRUEsSUFBSSxDQUFDO0lBQ3pFO0VBQUM7SUFBQTtJQUFBLE9BRUQsZUFBTWtELEtBQVUsRUFBRU4sZ0JBQXFCLEVBQUVPLEdBQVEsRUFBRUMsTUFBVyxFQUFRO01BQ3BFLElBQU1nQixDQUFDLEdBQUcsSUFBSSxDQUFDQyxVQUFVLENBQUN6QixnQkFBZ0IsQ0FBQztNQUMzQyxJQUFJLENBQUMwQixrQkFBa0IsQ0FBQ0YsQ0FBQyxFQUFFakIsR0FBRyxFQUFFQyxNQUFNLENBQUM7TUFBQSw0Q0FDcEJnQixDQUFDO1FBQUE7TUFBQTtRQUFwQix1REFBc0I7VUFBQSxJQUFYaEYsSUFBSTtVQUFPLElBQUksQ0FBQ21GLFNBQVMsQ0FBQ3JCLEtBQUssRUFBRTlELElBQUksRUFBRStELEdBQUcsRUFBRUMsTUFBTSxDQUFDO1FBQUQ7TUFBQztRQUFBO01BQUE7UUFBQTtNQUFBO0lBQ2hFO0VBQUM7SUFBQTtJQUFBLE9BRUQsaUJBQVFSLGdCQUFxQixFQUFRO01BQUEsNENBQ2hCLElBQUksQ0FBQzRCLFlBQVksQ0FBQzVCLGdCQUFnQixDQUFDO1FBQUE7TUFBQTtRQUF0RCx1REFDRTtVQUFBLElBRFN4RCxJQUFJO1VBQ2IsSUFBSSxrQkFBa0IsSUFBSUEsSUFBSSxFQUFFLElBQUksQ0FBQzZELE9BQU8sQ0FBQzdELElBQUksQ0FBQ3dELGdCQUFnQixDQUFDO1FBQUQ7TUFBQztRQUFBO01BQUE7UUFBQTtNQUFBO0lBQ3ZFO0VBQUM7SUFBQTtJQUFBLE9BRUQsdUJBQWNPLEdBQVEsRUFBRXNCLElBQVMsRUFBRTtNQUNqQyxJQUFBVCxrQkFBTSxFQUFDYixHQUFHLENBQUNyRSxhQUFhLEdBQUcsQ0FBQyxZQUFLMkYsSUFBSSxvQkFBaUI7TUFDdEQseUJBQTJCMUYsTUFBTSxDQUFDMkYsT0FBTyxDQUFDdkIsR0FBRyxDQUFDLDRCQUFxQjtRQUE5RDtVQUFPd0IsR0FBRztVQUFFQyxLQUFLO1FBQ3BCLElBQUlBLEtBQUssSUFBSSxJQUFJLElBQUlBLEtBQUssQ0FBQ0MsV0FBVyxDQUFDekgsSUFBSSxJQUFJLGNBQWMsRUFDM0QsSUFBSSxDQUFDMEgsYUFBYSxDQUFDRixLQUFLLEVBQUVILElBQUksQ0FBQ00sTUFBTSxDQUFDLENBQUNKLEdBQUcsQ0FBQyxDQUFDLENBQUM7TUFDakQ7SUFDRjtFQUFDO0lBQUE7SUFBQSxPQUVELG9CQUFXO01BQ1QsSUFBSSxDQUFDRyxhQUFhLENBQUMsSUFBSSxDQUFDNUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUMzQztFQUFDO0lBQUE7SUFBQSxPQUVELG9CQUFXMUUsUUFBZ0IsRUFBRXdILEtBQWEsRUFBRTNGLEtBQWEsRUFBRTtNQUN6RCxJQUFNNEYsS0FBSyxjQUFRRCxLQUFLLFFBQU07TUFDOUJsSCxPQUFPLENBQUNtQyxHQUFHLENBQUNnRixLQUFLLENBQUM7TUFDbEIsSUFBTUMsU0FBUyxHQUFHLElBQUlyRixLQUFLLENBQUNvRixLQUFLLENBQUNFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ2pGLElBQUksQ0FBQzFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUMvRE0sT0FBTyxDQUFDbUMsR0FBRyxDQUFDaUYsU0FBUyxDQUFDO01BQ3RCcEgsT0FBTyxDQUFDbUMsR0FBRyxDQUFDWixLQUFLLENBQUM7SUFDcEI7RUFBQztJQUFBO0lBQUEsT0FFRCxvQkFBV3NGLEdBQVcsRUFBRTtNQUN0QixJQUFJQSxHQUFHLElBQUksSUFBSSxDQUFDUyxjQUFjLEVBQUU7TUFDaEMsSUFBSSxJQUFJLENBQUM1QixhQUFhLENBQUMvRSxHQUFHLENBQUNrRyxHQUFHLENBQUMsRUFDN0IsSUFBSSxDQUFDbkIsYUFBYSxDQUFDdkMsVUFBVSxDQUFDLElBQUksQ0FBQ29FLE9BQU8sRUFBRVYsR0FBRyxDQUFDLE1BQzdDLElBQUksQ0FBQ1UsT0FBTyxDQUFDL0YsR0FBRyxDQUFDcUYsR0FBRyxDQUFDO0lBQzVCO0VBQUM7SUFBQTtJQUFBLE9BRUQsc0JBQWFBLEdBQVcsRUFBRTtNQUN4QixJQUFJQSxHQUFHLElBQUksSUFBSSxDQUFDUyxjQUFjLEVBQUU7TUFDaEMsSUFBSSxDQUFDQSxjQUFjLENBQUNULEdBQUcsQ0FBQyxHQUFHLElBQUk7TUFDL0IsSUFBSSxJQUFJLENBQUNuQixhQUFhLENBQUMvRSxHQUFHLENBQUNrRyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUNuQixhQUFhLENBQUN0QyxZQUFZLENBQUN5RCxHQUFHLENBQUMsTUFDaEU3RyxPQUFPLENBQUNtQyxHQUFHLGVBQVEwRSxHQUFHLE9BQUk7SUFDakM7RUFBQztJQUFBO0lBQUEsT0FFRCxrQkFBU0EsR0FBVyxFQUFFVCxTQUFpQixFQUFFO01BQ3ZDLElBQUlTLEdBQUcsSUFBSSxJQUFJLENBQUNTLGNBQWMsRUFBRSx1QkFBZ0JsQixTQUFTO01BQ3pELElBQUksSUFBSSxDQUFDVixhQUFhLENBQUMvRSxHQUFHLENBQUNrRyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQ25CLGFBQWEsQ0FBQ3JDLFFBQVEsQ0FBQ3dELEdBQUcsQ0FBQyxNQUNuRSxPQUFPQSxHQUFHO0lBQ2pCO0VBQUM7SUFBQTtJQUFBLE9BRUQsbUJBQVVBLEdBQVcsRUFBRXZILElBQVksRUFBRTtNQUNuQyxJQUFJdUgsR0FBRyxDQUFDVyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDekIsSUFBSVgsR0FBRyxDQUFDWSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsaUJBQVVuSSxJQUFJLGlCQUFVLEtBQzVDLElBQUl1SCxHQUFHLENBQUNZLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxpQkFBVW5JLElBQUksK0JBQXdCLEtBQy9ELE9BQU9BLElBQUk7TUFDbEIsQ0FBQyxNQUFNLE9BQU9BLElBQUk7SUFDcEI7RUFBQztJQUFBO0lBQUEsT0FFRCxvQkFBVzhGLEtBQVUsRUFBRTFGLFFBQWdCLEVBQUUyRixHQUFRLEVBQUVDLE1BQVcsRUFBRTtNQUM5RCxJQUFNb0MsSUFBaUIsR0FBRyxJQUFJLENBQUNDLFlBQVksQ0FBQzFHLE1BQU0sQ0FBQ3lHLElBQUksQ0FBQ3RDLEtBQUssQ0FBQyxFQUFFQyxHQUFHLEVBQUVDLE1BQU0sQ0FBQztNQUFBLDRDQUMxRG9DLElBQUk7UUFBQTtNQUFBO1FBQXRCLHVEQUF3QjtVQUFBLElBQWJiLEdBQUc7VUFDWixJQUFNQyxLQUFLLEdBQUcxQixLQUFLLENBQUN5QixHQUFHLENBQUM7VUFDeEIsSUFBSXZILElBQUksR0FBR3lDLEtBQUssQ0FBQ0MsSUFBSSxDQUFDOEUsS0FBSyxDQUFDeEgsSUFBSSxDQUFDLENBQUM4QyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQzVDOUMsSUFBSSxHQUFHLElBQUksQ0FBQ3NJLFNBQVMsQ0FBQ2YsR0FBRyxFQUFFdkgsSUFBSSxDQUFDO1VBQ2hDLElBQU1pQyxLQUFLLEdBQUcsSUFBSSxDQUFDOEIsUUFBUSxDQUFDd0QsR0FBRyxFQUFFQyxLQUFLLENBQUNWLFNBQVMsQ0FBQztVQUNqRCxJQUFJLENBQUN5QixVQUFVLENBQUNoQixHQUFHLENBQUM7VUFDcEIsSUFBSSxDQUFDekQsWUFBWSxDQUFDeUQsR0FBRyxDQUFDO1VBQ3RCN0csT0FBTyxDQUFDbUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztVQUNmLElBQUksQ0FBQzJGLFVBQVUsQ0FBQ3BJLFFBQVEsWUFBS0osSUFBSSxlQUFLd0gsS0FBSyxDQUFDVixTQUFTLFlBQVM3RSxLQUFLLENBQUM7VUFDcEV2QixPQUFPLENBQUNtQyxHQUFHLENBQUMsRUFBRSxDQUFDO1VBQ2YsSUFBSWxCLE1BQU0sQ0FBQ3lHLElBQUksQ0FBQ1osS0FBSyxDQUFDMUIsS0FBSyxDQUFDLENBQUNpQyxNQUFNLEdBQUcsQ0FBQyxFQUNyQyxJQUFJLENBQUNVLFVBQVUsQ0FBQ2pCLEtBQUssQ0FBQzFCLEtBQUssRUFBRTFGLFFBQVEsQ0FBQ3NJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTNDLEdBQUcsQ0FBQ3dCLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLENBQUM7UUFDdEU7TUFBQztRQUFBO01BQUE7UUFBQTtNQUFBO0lBQ0g7RUFBQztJQUFBO0lBQUEsT0FFRCxzQkFBYTtNQUNYLGlDQUFrQjVGLE1BQU0sQ0FBQ3lHLElBQUksQ0FBQyxJQUFJLENBQUNuRyxLQUFLLENBQUM7UUFBcEMsSUFBTXNGLEdBQUc7UUFDWjdHLE9BQU8sQ0FBQ21DLEdBQUcsZUFBUTBFLEdBQUcsa0JBQWU7TUFBQTtJQUN6QztFQUFDO0lBQUE7SUFBQSxPQUVELDZCQUFvQjtNQUNsQixpQ0FBbUI5RSxLQUFLLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUN1RixPQUFPLENBQUM7UUFBdEMsSUFBTXJGLElBQUk7UUFDYmxDLE9BQU8sQ0FBQ21DLEdBQUcsbUJBQWFELElBQUksZUFBS0EsSUFBSSxRQUFNO01BQUE7SUFDL0M7RUFBQztJQUFBO0lBQUEsT0FFRCx1QkFBY3lDLFNBQWlCLEVBQUU7TUFDL0IsSUFBSUEsU0FBUyxJQUFJLHVCQUF1QixFQUFFO1FBQ3hDLElBQU1zRCxRQUFRLEdBQUdoSCxNQUFNLENBQUN5RyxJQUFJLENBQUMsSUFBSSxDQUFDNUIsa0JBQWtCLENBQUMsQ0FBQzFELElBQUksQ0FBQyxJQUFJLENBQUM7UUFDaEUsb0NBQTBCNkYsUUFBUTtNQUNwQyxDQUFDLE1BQU0sT0FBTyxFQUFFO0lBQ2xCO0VBQUM7SUFBQTtJQUFBLE9BRUQsaUJBQWM7TUFDWixJQUFJLENBQUNYLGNBQWMsR0FBRyxDQUFDLENBQUM7TUFDeEIsMEJBQTJCckcsTUFBTSxDQUFDMkYsT0FBTyxDQUFDLElBQUksQ0FBQ3pDLFVBQVUsQ0FBQyw2QkFHckQ7UUFIQTtVQUFPMEMsR0FBRztVQUFFekIsS0FBSztRQUlwQixJQUFNbEQsSUFBSSxHQUFHMkUsR0FBRyxDQUFDckUsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7UUFDcEMsSUFBSSxDQUFDakIsS0FBSyxDQUFDVyxJQUFJLENBQUMsR0FBRyxJQUFJO1FBQ3ZCLElBQU1nRyxVQUFVLEdBQUcsSUFBSSxDQUFDQyxhQUFhLENBQUN0QixHQUFHLENBQUM7UUFDMUMsSUFBTU0sS0FBSyxjQUFRTixHQUFHLGVBQUszRSxJQUFJLHFCQUFZZ0csVUFBVSxDQUFFO1FBQ3ZEbEksT0FBTyxDQUFDbUMsR0FBRyxDQUFDZ0YsS0FBSyxDQUFDO1FBQ2xCLElBQU1DLFNBQVMsR0FBRyxJQUFJckYsS0FBSyxDQUFDb0YsS0FBSyxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUNqRixJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3ZEcEMsT0FBTyxDQUFDbUMsR0FBRyxDQUFDaUYsU0FBUyxDQUFDO1FBQ3RCLElBQUksQ0FBQ1csVUFBVSxDQUFDM0MsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUNoQixZQUFZLENBQUN5QyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUM7TUFDOUQ7TUFDQSxJQUFJLENBQUN1QixVQUFVLEVBQUU7TUFDakIsSUFBSSxDQUFDQyxpQkFBaUIsRUFBRTtJQUMxQjtFQUFDO0VBQUE7QUFBQTtBQUdILFNBQVNDLElBQUksQ0FBQ3JKLElBQVMsRUFBVTtFQUMvQixJQUFNYSxPQUFPLEdBQUdkLFNBQVMsQ0FBQ0MsSUFBSSxDQUFDO0VBQy9CLElBQUlhLE9BQU8sS0FBSyxJQUFJLEVBQUUsT0FBTyxDQUFDO0VBQzlCLElBQUl5SSxHQUFHLEdBQUcsSUFBSWpGLGtCQUFrQixDQUM5QixDQUFDeEQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQzVCQSxPQUFPLENBQUMwRCxPQUFPLENBQ2hCO0VBQ0QrRSxHQUFHLENBQUNDLFlBQVksQ0FBQzFJLE9BQU8sQ0FBQ3VFLElBQUksQ0FBQztFQUM5QmtFLEdBQUcsQ0FBQ0UsWUFBWSxDQUFDM0ksT0FBTyxDQUFDdUUsSUFBSSxDQUFDO0VBQzlCa0UsR0FBRyxDQUFDRyxLQUFLLEVBQUU7RUFDWCxPQUFPLENBQUM7QUFDVjs7QUFFQTtBQUNBLElBQUlDLE9BQU8sQ0FBQzFKLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ3dJLFFBQVEsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUM5RGtCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDTixJQUFJLENBQUNLLE9BQU8sQ0FBQzFKLElBQUksQ0FBQyxDQUFDIn0=