@witnet/sdk 1.2.2 → 1.2.4

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 (75) hide show
  1. package/.env_witnet +2 -1
  2. package/dist/package.json +4 -4
  3. package/dist/src/bin/helpers.js +1 -1
  4. package/dist/src/index.js +1 -1
  5. package/dist/src/lib/crypto/account.js +1 -1
  6. package/dist/src/lib/crypto/coinbase.js +1 -1
  7. package/dist/src/lib/crypto/index.js +1 -1
  8. package/dist/src/lib/crypto/interfaces.js +1 -1
  9. package/dist/src/lib/crypto/payloads/DataRequestPayload.js +1 -1
  10. package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
  11. package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
  12. package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
  13. package/dist/src/lib/crypto/payloads.js +1 -1
  14. package/dist/src/lib/crypto/signer.js +1 -1
  15. package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -1
  16. package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
  17. package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
  18. package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
  19. package/dist/src/lib/crypto/transmitters.js +1 -1
  20. package/dist/src/lib/crypto/types.js +1 -1
  21. package/dist/src/lib/crypto/utils.js +1 -1
  22. package/dist/src/lib/crypto/wallet.js +1 -1
  23. package/dist/src/lib/index.js +1 -1
  24. package/dist/src/lib/radon/ccdr/eth.js +1 -1
  25. package/dist/src/lib/radon/ccdr/index.js +1 -1
  26. package/dist/src/lib/radon/ccdr/wit.js +1 -1
  27. package/dist/src/lib/radon/filters.js +1 -1
  28. package/dist/src/lib/radon/index.js +1 -1
  29. package/dist/src/lib/radon/reducers.js +1 -1
  30. package/dist/src/lib/radon/types.js +1 -1
  31. package/dist/src/lib/radon/utils.d.ts.map +1 -1
  32. package/dist/src/lib/radon/utils.js +1 -1
  33. package/dist/src/lib/rest/kermit.d.ts.map +1 -1
  34. package/dist/src/lib/rest/kermit.js +2 -4
  35. package/dist/src/lib/rest/types.js +1 -1
  36. package/dist/src/lib/rpc/index.js +1 -1
  37. package/dist/src/lib/rpc/nodes.js +1 -1
  38. package/dist/src/lib/rpc/provider.js +1 -1
  39. package/dist/src/lib/rpc/types.js +1 -1
  40. package/dist/src/lib/types.js +1 -1
  41. package/dist/src/lib/utils.js +1 -1
  42. package/package.json +4 -4
  43. package/scripts/clean.cjs +21 -21
  44. package/scripts/postinstall.cjs +9 -9
  45. package/src/bin/bots/watcher.cjs +365 -354
  46. package/src/bin/cli/history.cjs +31 -31
  47. package/src/bin/cli/inspect.js +581 -581
  48. package/src/bin/cli/network.js +695 -695
  49. package/src/bin/cli/nodes.js +424 -424
  50. package/src/bin/cli/radon.js +1124 -1122
  51. package/src/bin/cli/wallet.js +1362 -1362
  52. package/src/bin/helpers.js +974 -974
  53. package/src/bin/index.js +328 -328
  54. package/witnet/assets/_index.cjs +0 -5
  55. package/witnet/assets/_requests.cjs +0 -25
  56. package/witnet/assets/_sources.cjs +0 -36
  57. package/witnet/assets/_templates.cjs +0 -36
  58. package/witnet/assets/index.cjs +0 -4
  59. package/witnet/assets/modals/index.cjs +0 -7
  60. package/witnet/assets/modals/web3/btc.cjs +0 -0
  61. package/witnet/assets/modals/web3/eth.cjs +0 -27
  62. package/witnet/assets/modals/web3/ipfs.cjs +0 -22
  63. package/witnet/assets/modals/web3/sol.cjs +0 -0
  64. package/witnet/assets/modals/web3/wit.cjs +0 -28
  65. package/witnet/assets/requests.cjs +0 -49
  66. package/witnet/witnet copy.proto +0 -457
  67. package/witnet/witnet.proto +0 -456
  68. package/witnet/witnet.proto.json +0 -1322
  69. package/witnet/witnet_toolkit-1.6.7-x86_64-pc-windows-msvc.exe +0 -0
  70. package/witnet/witnet_toolkit-1.7.1-x86_64-pc-windows-msvc.exe +0 -0
  71. package/witnet/witnet_toolkit-2.0.0-rc.7-x86_64-pc-windows-msvc.exe +0 -0
  72. package/witnet/witnet_toolkit-2.0.2-x86_64-pc-windows-msvc.exe +0 -0
  73. package/witnet/witnet_toolkit-2.0.21-x86_64-pc-windows-msvc.exe +0 -0
  74. package/witnet/witnet_toolkit-2.0.7-x86_64-pc-windows-msvc.exe +0 -0
  75. package/witnet/witnet_toolkit-2.0.8-x86_64-pc-windows-msvc.exe +0 -0
@@ -746,4 +746,4 @@ function findKeyInObject(dict, tag) {
746
746
  }
747
747
  }
748
748
  }
749
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRS9DLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUVsQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsQ0FBQztBQUNyQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUNuQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FDNUMsQ0FBQztBQUNGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFdEQsT0FBTyxFQUNOLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsMkJBQTJCLEVBQzNCLFdBQVcsRUFDWCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEdBQ2QsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxJQUFJLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQ04sVUFBVSxJQUFJLFdBQVcsRUFDekIsWUFBWSxJQUFJLGFBQWEsRUFDN0IsVUFBVSxJQUFJLFdBQVcsRUFDekIsY0FB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b2R1bGVcIjtcclxuaW1wb3J0IGNib3IgZnJvbSBcImNib3JcIjtcclxuaW1wb3J0IGdyYXBoUWxDb21wcmVzcyBmcm9tIFwiZ3JhcGhxbC1xdWVyeS1jb21wcmVzc1wiO1xyXG5cclxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcclxuXHJcbmltcG9ydCBwcm90b2J1ZiBmcm9tIFwicHJvdG9idWZqc1wiO1xyXG5cclxuY29uc3QgeyBSb290OiBQcm90b1Jvb3QgfSA9IHByb3RvYnVmO1xyXG5jb25zdCBwcm90b1Jvb3QgPSBQcm90b1Jvb3QuZnJvbUpTT04oXHJcblx0cmVxdWlyZShcIi4uLy4uLy4uL3dpdG5ldC93aXRuZXQucHJvdG8uanNvblwiKSxcclxuKTtcclxuY29uc3QgUkFEUmVxdWVzdCA9IHByb3RvUm9vdC5sb29rdXBUeXBlKFwiUkFEUmVxdWVzdFwiKTtcclxuXHJcbmltcG9ydCB7XHJcblx0ZXhlY1JhZG9uQnl0ZWNvZGUsXHJcblx0ZnJvbUhleFN0cmluZyxcclxuXHRnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcsXHJcblx0aXNIZXhTdHJpbmcsXHJcblx0aXNXaWxkY2FyZCxcclxuXHRwYXJzZVVSTCxcclxuXHRyZXBsYWNlV2lsZGNhcmRzLFxyXG5cdHNwbGljZVdpbGRjYXJkLFxyXG5cdHRvSGV4U3RyaW5nLFxyXG5cdHRvVXRmOEFycmF5LFxyXG5cdHV0ZjhBcnJheVRvU3RyLFxyXG59IGZyb20gXCIuLi8uLi9iaW4vaGVscGVycy5qc1wiO1xyXG5cclxuaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSBcIi4uL2NyeXB0by91dGlscy5qc1wiO1xyXG5pbXBvcnQgeyBPcGNvZGVzIGFzIEZpbHRlcnMsIFJhZG9uRmlsdGVyIH0gZnJvbSBcIi4vZmlsdGVycy5qc1wiO1xyXG5pbXBvcnQgeyBSYWRvblJlZHVjZXIsIE9wY29kZXMgYXMgUmVkdWNlcnMgfSBmcm9tIFwiLi9yZWR1Y2Vycy5qc1wiO1xyXG5pbXBvcnQge1xyXG5cdFJhZG9uQXJyYXkgYXMgX1JhZG9uQXJyYXksXHJcblx0UmFkb25Cb29sZWFuIGFzIF9SYWRvbkJvb2xlYW4sXHJcblx0UmFkb25CeXRlcyBhcyBfUmFkb25CeXRlcyxcclxuXHRSYWRvbkVuY29kaW5ncyBhcyBfUmFkb25FbmNvZGluZ3MsXHJcblx0UmFkb25GbG9hdCBhcyBfUmFkb25GbG9hdCxcclxuXHRSYWRvbkludGVnZXIgYXMgX1JhZG9uSW50ZWdlcixcclxuXHRSYWRvbk1hcCBhcyBfUmFkb25NYXAsXHJcblx0UmFkb25TY3JpcHQgYXMgX1JhZG9uU2NyaXB0LFxyXG5cdFJhZG9uU3RyaW5nIGFzIF9SYWRvblN0cmluZyxcclxuXHR0eXBlIFJhZG9uQW55LFxyXG5cdHR5cGUgUmFkb25PcGVyYXRvcixcclxuXHR0eXBlIFJhZG9uU3RyaW5nLFxyXG59IGZyb20gXCIuL3R5cGVzLmpzXCI7XHJcbmltcG9ydCB7IHBhcnNlUmFkb25TY3JpcHQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xyXG5cclxudHlwZSBBcmdzID0gc3RyaW5nW10gfCBzdHJpbmdbXVtdO1xyXG5cclxuY2xhc3MgUmFkb25BcnRpZmFjdCB7XHJcblx0cHVibGljIHJlYWRvbmx5IHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsW107XHJcblx0cHVibGljIHJlYWRvbmx5IHNvdXJjZXNSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XHJcblx0cHVibGljIHJlYWRvbmx5IHdpdG5lc3NSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHNwZWNzOiB7XHJcblx0XHRzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdO1xyXG5cdFx0c291cmNlc1JlZHVjZXI6IFJhZG9uUmVkdWNlcjtcclxuXHRcdHdpdG5lc3NSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XHJcblx0fSkge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhc3BlY3Muc291cmNlcyB8fFxyXG5cdFx0XHQhQXJyYXkuaXNBcnJheShzcGVjcy5zb3VyY2VzKSB8fFxyXG5cdFx0XHRzcGVjcy5zb3VyY2VzLmxlbmd0aCA9PT0gMFxyXG5cdFx0KSB7XHJcblx0XHRcdHRocm93IFR5cGVFcnJvcihcclxuXHRcdFx0XHRcIlJhZG9uQXJ0aWZhY3Q6IGNhbm5vdCBidWlsZCBpZiBubyByZXRyaWV2YWxzIGFyZSBwYXNzZWRcIixcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdHNwZWNzLnNvdXJjZXM/LmZvckVhY2goKHJldHJpZXZhbCwgaW5kZXgpID0+IHtcclxuXHRcdFx0aWYgKHJldHJpZXZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKGBSYWRvbkFydGlmYWN0OiByZXRyaWV2YWwgIyR7aW5kZXh9IGlzIHVuZGVmaW5lZGApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKCEocmV0cmlldmFsIGluc3RhbmNlb2YgUmFkb25SZXRyaWV2YWwpKSB7XHJcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKGBSYWRvbkFydGlmYWN0OiByZXRyaWV2YWwgIyR7aW5kZXh9OiBpbnZhbGlkIHR5cGVgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLnNvdXJjZXMgPSBzcGVjcy5zb3VyY2VzO1xyXG5cdFx0dGhpcy5zb3VyY2VzUmVkdWNlciA9IHNwZWNzLnNvdXJjZXNSZWR1Y2VyO1xyXG5cdFx0dGhpcy53aXRuZXNzUmVkdWNlciA9IHNwZWNzLndpdG5lc3NSZWR1Y2VyO1xyXG5cdH1cclxuXHJcblx0cHVibGljIG9wc0NvdW50KCk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHQodGhpcy5zb3VyY2VzXHJcblx0XHRcdFx0Py5tYXAoKHJldHJpZXZhbCkgPT4gcmV0cmlldmFsLm9wc0NvdW50KCkpXHJcblx0XHRcdFx0LnJlZHVjZSgoc3VtLCBhKSA9PiBzdW0gKyBhKSB8fCAwKSArXHJcblx0XHRcdHRoaXMuc291cmNlc1JlZHVjZXI/Lm9wc0NvdW50KCkgK1xyXG5cdFx0XHR0aGlzLndpdG5lc3NSZWR1Y2VyPy5vcHNDb3VudCgpXHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZG9uUmVxdWVzdCBleHRlbmRzIFJhZG9uQXJ0aWZhY3Qge1xyXG5cdC8qKlxyXG5cdCAqIERlY29kZXMgYSBSYWRvblJlcXVlc3QgYXJ0aWZhY3Qgb3V0IGZyb20gYSBQcm90b2J1Zi1zZXJpYWxpemVkIGJ5dGVjb2RlLlxyXG5cdCAqIEBwYXJhbSBieXRlY29kZSBSYWRvbiByZXF1ZXN0IGJ5dGVjb2RlLlxyXG5cdCAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRpYyBmcm9tQnl0ZWNvZGUoYnl0ZWNvZGU6IGFueSkge1xyXG5cdFx0bGV0IGJ1ZmZlcjtcclxuXHRcdGlmIChpc0hleFN0cmluZyhieXRlY29kZSkpIHtcclxuXHRcdFx0YnVmZmVyID0gZnJvbUhleFN0cmluZyhieXRlY29kZSk7XHJcblx0XHR9IGVsc2UgaWYgKGJ5dGVjb2RlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xyXG5cdFx0XHRidWZmZXIgPSBCdWZmZXIuZnJvbShieXRlY29kZSk7XHJcblx0XHR9IGVsc2UgaWYgKGJ5dGVjb2RlIGluc3RhbmNlb2YgQnVmZmVyKSB7XHJcblx0XHRcdGJ1ZmZlciA9IGJ5dGVjb2RlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcclxuXHRcdFx0XHRgUmFkb25SZXF1ZXN0OiB1bnN1cHBvcnRlZCBieXRlY29kZSBmb3JtYXQ6ICR7Ynl0ZWNvZGV9YCxcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IG9iajogYW55ID0gUkFEUmVxdWVzdC5kZWNvZGUoYnVmZmVyKTtcclxuXHRcdHJldHVybiBSYWRvblJlcXVlc3QuZnJvbVByb3RvYnVmKG9iaik7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWNvZGVzIGEgUmFkb25SZXF1ZXN0IGFydGlmYWN0IG91dCBmcm9tIGEgUHJvdG9idWYgb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSBvYmogUHJvdG9idWYgb2JqZWN0LlxyXG5cdCAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRpYyBmcm9tUHJvdG9idWYob2JqOiBhbnkpIHtcclxuXHRcdGNvbnN0IHNvdXJjZXMgPSBvYmoucmV0cmlldmUubWFwKChyZXRyaWV2YWw6IGFueSkgPT4ge1xyXG5cdFx0XHRjb25zdCBzcGVjczogYW55ID0ge307XHJcblx0XHRcdGlmIChyZXRyaWV2YWw/LnVybCkge1xyXG5cdFx0XHRcdHNwZWNzLnVybCA9IHJldHJpZXZhbC51cmw7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHJldHJpZXZhbD8uaGVhZGVycykge1xyXG5cdFx0XHRcdHNwZWNzLmhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXHJcblx0XHRcdFx0XHRyZXRyaWV2YWwuaGVhZGVycy5tYXAoKHN0cmluZ1BhaXI6IGFueSkgPT4gW1xyXG5cdFx0XHRcdFx0XHRzdHJpbmdQYWlyLmxlZnQsXHJcblx0XHRcdFx0XHRcdHN0cmluZ1BhaXIucmlnaHQsXHJcblx0XHRcdFx0XHRdKSxcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChyZXRyaWV2YWw/LmJvZHkgJiYgcmV0cmlldmFsLmJvZHkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHNwZWNzLmJvZHkgPSB1dGY4QXJyYXlUb1N0cihPYmplY3QudmFsdWVzKHJldHJpZXZhbC5ib2R5KSk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHJldHJpZXZhbD8uc2NyaXB0KVxyXG5cdFx0XHRcdHNwZWNzLnNjcmlwdCA9IHBhcnNlUmFkb25TY3JpcHQodG9IZXhTdHJpbmcocmV0cmlldmFsLnNjcmlwdCkpO1xyXG5cdFx0XHRzcGVjcy5tZXRob2QgPSByZXRyaWV2YWwua2luZDtcclxuXHRcdFx0cmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbChzcGVjcyk7XHJcblx0XHR9KTtcclxuXHRcdGNvbnN0IGRlY29kZUZpbHRlciA9IChmOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKGY/LmFyZ3MgJiYgZi5hcmdzLmxlbmd0aCA+IDApXHJcblx0XHRcdFx0cmV0dXJuIG5ldyBSYWRvbkZpbHRlcihmLm9wLCBjYm9yLmRlY29kZShVaW50OEFycmF5LmZyb20oZi5hcmdzKSkpO1xyXG5cdFx0XHRlbHNlIHJldHVybiBuZXcgUmFkb25GaWx0ZXIoZi5vcCk7XHJcblx0XHR9O1xyXG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlcXVlc3Qoe1xyXG5cdFx0XHRzb3VyY2VzLFxyXG5cdFx0XHRzb3VyY2VzUmVkdWNlcjogbmV3IFJhZG9uUmVkdWNlcihcclxuXHRcdFx0XHRvYmouYWdncmVnYXRlLnJlZHVjZXIsXHJcblx0XHRcdFx0b2JqLmFnZ3JlZ2F0ZS5maWx0ZXJzPy5tYXAoZGVjb2RlRmlsdGVyKSxcclxuXHRcdFx0KSxcclxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IG5ldyBSYWRvblJlZHVjZXIoXHJcblx0XHRcdFx0b2JqLnRhbGx5LnJlZHVjZXIsXHJcblx0XHRcdFx0b2JqLnRhbGx5LmZpbHRlcnM/Lm1hcChkZWNvZGVGaWx0ZXIpLFxyXG5cdFx0XHQpLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3RvcihzcGVjczoge1xyXG5cdFx0c291cmNlczogUmFkb25SZXRyaWV2YWwgfCBSYWRvblJldHJpZXZhbFtdO1xyXG5cdFx0c291cmNlc1JlZHVjZXI/OiBSYWRvblJlZHVjZXI7XHJcblx0XHR3aXRuZXNzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcclxuXHR9KSB7XHJcblx0XHRjb25zdCBzb3VyY2VzID0gQXJyYXkuaXNBcnJheShzcGVjcy5zb3VyY2VzKVxyXG5cdFx0XHQ/IChzcGVjcy5zb3VyY2VzIGFzIFJhZG9uUmV0cmlldmFsW10pXHJcblx0XHRcdDogW3NwZWNzLnNvdXJjZXNdO1xyXG5cdFx0c3VwZXIoe1xyXG5cdFx0XHRzb3VyY2VzLFxyXG5cdFx0XHRzb3VyY2VzUmVkdWNlcjogc3BlY3M/LnNvdXJjZXNSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcclxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXHJcblx0XHR9KTtcclxuXHRcdGNvbnN0IGFyZ3NDb3VudCA9IHNvdXJjZXNcclxuXHRcdFx0Lm1hcCgocmV0cmlldmFsKSA9PiByZXRyaWV2YWwuYXJnc0NvdW50KVxyXG5cdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3Vycik7XHJcblx0XHRpZiAoYXJnc0NvdW50ID4gMCkge1xyXG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblJlcXVlc3Q6IHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscyB3ZXJlIHBhc3NlZFwiKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBfZW5jb2RlKCk6IEJ1ZmZlciB7XHJcblx0XHRjb25zdCBwYXlsb2FkID0gdGhpcy50b1Byb3RvYnVmKCk7XHJcblx0XHRjb25zdCBlcnJNc2cgPSBSQURSZXF1ZXN0LnZlcmlmeShwYXlsb2FkKTtcclxuXHRcdGlmIChlcnJNc2cpIHtcclxuXHRcdFx0dGhyb3cgRXJyb3IoZXJyTXNnKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBSQURSZXF1ZXN0LmZyb21PYmplY3QocGF5bG9hZCk7XHJcblx0XHRcdHJldHVybiBCdWZmZXIuZnJvbShSQURSZXF1ZXN0LmVuY29kZShtZXNzYWdlKS5maW5pc2goKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgYXN5bmMgZXhlY0RyeVJ1bih2ZXJib3NlID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0YXdhaXQgZXhlY1JhZG9uQnl0ZWNvZGUoXHJcblx0XHRcdFx0dGhpcy50b0J5dGVjb2RlKCksXHJcblx0XHRcdFx0XCItLWpzb25cIixcclxuXHRcdFx0XHR2ZXJib3NlID8gXCItLXZlcmJvc2VcIiA6IFwiXCIsXHJcblx0XHRcdClcclxuXHRcdCkudHJpbSgpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGdldCBkYXRhVHlwZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuc291cmNlc1swXS5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5STkdcclxuXHRcdFx0PyBcIlJhZG9uQnl0ZXNcIlxyXG5cdFx0XHQ6IHRoaXMuc291cmNlcz8uWzBdPy5zY3JpcHQ/Lm91dHB1dFR5cGVcclxuXHRcdFx0XHQ/IHRoaXMuc291cmNlc1swXS5zY3JpcHQub3V0cHV0VHlwZS5jb25zdHJ1Y3Rvci5uYW1lXHJcblx0XHRcdFx0OiBcIlJhZG9uQW55XCI7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0IHJhZEhhc2goKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0b0hleFN0cmluZyhzaGEyNTYodGhpcy5fZW5jb2RlKCkpLCBmYWxzZSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgdG9CeXRlY29kZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRvSGV4U3RyaW5nKHRoaXMuX2VuY29kZSgpKTsgLy9lbmNvZGVSQURSZXF1ZXN0KHRoaXMudG9Qcm90b2J1ZigpKSwgdHJ1ZSlcclxuXHR9XHJcblxyXG5cdHB1YmxpYyB0b0pTT04oaHVtYW5pemU/OiBib29sZWFuKTogYW55IHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdHJldHJpZXZlOiB0aGlzLnNvdXJjZXMubWFwKChyZXRyaWV2YWwpID0+IHJldHJpZXZhbC50b0pTT04oaHVtYW5pemUpKSxcclxuXHRcdFx0YWdncmVnYXRlOiB0aGlzLnNvdXJjZXNSZWR1Y2VyLnRvSlNPTihodW1hbml6ZSksXHJcblx0XHRcdHRhbGx5OiB0aGlzLndpdG5lc3NSZWR1Y2VyLnRvSlNPTihodW1hbml6ZSksXHJcblx0XHRcdC4uLihodW1hbml6ZSA/IHt9IDogeyB0aW1lX2xvY2s6IDAgfSksXHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0cHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdC8vdGltZUxvY2s6IDAsXHJcblx0XHRcdHJldHJpZXZlOiB0aGlzLnNvdXJjZXMubWFwKChyZXRyaWV2YWwpID0+IHJldHJpZXZhbC50b1Byb3RvYnVmKCkpLFxyXG5cdFx0XHRhZ2dyZWdhdGU6IHRoaXMuc291cmNlc1JlZHVjZXIudG9Qcm90b2J1ZigpLFxyXG5cdFx0XHR0YWxseTogdGhpcy53aXRuZXNzUmVkdWNlci50b1Byb3RvYnVmKCksXHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0cHVibGljIHdlaWdodCgpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMudG9CeXRlY29kZSgpLnNsaWNlKDIpLmxlbmd0aCAvIDI7XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmFkb25SZXF1ZXN0RnJvbUFzc2V0cyhzcGVjczoge1xyXG5cdGFzc2V0czogT2JqZWN0O1xyXG5cdGFyZ3NNYXA6IFJlY29yZDxzdHJpbmcsIGFueSB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkPjtcclxuXHRzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcclxuXHR3aXRuZXNzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcclxufSk6IFJhZG9uUmVxdWVzdCB7XHJcblx0Y29uc3Qgc291cmNlczogUmFkb25SZXRyaWV2YWxbXSA9IFtdO1xyXG5cdGNvbnN0IGRpY3QgPSByZXRyaWV2YWxzLmZyb21SYWRvbkFzc2V0cyhzcGVjcy5hc3NldHMpO1xyXG5cdC8vIGNvbnN0IGFyZ3M6IHN0cmluZ1tdW10gPSBbXVxyXG5cdE9iamVjdC5rZXlzKHNwZWNzLmFyZ3NNYXApLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0Y29uc3QgcmV0cmlldmFsOiBSYWRvblJldHJpZXZhbCA9IGRpY3Rba2V5XTtcclxuXHRcdGNvbnN0IGFyZ3MgPSAoc3BlY3MuYXJnc01hcCBhcyBhbnkpW2tleV07XHJcblx0XHRpZiAocmV0cmlldmFsLmFyZ3NDb3VudCA+IDApIHtcclxuXHRcdFx0aWYgKCFhcmdzIHx8IGFyZ3MubGVuZ3RoIDwgcmV0cmlldmFsLmFyZ3NDb3VudCkge1xyXG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihcclxuXHRcdFx0XHRcdGBJbnN1ZmZpY2llbnQgYXJncyBwYXNzZWQgdG8gcmV0cmlldmFsIG5hbWVkIGFzICcke2tleX0nOiAke2FyZ3MubGVuZ3RofSA8ICR7cmV0cmlldmFsLmFyZ3NDb3VudH1gLFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0c291cmNlcy5wdXNoKHJldHJpZXZhbC5mb2xkQXJncyhhcmdzKSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHNvdXJjZXMucHVzaChyZXRyaWV2YWwpO1xyXG5cdFx0fVxyXG5cdH0pO1xyXG5cdHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcclxuXHRcdHNvdXJjZXMsXHJcblx0XHRzb3VyY2VzUmVkdWNlcjogc3BlY3M/LnNvdXJjZXNSZWR1Y2VyLFxyXG5cdFx0d2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlcixcclxuXHR9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFJhZG9uU2NyaXB0PFxyXG5cdElucHV0VHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25TdHJpbmcsXHJcbj4oaW5wdXRUeXBlOiB7IG5ldyAob3BzPzogUmFkb25PcGVyYXRvcik6IElucHV0VHlwZSB9KTogSW5wdXRUeXBlIHtcclxuXHRpZiAoIWlucHV0VHlwZSlcclxuXHRcdHRocm93IFR5cGVFcnJvcihcclxuXHRcdFx0XCJJbnB1dCBSYWRvbiBkYXRhIHR5cGUgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBkZWNsYXJpbmcgYSBuZXcgUmFkb24gc2NyaXB0LlwiLFxyXG5cdFx0KTtcclxuXHRyZXR1cm4gbmV3IGlucHV0VHlwZSgpO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmFkb25UZW1wbGF0ZSBleHRlbmRzIFJhZG9uQXJ0aWZhY3Qge1xyXG5cdHByb3RlY3RlZCBfYXJnc0NvdW50OiBudW1iZXI7XHJcblxyXG5cdHB1YmxpYyByZWFkb25seSBob21vZ2VuZW91czogYm9vbGVhbjtcclxuXHRwdWJsaWMgcmVhZG9ubHkgc2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIEFyZ3M+O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHNwZWNzOiB7XHJcblx0XHRcdHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsIHwgUmFkb25SZXRyaWV2YWxbXTtcclxuXHRcdFx0c291cmNlc1JlZHVjZXI/OiBSYWRvblJlZHVjZXI7XHJcblx0XHRcdHdpdG5lc3NSZWR1Y2VyPzogUmFkb25SZWR1Y2VyO1xyXG5cdFx0fSxcclxuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBBcmdzPixcclxuXHQpIHtcclxuXHRcdGNvbnN0IHNvdXJjZXMgPSBBcnJheS5pc0FycmF5KHNwZWNzLnNvdXJjZXMpXHJcblx0XHRcdD8gKHNwZWNzLnNvdXJjZXMgYXMgUmFkb25SZXRyaWV2YWxbXSlcclxuXHRcdFx0OiBbc3BlY3Muc291cmNlc107XHJcblx0XHRzdXBlcih7XHJcblx0XHRcdHNvdXJjZXMsXHJcblx0XHRcdHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxyXG5cdFx0XHR3aXRuZXNzUmVkdWNlcjogc3BlY3M/LndpdG5lc3NSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5fYXJnc0NvdW50ID0gc291cmNlc1xyXG5cdFx0XHQubWFwKChyZXRyaWV2YWwpID0+IHJldHJpZXZhbD8uYXJnc0NvdW50KVxyXG5cdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBNYXRoLm1heChwcmV2LCBjdXJyKSwgMCk7XHJcblx0XHRpZiAodGhpcy5fYXJnc0NvdW50ID09PSAwKSB7XHJcblx0XHRcdHRocm93IFR5cGVFcnJvcihcIlJhZG9uVGVtcGxhdGU6IG5vIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscyB3ZXJlIHBhc3NlZFwiKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuaG9tb2dlbmVvdXMgPSAhc291cmNlcy5maW5kKFxyXG5cdFx0XHQocmV0cmlldmFsKSA9PiByZXRyaWV2YWwuYXJnc0NvdW50ICE9PSB0aGlzLl9hcmdzQ291bnQsXHJcblx0XHQpO1xyXG5cdFx0aWYgKHNhbXBsZXMpIHtcclxuXHRcdFx0T2JqZWN0LmtleXMoc2FtcGxlcykuZm9yRWFjaCgoc2FtcGxlKSA9PiB7XHJcblx0XHRcdFx0bGV0IHNhbXBsZUFyZ3M6IEFyZ3MgPSBPYmplY3Qoc2FtcGxlcylbc2FtcGxlXTtcclxuXHRcdFx0XHRpZiAodHlwZW9mIHNhbXBsZUFyZ3MgPT09IFwic3RyaW5nXCIpIHtcclxuXHRcdFx0XHRcdHNhbXBsZUFyZ3MgPSBbc2FtcGxlQXJnc107XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChzYW1wbGVBcmdzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdGlmICghQXJyYXkuaXNBcnJheShzYW1wbGVBcmdzWzBdKSkge1xyXG5cdFx0XHRcdFx0XHRPYmplY3Qoc2FtcGxlcylbc2FtcGxlXSA9IEFycmF5KHNvdXJjZXMubGVuZ3RoKS5maWxsKHNhbXBsZUFyZ3MpO1xyXG5cdFx0XHRcdFx0XHRzYW1wbGVBcmdzID0gT2JqZWN0KHNhbXBsZXMpW3NhbXBsZV07XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHNhbXBsZUFyZ3M/Lmxlbmd0aCAhPT0gc291cmNlcy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFxyXG5cdFx0XHRcdFx0XHRcdGBSYWRvblRlbXBsYXRlOiBhcmd1bWVudHMgbWlzbWF0Y2ggaW4gc2FtcGxlIFwiJHtzYW1wbGV9XCI6ICR7c2FtcGxlQXJncz8ubGVuZ3RofSBzYW1wbGVzIGdpdmVuIHZzLiAke3NvdXJjZXMubGVuZ3RofSBleHBlY3RlZGAsXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRzYW1wbGVBcmdzPy5mb3JFYWNoKChzdWJhcmdzLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAoc3ViYXJncy5sZW5ndGggPCBzb3VyY2VzW2luZGV4XS5hcmdzQ291bnQpIHtcclxuXHRcdFx0XHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXHJcblx0XHRcdFx0XHRcdFx0XHRgXFx4MWJbMTszM21SYWRvblJlcXVlc3RUZW1wbGF0ZTogYXJndW1lbnRzIG1pc21hdGNoIGluIHRlc3QgXFx4MWJbMTszMW0nJHtzYW1wbGV9J1xceDFiWzE7MzNtOiBcXHgxYlsxOzM3bVJldHJpZXZhbCAjJHtpbmRleH1cXHgxYlsxOzMzbTogJHtzdWJhcmdzPy5sZW5ndGh9IHBhcmFtZXRlcnMgZ2l2ZW4gdnMuICR7c291cmNlc1tpbmRleF0uYXJnc0NvdW50fSBleHBlY3RlZFxceDFiWzBtYCxcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0aGlzLnNhbXBsZXMgPSBzYW1wbGVzO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGdldCBhcmdzQ291bnQoKTogbnVtYmVyIHtcclxuXHRcdHJldHVybiB0aGlzLl9hcmdzQ291bnQ7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgYnVpbGRSYWRvblJlcXVlc3QoXHJcblx0XHRhcmdzOiBhbnkgfCBhbnlbXSB8IHN0cmluZ1tdIHwgc3RyaW5nW11bXSxcclxuXHQpOiBSYWRvblJlcXVlc3Qge1xyXG5cdFx0Y29uc3Qgc291cmNlczogUmFkb25SZXRyaWV2YWxbXSA9IFtdO1xyXG5cdFx0aWYgKHRoaXMuaG9tb2dlbmVvdXMpIHtcclxuXHRcdFx0Ly8gYXJncyBjYW4gYmUgZWl0aGVyIGFueSwgc3RyaW5nW10gb3Igc3RyaW5nWzBdW11cclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoYXJncykgJiYgYXJnc1swXSAmJiBBcnJheS5pc0FycmF5KGFyZ3NbMF0pKSB7XHJcblx0XHRcdFx0aWYgKGFyZ3MubGVuZ3RoID4gMSkge1xyXG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcclxuXHRcdFx0XHRcdFx0YFJhZG9uVGVtcGxhdGU6IGhvbW9nZW5lb3VzIHRlbXBsYXRlOiBhcmdzIHZlY3RvciBkaW1lbnNpb24gJHthcmdzLmxlbmd0aH0gPiAxLmAsXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRhcmdzID0gYXJnc1swXTtcclxuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpICYmIGFyZ3MubGVuZ3RoICE9PSB0aGlzLmFyZ3NDb3VudCkge1xyXG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXHJcblx0XHRcdFx0XHRgUmFkb25UZW1wbGF0ZTogaG9tb2dlbm91cyB0ZW1wbGF0ZTogbWlzc2luZyAke3RoaXMuYXJnc0NvdW50IC0gYXJncy5sZW5ndGh9IG91dCBvZiAke2FyZ3MubGVuZ3RofSBwYXJhbWV0ZXJzLmAsXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnNvdXJjZXMuZm9yRWFjaCgocmV0cmlldmFsKSA9PlxyXG5cdFx0XHRcdHNvdXJjZXMucHVzaChyZXRyaWV2YWwuZm9sZEFyZ3MoYXJncykpLFxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpIHx8IGFyZ3MubGVuZ3RoICE9PSB0aGlzLnNvdXJjZXMubGVuZ3RoKSB7XHJcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcclxuXHRcdFx0XHRcdGBSYWRvblRlbXBsYXRlOiBhcmdzIHZlY3RvciBkaW1lbnNpb24gJHthcmdzLmxlbmd0aH0gIT0gJHt0aGlzLnNvdXJjZXMubGVuZ3RofWAsXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnNvdXJjZXMuZm9yRWFjaCgocmV0cmlldmFsLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdEFycmF5LmlzQXJyYXkoYXJnc1tpbmRleF0pICYmXHJcblx0XHRcdFx0XHRyZXRyaWV2YWwuYXJnc0NvdW50ICE9PSBhcmdzW2luZGV4XS5sZW5ndGhcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXHJcblx0XHRcdFx0XHRcdGBSYWRvblRlbXBsYXRlOiByZXRyaWV2YWwgIyR7aW5kZXggKyAxfTogbWlzbWF0Y2hpbmcgYXJncyBjb3VudDogJHtcclxuXHRcdFx0XHRcdFx0XHRhcmdzW2luZGV4XS5sZW5ndGhcclxuXHRcdFx0XHRcdFx0fSAhPSAke3JldHJpZXZhbC5hcmdzQ291bnR9IChbJHthcmdzW2luZGV4XX0pXWAsXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRzb3VyY2VzLnB1c2gocmV0cmlldmFsLmZvbGRBcmdzKGFyZ3NbaW5kZXhdKSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlcXVlc3Qoe1xyXG5cdFx0XHRzb3VyY2VzLFxyXG5cdFx0XHRzb3VyY2VzUmVkdWNlcjogdGhpcy5zb3VyY2VzUmVkdWNlcixcclxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IHRoaXMud2l0bmVzc1JlZHVjZXIsXHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRvbk1vZGFsIGV4dGVuZHMgUmFkb25UZW1wbGF0ZSB7XHJcblx0cHJvdGVjdGVkIF9wcm92aWRlcnM6IEFycmF5PHN0cmluZz47XHJcblxyXG5cdGNvbnN0cnVjdG9yKHNwZWNzOiB7XHJcblx0XHRwcm92aWRlcnM/OiBBcnJheTxzdHJpbmc+O1xyXG5cdFx0cmV0cmlldmFsOiBSYWRvblJldHJpZXZhbDtcclxuXHRcdHNvdXJjZXNSZWR1Y2VyPzogUmFkb25SZWR1Y2VyO1xyXG5cdFx0d2l0bmVzc1JlZHVjZXI/OiBSYWRvblJlZHVjZXI7XHJcblx0fSkge1xyXG5cdFx0aWYgKCFzcGVjcy5yZXRyaWV2YWwuaXNNb2RhbCgpKSB7XHJcblx0XHRcdHRocm93IFR5cGVFcnJvcihcIlJhZG9uTW9kYWw6IG5vIG1vZGFsIHJldHJpZXZhbCB3YXMgcGFzc2VkLlwiKTtcclxuXHRcdH1cclxuXHRcdHN1cGVyKFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0c291cmNlczogW3NwZWNzLnJldHJpZXZhbF0sXHJcblx0XHRcdFx0c291cmNlc1JlZHVjZXI6IHNwZWNzPy5zb3VyY2VzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXHJcblx0XHRcdFx0d2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXHJcblx0XHRcdH0sXHJcblx0XHRcdHNwZWNzLnJldHJpZXZhbD8uc2FtcGxlcyxcclxuXHRcdCk7XHJcblx0XHRpZiAoc3BlY3M/LnByb3ZpZGVycykge1xyXG5cdFx0XHR0aGlzLl9wcm92aWRlcnMgPSB0aGlzLl9jaGVja1Byb3ZpZGVycyhzcGVjcy5wcm92aWRlcnMpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5fcHJvdmlkZXJzID0gW107XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0IGFyZ3NDb3VudCgpOiBudW1iZXIge1xyXG5cdFx0Y29uc3QgX3Byb3ZpZGVyc0FyZ3NDb3VudCA9IE1hdGgubWF4KFxyXG5cdFx0XHQuLi50aGlzLnByb3ZpZGVycy5tYXAoKHVybCkgPT4gZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHVybCkpLFxyXG5cdFx0KTtcclxuXHRcdHJldHVybiBfcHJvdmlkZXJzQXJnc0NvdW50ID4gMFxyXG5cdFx0XHQ/IE1hdGgubWF4KHRoaXMuX2FyZ3NDb3VudCwgX3Byb3ZpZGVyc0FyZ3NDb3VudClcclxuXHRcdFx0OiB0aGlzLl9hcmdzQ291bnQ7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0IHByb3ZpZGVycygpOiBBcnJheTxzdHJpbmc+IHtcclxuXHRcdHJldHVybiB0aGlzLl9wcm92aWRlcnM7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgc2V0IHByb3ZpZGVycyhwcm92aWRlcnM6IEFycmF5PHN0cmluZz4pIHtcclxuXHRcdHRoaXMuX3Byb3ZpZGVycyA9IHRoaXMuX2NoZWNrUHJvdmlkZXJzKHByb3ZpZGVycyk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgYnVpbGRSYWRvblJlcXVlc3QoYXJncz86IGFueSB8IHN0cmluZ1tdKTogUmFkb25SZXF1ZXN0IHtcclxuXHRcdGlmICh0aGlzLnByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25Nb2RhbDogbm8gcHJvdmlkZXJzIHdlcmUgcHJldmlvdXNseSBzZXR0bGVkLmApO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgdGVtcGxhdGUgPSB0aGlzLmJ1aWxkUmFkb25UZW1wbGF0ZSh0aGlzLnByb3ZpZGVycyk7XHJcblx0XHRyZXR1cm4gdGVtcGxhdGUuaG9tb2dlbmVvdXNcclxuXHRcdFx0PyB0ZW1wbGF0ZS5idWlsZFJhZG9uUmVxdWVzdChhcmdzKVxyXG5cdFx0XHQ6IHRlbXBsYXRlLmJ1aWxkUmFkb25SZXF1ZXN0KFxyXG5cdFx0XHRcdFx0dGVtcGxhdGUuc291cmNlcy5tYXAoKHNvdXJjZSkgPT4gYXJncy5zbGljZSgwLCBzb3VyY2UuYXJnc0NvdW50KSksXHJcblx0XHRcdFx0KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBidWlsZFJhZG9uVGVtcGxhdGUocHJvdmlkZXJzPzogQXJyYXk8c3RyaW5nPik6IFJhZG9uVGVtcGxhdGUge1xyXG5cdFx0aWYgKCFwcm92aWRlcnMpIHtcclxuXHRcdFx0cHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMoWy4uLnRoaXMuX3Byb3ZpZGVyc10pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMoWy4uLnByb3ZpZGVyc10pO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCFwcm92aWRlcnMgfHwgcHJvdmlkZXJzLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvbk1vZGFsOiBubyBwcm92aWRlcnMgd2VyZSBzcGVjaWZpZWQuYCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbmV3IFJhZG9uVGVtcGxhdGUoe1xyXG5cdFx0XHRzb3VyY2VzOiB0aGlzLnNvdXJjZXNbMF0uc3Bhd25SZXRyaWV2YWxzKC4uLnByb3ZpZGVycyksXHJcblx0XHRcdHNvdXJjZXNSZWR1Y2VyOiB0aGlzLnNvdXJjZXNSZWR1Y2VyLFxyXG5cdFx0XHR3aXRuZXNzUmVkdWNlcjogdGhpcy53aXRuZXNzUmVkdWNlcixcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0X2NoZWNrUHJvdmlkZXJzKHByb3ZpZGVyczogQXJyYXk8c3RyaW5nPik6IEFycmF5PHN0cmluZz4ge1xyXG5cdFx0cHJvdmlkZXJzLmZvckVhY2goKHByb3ZpZGVyKSA9PiB7XHJcblx0XHRcdGNvbnN0IFtzY2hlbWFdID0gcGFyc2VVUkwocHJvdmlkZXIpO1xyXG5cdFx0XHRpZiAoIXNjaGVtYS5zdGFydHNXaXRoKFwiaHR0cDovL1wiKSAmJiAhc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSkge1xyXG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihgUmFkb25Nb2RhbDogaW52YWxpZCBwcm92aWRlcjogJHtwcm92aWRlcn1gKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gcHJvdmlkZXJzO1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZG9uUmV0cmlldmFsIHtcclxuXHRwdWJsaWMgcmVhZG9ubHkgYXJnc0tleXM/OiBBcnJheTxzdHJpbmc+O1xyXG5cdHB1YmxpYyByZWFkb25seSBhcmdzQ291bnQ6IG51bWJlcjtcclxuXHRwdWJsaWMgcmVhZG9ubHkgbWV0aG9kOiByZXRyaWV2YWxzLk1ldGhvZHM7XHJcblx0cHVibGljIHJlYWRvbmx5IGF1dGhvcml0eT86IHN0cmluZztcclxuXHRwdWJsaWMgcmVhZG9ubHkgYm9keT86IGFueTtcclxuXHRwdWJsaWMgcmVhZG9ubHkgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblx0cHVibGljIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XHJcblx0cHVibGljIHJlYWRvbmx5IHF1ZXJ5Pzogc3RyaW5nO1xyXG5cdHB1YmxpYyByZWFkb25seSBzY2hlbWE/OiBzdHJpbmc7XHJcblx0cHVibGljIHJlYWRvbmx5IHNjcmlwdD86IF9SYWRvblNjcmlwdDtcclxuXHRwdWJsaWMgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xyXG5cclxuXHRwdWJsaWMgcmVhZG9ubHkgc2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRzcGVjczoge1xyXG5cdFx0XHRtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcztcclxuXHRcdFx0dXJsPzogc3RyaW5nO1xyXG5cdFx0XHRoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuXHRcdFx0Ym9keT86IGFueTtcclxuXHRcdFx0c2NyaXB0PzogUmFkb25Bbnk7XHJcblx0XHRcdGFyZ3NLZXlzPzogQXJyYXk8c3RyaW5nPjtcclxuXHRcdH0sXHJcblx0XHRzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+LFxyXG5cdCkge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRzcGVjcy5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5STkcgJiZcclxuXHRcdFx0KHNwZWNzPy51cmwgfHwgc3BlY3M/LmhlYWRlcnM/LnNpemUgfHwgc3BlY3M/LmJvZHkpXHJcblx0XHQpIHtcclxuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiUmFkb25SZXRyaWV2YWw6IFJORyBhY2NlcHRzIG5vIFVSTHMgb3IgaGVhZGVyc1wiKTtcclxuXHRcdFx0Ly8gfSBlbHNlIGlmICghc3BlY3M/LnVybCAmJiAobWV0aG9kID09IE1ldGhvZHMuSHR0cFBvc3QgfHwgbWV0aG9kID09IE1ldGhvZHMuSHR0cEdldCkpIHtcclxuXHRcdFx0Ly8gICAgIHRocm93IFR5cGVFcnJvcihcIlJhZG9uUmV0cmlldmFsOiBVUkwgbXVzdCBiZSBzcGVjaWZpZWRcIik7XHJcblx0XHR9IGVsc2UgaWYgKHNwZWNzPy5ib2R5ICYmIHNwZWNzLm1ldGhvZCA9PT0gcmV0cmlldmFscy5NZXRob2RzLkh0dHBHZXQpIHtcclxuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFxyXG5cdFx0XHRcdFwiUmFkb25SZXRyaWV2YWw6IGJvZHkgY2Fubm90IGJlIHNwZWNpZmllZCBpbiBIVFRQLUdFVCBxdWVyaWVzXCIsXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLm1ldGhvZCA9IHNwZWNzLm1ldGhvZDtcclxuXHRcdGlmIChzcGVjcz8udXJsKSB7XHJcblx0XHRcdHRoaXMudXJsID0gc3BlY3MudXJsO1xyXG5cdFx0XHRpZiAoIWlzV2lsZGNhcmQoc3BlY3MudXJsKSkge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRjb25zdCBwYXJ0cyA9IHBhcnNlVVJMKHNwZWNzLnVybCk7XHJcblx0XHRcdFx0XHR0aGlzLnNjaGVtYSA9IHBhcnRzWzBdO1xyXG5cdFx0XHRcdFx0aWYgKHBhcnRzWzFdICE9PSBcIlwiKSB0aGlzLmF1dGhvcml0eSA9IHBhcnRzWzFdO1xyXG5cdFx0XHRcdFx0aWYgKHBhcnRzWzJdICE9PSBcIlwiKSB0aGlzLnBhdGggPSBwYXJ0c1syXTtcclxuXHRcdFx0XHRcdGlmIChwYXJ0c1szXSAhPT0gXCJcIikgdGhpcy5xdWVyeSA9IHBhcnRzWzNdO1xyXG5cdFx0XHRcdH0gY2F0Y2gge31cclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0c3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cEdldCB8fFxyXG5cdFx0XHRzcGVjcy5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwUG9zdCB8fFxyXG5cdFx0XHRzcGVjcy5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwSGVhZFxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMudXJsID0gXCJcXFxcMFxcXFxcIjtcclxuXHRcdH1cclxuXHRcdGlmIChzcGVjcz8uaGVhZGVycykge1xyXG5cdFx0XHRpZiAodHlwZW9mIHNwZWNzLmhlYWRlcnMgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheShzcGVjcy5oZWFkZXJzKSkge1xyXG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXHJcblx0XHRcdFx0XHRcIlJhZG9uUmV0cmlldmFsOiBIVFRQIGhlYWRlcnMgbXVzdCBiZSBvZiB0eXBlIFJlY29yZDxzdHJpbmcsIHN0cmluZz5cIixcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuaGVhZGVycyA9IHNwZWNzPy5oZWFkZXJzO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5ib2R5ID0gc3BlY3M/LmJvZHk7XHJcblx0XHRpZiAoc3BlY3M/LnNjcmlwdCkgdGhpcy5zY3JpcHQgPSBuZXcgX1JhZG9uU2NyaXB0KHNwZWNzPy5zY3JpcHQpO1xyXG5cdFx0dGhpcy5hcmdzQ291bnQgPSBNYXRoLm1heChcclxuXHRcdFx0Z2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHRoaXM/LnVybCksXHJcblx0XHRcdGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyh0aGlzPy5ib2R5KSxcclxuXHRcdFx0Li4uKE9iamVjdC5rZXlzKHRoaXM/LmhlYWRlcnMgfHwge30pLm1hcCgoa2V5KSA9PlxyXG5cdFx0XHRcdGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyhrZXkpLFxyXG5cdFx0XHQpID8/IFtdKSxcclxuXHRcdFx0Li4uKE9iamVjdC52YWx1ZXModGhpcz8uaGVhZGVycyB8fCB7fSkubWFwKCh2YWx1ZSkgPT5cclxuXHRcdFx0XHRnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcodmFsdWUpLFxyXG5cdFx0XHQpID8/IFtdKSxcclxuXHRcdFx0dGhpcy5zY3JpcHQ/LmFyZ3NDb3VudCgpIHx8IDAsXHJcblx0XHQpO1xyXG5cdFx0aWYgKHNhbXBsZXMgJiYgdGhpcy5hcmdzQ291bnQgPT09IDApIHtcclxuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcclxuXHRcdFx0XHRcIlJhZG9uUmV0cmlldmFsOiBwYXNzZWQgc2FtcGxlcyB0byBub24tcGFyYW1ldGVyaXplZCByZXRyaWV2YWwuXCIsXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLnNhbXBsZXMgPSBzYW1wbGVzO1xyXG5cdFx0aWYgKHNwZWNzPy5hcmdzS2V5cykge1xyXG5cdFx0XHRpZiAodGhpcy5hcmdzQ291bnQgPT09IDApIHtcclxuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxyXG5cdFx0XHRcdFx0XCJSYWRvblJldHJpZXZhbDogcGFzc2VkIGFyZ3Mga2V5cyB0byBub24tcGFyYW1ldGVyaXplZCByZXRyaWV2YWxcIixcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHNwZWNzLmFyZ3NLZXlzLmxlbmd0aCAhPT0gdGhpcy5hcmdzQ291bnQpIHtcclxuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxyXG5cdFx0XHRcdFx0YFJhZG9uUmV0cmlldmFsOiBwYXNzZWQgaW52YWxpZCBudW1iZXIgb2YgYXJncyBrZXlzOiAke3NwZWNzLmFyZ3NLZXlzLmxlbmd0aH0gIT0gJHt0aGlzLmFyZ3NDb3VudH1gLFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5hcmdzS2V5cyA9IHNwZWNzLmFyZ3NLZXlzO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGlzTW9kYWwoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHR0aGlzLm1ldGhvZCAhPT0gcmV0cmlldmFscy5NZXRob2RzLlJORyAmJlxyXG5cdFx0XHQoIXRoaXMudXJsIHx8IHRoaXMudXJsID09PSBcIlxcXFwwXFxcXFwiKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBpc1BhcmFtZXRlcml6ZWQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcmdzQ291bnQgPiAwO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhIG5ldyBSYWRvbiBSZXRyaWV2YWwgYnkgb3JkZXJseSByZXBsYWNpbmcgaW5kZXhlZCB3aWxkY2FyZHMgd2l0aCBnaXZlbiBwYXJhbWV0ZXJzLlxyXG5cdCAqIEZhaWxzIGlmIG5vdCBwYXJhbWV0ZXJpemVkLCBvZiBpZiBwYXNzaW5nIHRvbyBtYW55IHBhcmFtZXRlcnMuXHJcblx0ICovXHJcblx0cHVibGljIGZvbGRBcmdzKGFyZ3M6IGFueSB8IHN0cmluZ1tdKTogUmFkb25SZXRyaWV2YWwge1xyXG5cdFx0aWYgKHRoaXMuYXJnc0NvdW50ID09PSAwKSB7XHJcblx0XHRcdHJldHVybiB0aGlzOyAvL3Rocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmV0cmlldmFsOiBjYW5ub3QgZm9sZCB1bnBhcmFtZXRlcml6ZWQgcmV0cmlldmFsYClcclxuXHRcdH1cclxuXHRcdGNvbnN0IHBhcmFtczogc3RyaW5nW10gPSBbXTtcclxuXHRcdGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XHJcblx0XHRcdGlmICgoYXJncyBhcyBhbnlbXSkubGVuZ3RoID4gdGhpcy5hcmdzQ291bnQpIHtcclxuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxyXG5cdFx0XHRcdFx0YFJhZG9uUmV0cmlldmFsOiB0b28gbWF5IGFyZ3MgcGFzc2VkOiAke2FyZ3MubGVuZ3RofSA+ICR7dGhpcy5hcmdzQ291bnR9YCxcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHBhcmFtcy5wdXNoKC4uLihhcmdzIGFzIHN0cmluZ1tdKSk7XHJcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBhcmdzID09PSBcIm9iamVjdFwiKSB7XHJcblx0XHRcdGlmICghdGhpcy5hcmdzS2V5cykge1xyXG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXHJcblx0XHRcdFx0XHRgUmFkb25SZXRyaWV2YWw6IHVuZXhwZWN0ZWQgYXJncyBtYXA6IHVuZGVmaW5lZCBhcmdzIGtleXMuYCxcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuYXJnc0tleXMuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoIWFyZ3Nba2V5XSkge1xyXG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxyXG5cdFx0XHRcdFx0XHRcdGBSYWRvblJldHJpZXZhbDogbWlzc2luZyB2YWx1ZSBmb3IgcGFyYW1ldGVyIFwiJHtrZXl9XCIuYCxcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHBhcmFtcy5wdXNoKGFyZ3Nba2V5XSBhcyBzdHJpbmcpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRwYXJhbXMucHVzaChhcmdzIGFzIHN0cmluZyk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKHtcclxuXHRcdFx0bWV0aG9kOiB0aGlzLm1ldGhvZCxcclxuXHRcdFx0dXJsOiByZXBsYWNlV2lsZGNhcmRzKHRoaXMudXJsLCBwYXJhbXMpLFxyXG5cdFx0XHRib2R5OiByZXBsYWNlV2lsZGNhcmRzKHRoaXMuYm9keSwgcGFyYW1zKSxcclxuXHRcdFx0aGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKFxyXG5cdFx0XHRcdE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycyB8fCB7fSkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtcclxuXHRcdFx0XHRcdHJlcGxhY2VXaWxkY2FyZHMoa2V5LCBwYXJhbXMpLFxyXG5cdFx0XHRcdFx0cmVwbGFjZVdpbGRjYXJkcyh2YWx1ZSwgcGFyYW1zKSxcclxuXHRcdFx0XHRdKSxcclxuXHRcdFx0KSxcclxuXHRcdFx0c2NyaXB0OiB0aGlzLnNjcmlwdD8ucmVwbGFjZVdpbGRjYXJkcyguLi5wYXJhbXMpLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIG9uZSBvciBtb3JlIGNsb25lcyBvZiB0aGlzIHJldHJpZXZhbCwgaW4gd2hpY2ggdGhlIGluZGV4LTAgd2lsZGNhcmRcclxuXHQgKiB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBnaXZlbiB2YWx1ZXMuIEZhaWxzIGlmIHRoZSByZXRyaWV2YWwgaXMgbm90IHBhcmFtZXRlcml6ZWQuXHJcblx0ICovXHJcblx0cHVibGljIHNwYXduUmV0cmlldmFscyguLi52YWx1ZXM6IHN0cmluZ1tdKTogUmFkb25SZXRyaWV2YWxbXSB7XHJcblx0XHRjb25zdCBfc3Bhd25lZDogUmFkb25SZXRyaWV2YWxbXSA9IFtdO1xyXG5cdFx0aWYgKHRoaXMuaXNNb2RhbCgpKSB7XHJcblx0XHRcdHZhbHVlcy5mb3JFYWNoKCh1cmwpID0+IHtcclxuXHRcdFx0XHRfc3Bhd25lZC5wdXNoKFxyXG5cdFx0XHRcdFx0bmV3IFJhZG9uUmV0cmlldmFsKHtcclxuXHRcdFx0XHRcdFx0YXJnc0tleXM6IHRoaXMuYXJnc0tleXMsXHJcblx0XHRcdFx0XHRcdGJvZHk6IHRoaXMuYm9keSxcclxuXHRcdFx0XHRcdFx0aGVhZGVyczogdGhpcy5oZWFkZXJzLFxyXG5cdFx0XHRcdFx0XHRtZXRob2Q6IHRoaXMubWV0aG9kLFxyXG5cdFx0XHRcdFx0XHRzY3JpcHQ6IHRoaXMuc2NyaXB0Py5jbG9uZSgpLFxyXG5cdFx0XHRcdFx0XHR1cmwsXHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICh0aGlzLmFyZ3NDb3VudCA9PT0gMCkge1xyXG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXHJcblx0XHRcdFx0XHRgUmFkb25SZXRyaWV2YWw6IGNhbm5vdCBzcGF3biBmcm9tIHVucGFyYW1ldGVyaXplZCByZXRyaWV2YWxgLFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH1cclxuXHRcdFx0dmFsdWVzLmZvckVhY2goKHZhbHVlKSA9PiB7XHJcblx0XHRcdFx0X3NwYXduZWQucHVzaChcclxuXHRcdFx0XHRcdG5ldyBSYWRvblJldHJpZXZhbCh7XHJcblx0XHRcdFx0XHRcdG1ldGhvZDogdGhpcy5tZXRob2QsXHJcblx0XHRcdFx0XHRcdHVybDogc3BsaWNlV2lsZGNhcmQodGhpcy51cmwsIDAsIHZhbHVlLCB0aGlzLmFyZ3NDb3VudCksXHJcblx0XHRcdFx0XHRcdGJvZHk6IHNwbGljZVdpbGRjYXJkKHRoaXMuYm9keSwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcclxuXHRcdFx0XHRcdFx0aGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKFxyXG5cdFx0XHRcdFx0XHRcdE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycyB8fCB7fSkubWFwKFxyXG5cdFx0XHRcdFx0XHRcdFx0KFtoZWFkZXJLZXksIGhlYWRlclZhbHVlXSkgPT4gW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRzcGxpY2VXaWxkY2FyZChoZWFkZXJLZXksIDAsIHZhbHVlLCB0aGlzLmFyZ3NDb3VudCksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHNwbGljZVdpbGRjYXJkKGhlYWRlclZhbHVlLCAwLCB2YWx1ZSwgdGhpcy5hcmdzQ291bnQpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XSxcclxuXHRcdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0XHRzY3JpcHQ6IHRoaXMuc2NyaXB0Py5zcGxpY2VXaWxkY2FyZCgwLCB2YWx1ZSksXHJcblx0XHRcdFx0XHRcdGFyZ3NLZXlzOiB0aGlzLmFyZ3NLZXlzPy5zbGljZSgxKSxcclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIF9zcGF3bmVkO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHRvSlNPTihodW1hbml6ZT86IGJvb2xlYW4pOiBhbnkge1xyXG5cdFx0Y29uc3Qga2luZCA9IFtcIlwiLCBcIkhUVFAtR0VUXCIsIFwiUk5HXCIsIFwiSFRUUC1QT1NUXCIsIFwiSFRUUC1IRUFEXCJdO1xyXG5cdFx0Y29uc3QganNvbjogYW55ID0ge1xyXG5cdFx0XHRraW5kOiBraW5kW3RoaXMubWV0aG9kXSwgLy8gaHVtYW5pemUgPyBNZXRob2RzW3RoaXMubWV0aG9kXSA6IHRoaXMubWV0aG9kLFxyXG5cdFx0fTtcclxuXHRcdGlmICh0aGlzLnVybCkganNvbi51cmwgPSB0aGlzLnVybDtcclxuXHRcdGlmICh0aGlzLmhlYWRlcnMpIHtcclxuXHRcdFx0anNvbi5oZWFkZXJzID0gT2JqZWN0LmVudHJpZXModGhpcy5oZWFkZXJzKTtcclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLmJvZHkpIHtcclxuXHRcdFx0aWYgKHR5cGVvZiB0aGlzLmJvZHkgPT09IFwic3RyaW5nXCIpIHtcclxuXHRcdFx0XHRqc29uLmJvZHkgPSBodW1hbml6ZSA/IHRoaXMuYm9keSA6IHRvVXRmOEFycmF5KHRoaXMuYm9keSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0anNvbi5ib2R5ID0gdGhpcy5ib2R5O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRqc29uLnNjcmlwdCA9IGh1bWFuaXplXHJcblx0XHRcdD8gdGhpcy5zY3JpcHQ/LnRvU3RyaW5nKClcclxuXHRcdFx0OiBBcnJheS5mcm9tKGZyb21IZXhTdHJpbmcodGhpcy5zY3JpcHQ/LnRvQnl0ZWNvZGUoKSB8fCBcIjB4ODBcIikpO1xyXG5cdFx0cmV0dXJuIGpzb247XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgdG9Qcm90b2J1ZigpOiBhbnkge1xyXG5cdFx0Y29uc3QgcHJvdG9idWY6IGFueSA9IHtcclxuXHRcdFx0a2luZDogdGhpcy5tZXRob2QsXHJcblx0XHR9O1xyXG5cdFx0aWYgKHRoaXMudXJsKSBwcm90b2J1Zi51cmwgPSB0aGlzLnVybDtcclxuXHRcdGlmICh0aGlzLmhlYWRlcnMpIHtcclxuXHRcdFx0cHJvdG9idWYuaGVhZGVycyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycykubWFwKFxyXG5cdFx0XHRcdChbaGVhZGVyS2V5LCBoZWFkZXJWYWx1ZV0pID0+IHtcclxuXHRcdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRcdGxlZnQ6IGhlYWRlcktleSxcclxuXHRcdFx0XHRcdFx0cmlnaHQ6IGhlYWRlclZhbHVlLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuYm9keSkge1xyXG5cdFx0XHRjb25zdCB1dGY4QXJyYXkgPSB0b1V0ZjhBcnJheSh0aGlzLmJvZHkpO1xyXG5cdFx0XHRwcm90b2J1Zi5ib2R5ID0gdXRmOEFycmF5O1xyXG5cdFx0fVxyXG5cdFx0cHJvdG9idWYuc2NyaXB0ID0gT2JqZWN0LnZhbHVlcyhcclxuXHRcdFx0VWludDhBcnJheS5mcm9tKGNib3IuZW5jb2RlKHRoaXMuc2NyaXB0Py5lbmNvZGUoKSB8fCBbXSkpLFxyXG5cdFx0KTtcclxuXHRcdHJldHVybiBwcm90b2J1ZjtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBvcHNDb3VudCgpOiBhbnkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2NvdW50T3BzKHRoaXMuc2NyaXB0Py5lbmNvZGUoKSB8fCBbXSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgX2NvdW50T3BzKGl0ZW1zOiBhbnlbXSk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gaXRlbXMubGVuZ3RoID4gMFxyXG5cdFx0XHQ/IGl0ZW1zXHJcblx0XHRcdFx0XHQubWFwKChpdGVtKSA9PiAoQXJyYXkuaXNBcnJheShpdGVtKSA/IHRoaXMuX2NvdW50T3BzKGl0ZW0pIDogMSkpXHJcblx0XHRcdFx0XHQucmVkdWNlKChzdW0sIGEpID0+IHN1bSArIGEpXHJcblx0XHRcdDogMDtcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBuYW1lc3BhY2UgZmlsdGVycyB7XHJcblx0ZXhwb3J0IGNvbnN0IE9wY29kZXMgPSBGaWx0ZXJzO1xyXG5cdGV4cG9ydCBjb25zdCBDbGFzcyA9IFJhZG9uRmlsdGVyO1xyXG5cdGV4cG9ydCBmdW5jdGlvbiBNb2RlKCkge1xyXG5cdFx0cmV0dXJuIG5ldyBSYWRvbkZpbHRlcihGaWx0ZXJzLk1vZGUpO1xyXG5cdH1cclxuXHRleHBvcnQgZnVuY3Rpb24gU3RkZXYoc3RkZXY6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIG5ldyBSYWRvbkZpbHRlcihGaWx0ZXJzLlN0YW5kYXJkRGV2aWF0aW9uLCBzdGRldik7XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgbmFtZXNwYWNlIHJlZHVjZXJzIHtcclxuXHRleHBvcnQgY29uc3QgT3Bjb2RlcyA9IFJlZHVjZXJzO1xyXG5cdGV4cG9ydCBjb25zdCBDbGFzcyA9IFJhZG9uUmVkdWNlcjtcclxuXHRleHBvcnQgZnVuY3Rpb24gTW9kZSguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7XHJcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5Nb2RlLCBmaWx0ZXJzKTtcclxuXHR9XHJcblx0ZXhwb3J0IGZ1bmN0aW9uIE1lYW4oLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xyXG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVhbkF2ZXJhZ2UsIGZpbHRlcnMpO1xyXG5cdH1cclxuXHRleHBvcnQgZnVuY3Rpb24gTWVkaWFuKC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHtcclxuXHRcdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1lZGlhbkF2ZXJhZ2UsIGZpbHRlcnMpO1xyXG5cdH1cclxuXHRleHBvcnQgZnVuY3Rpb24gU3RkZXYoLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xyXG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuU3RhbmRhcmREZXZpYXRpb24sIGZpbHRlcnMpO1xyXG5cdH1cclxuXHRleHBvcnQgZnVuY3Rpb24gQ29uY2F0SGFzaCguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7XHJcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5Db25jYXRlbmF0ZUFuZEhhc2gsIGZpbHRlcnMpO1xyXG5cdH1cclxuXHJcblx0ZXhwb3J0IGZ1bmN0aW9uIFByaWNlQWdncmVnYXRlKCkge1xyXG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVhbkF2ZXJhZ2UsIFtmaWx0ZXJzLlN0ZGV2KDEuNCldKTtcclxuXHR9XHJcblx0ZXhwb3J0IGZ1bmN0aW9uIFByaWNlVGFsbHkoKSB7XHJcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5NZWFuQXZlcmFnZSwgW2ZpbHRlcnMuU3RkZXYoMi41KV0pO1xyXG5cdH1cclxufVxyXG5cclxuaW1wb3J0ICogYXMgY2NkciBmcm9tIFwiLi9jY2RyL2luZGV4LmpzXCI7XHJcbmV4cG9ydCBuYW1lc3BhY2UgcmV0cmlldmFscyB7XHJcblx0ZXhwb3J0IGNvbnN0IHJwYyA9IGNjZHI7XHJcblxyXG5cdGV4cG9ydCBmdW5jdGlvbiBmcm9tUmFkb25Bc3NldHMoXHJcblx0XHRhc3NldHM6IE9iamVjdCxcclxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSYWRvblJldHJpZXZhbD4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm94eShhc3NldHMsIHByb3h5SGFuZGxlcihSYWRvblJldHJpZXZhbCkpO1xyXG5cdH1cclxuXHJcblx0ZXhwb3J0IGVudW0gTWV0aG9kcyB7XHJcblx0XHROb25lID0gMHgwLFxyXG5cdFx0SHR0cEdldCA9IDB4MDEsXHJcblx0XHRIdHRwSGVhZCA9IDB4MDQsXHJcblx0XHRIdHRwUG9zdCA9IDB4MDMsXHJcblx0XHRSTkcgPSAweDAyLFxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhIFdpdG5ldCByYW5kb21uZXNzIGRhdGEgc291cmNlIG9iamVjdC5cclxuXHQgKiBAcGFyYW0gc2NyaXB0IChPcHRpb25hbCkgUmFkb24gU2NyaXB0IHRvIGFwcGx5IHRvIHRoZSByYW5kb20gc2VlZCBwcm9wb3NlZCBieSBldmVyeSBzaW5nbGUgd2l0bmVzcyxcclxuXHQgKiBiZWZvcmUgYWdncmVnYXRpb24uXHJcblx0ICoqL1xyXG5cdGV4cG9ydCBmdW5jdGlvbiBSTkcoc2NyaXB0PzogUmFkb25BbnkpIHtcclxuXHRcdGNvbnN0IHJldHJpZXZhbCA9IG5ldyBSYWRvblJldHJpZXZhbCh7IG1ldGhvZDogTWV0aG9kcy5STkcsIHNjcmlwdCB9KTtcclxuXHRcdGlmIChcclxuXHRcdFx0cmV0cmlldmFsPy5zY3JpcHQgJiZcclxuXHRcdFx0cmV0cmlldmFsPy5zY3JpcHQ/LmlucHV0VHlwZT8uY29uc3RydWN0b3IubmFtZSAhPT0gXCJSYWRvbkJ5dGVzXCJcclxuXHRcdCkge1xyXG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFwiUk5HIHNjcmlwdHMgcmVxdWlyZSBbUmFkb25CeXRlc10gYXMgaW5wdXQgdHlwZVwiKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiByZXRyaWV2YWw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGEgSFRUUC9HRVQgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcblx0ICoqL1xyXG5cdGV4cG9ydCBmdW5jdGlvbiBIdHRwR2V0KHNwZWNzOiB7XHJcblx0XHQvKipcclxuXHRcdCAqIEhUVFAgcmVxdWVzdCBVUkwuXHJcblx0XHQgKi9cclxuXHRcdHVybD86IHN0cmluZztcclxuXHRcdC8qKlxyXG5cdFx0ICogSFRUUCByZXF1ZXN0IGhlYWRlcnMuXHJcblx0XHQgKi9cclxuXHRcdGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG5cdFx0LyoqXHJcblx0XHQgKiBSYWRvblNjcmlwdCBmb3IgcHJvY2Vzc2luZyByZXR1cm5lZCB2YWx1ZS5cclxuXHRcdCAqL1xyXG5cdFx0c2NyaXB0PzogUmFkb25Bbnk7XHJcblx0XHQvKipcclxuXHRcdCAqIE5hbWVzIG9mIGluZGV4ZWQgcGFyYW1ldGVycyAob3B0aW9uYWwsIGlmIGFueSkuXHJcblx0XHQgKi9cclxuXHRcdGFyZ3NLZXlzPzogc3RyaW5nW107XHJcblx0XHQvKipcclxuXHRcdCAqIE1hcCBvZiBwcmUtc2V0IHBhcmFtZXRlcnMgKG9uIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscywgb25seSkuXHJcblx0XHQgKi9cclxuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XHJcblx0fSkge1xyXG5cdFx0cmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbChcclxuXHRcdFx0e1xyXG5cdFx0XHRcdG1ldGhvZDogTWV0aG9kcy5IdHRwR2V0LFxyXG5cdFx0XHRcdHVybDogc3BlY3M/LnVybCxcclxuXHRcdFx0XHRoZWFkZXJzOiBzcGVjcz8uaGVhZGVycyxcclxuXHRcdFx0XHRzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXHJcblx0XHRcdFx0YXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcclxuXHRcdFx0fSxcclxuXHRcdFx0c3BlY3M/LnNhbXBsZXMsXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhIEhUVFAvSEVBRCBkYXRhIHJldHJpZXZhbCBvYmplY3QuXHJcblx0ICogQHBhcmFtIHNwZWNzIFJhZG9uIFJldHJpZXZhbCBzcGVjcy5cclxuXHQgKiovXHJcblx0ZXhwb3J0IGZ1bmN0aW9uIEh0dHBIZWFkKHNwZWNzOiB7XHJcblx0XHQvKipcclxuXHRcdCAqIEhUVFAgcmVxdWVzdCBVUkxcclxuXHRcdCAqL1xyXG5cdFx0dXJsPzogc3RyaW5nO1xyXG5cdFx0LyoqXHJcblx0XHQgKiBIVFRQIHJlcXVlc3QgaGVhZGVyc1xyXG5cdFx0ICovXHJcblx0XHRoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuXHRcdC8qKlxyXG5cdFx0ICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG5cdFx0ICovXHJcblx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcclxuXHRcdC8qKlxyXG5cdFx0ICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG5cdFx0ICovXHJcblx0XHRhcmdzS2V5cz86IHN0cmluZ1tdO1xyXG5cdFx0LyoqXHJcblx0XHQgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG5cdFx0ICovXHJcblx0XHRzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xyXG5cdH0pIHtcclxuXHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXHJcblx0XHRcdHtcclxuXHRcdFx0XHRtZXRob2Q6IE1ldGhvZHMuSHR0cEhlYWQsXHJcblx0XHRcdFx0dXJsOiBzcGVjcz8udXJsLFxyXG5cdFx0XHRcdGhlYWRlcnM6IHNwZWNzPy5oZWFkZXJzLFxyXG5cdFx0XHRcdHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcclxuXHRcdFx0XHRhcmdzS2V5czogc3BlY3M/LmFyZ3NLZXlzLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzcGVjcz8uc2FtcGxlcyxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGEgSFRUUC9QT1NUIGRhdGEgcmV0cmlldmFsIG9iamVjdC5cclxuXHQgKiBAcGFyYW0gc3BlY3MgUmFkb24gUmV0cmlldmFsIHNwZWNzLlxyXG5cdCAqKi9cclxuXHRleHBvcnQgZnVuY3Rpb24gSHR0cFBvc3Qoc3BlY3M6IHtcclxuXHRcdC8qKlxyXG5cdFx0ICogSFRUUCByZXF1ZXN0IFVSTFxyXG5cdFx0ICovXHJcblx0XHR1cmw/OiBzdHJpbmc7XHJcblx0XHQvKipcclxuXHRcdCAqIEhUVFAgcmVxdWVzdCBib2R5XHJcblx0XHQgKi9cclxuXHRcdGJvZHk/OiBzdHJpbmc7XHJcblx0XHQvKipcclxuXHRcdCAqIEhUVFAgcmVxdWVzdCBoZWFkZXJzXHJcblx0XHQgKi9cclxuXHRcdGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG5cdFx0LyoqXHJcblx0XHQgKiBSYWRvbiBzY3JpcHQgZm9yIHByb2Nlc3NpbmcgcmV0dXJuZWQgdmFsdWUuXHJcblx0XHQgKi9cclxuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xyXG5cdFx0LyoqXHJcblx0XHQgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpXHJcblx0XHQgKi9cclxuXHRcdGFyZ3NLZXlzPzogc3RyaW5nW107XHJcblx0XHQvKipcclxuXHRcdCAqIE1hcCBvZiBwcmUtc2V0IHBhcmFtZXRlcnMgKG9uIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscywgb25seSkuXHJcblx0XHQgKi9cclxuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XHJcblx0fSkge1xyXG5cdFx0cmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbChcclxuXHRcdFx0e1xyXG5cdFx0XHRcdG1ldGhvZDogTWV0aG9kcy5IdHRwUG9zdCxcclxuXHRcdFx0XHR1cmw6IHNwZWNzPy51cmwsXHJcblx0XHRcdFx0aGVhZGVyczogc3BlY3M/LmhlYWRlcnMsXHJcblx0XHRcdFx0Ym9keTogc3BlY3M/LmJvZHksXHJcblx0XHRcdFx0c2NyaXB0OiBzcGVjcz8uc2NyaXB0LFxyXG5cdFx0XHRcdGFyZ3NLZXlzOiBzcGVjcz8uYXJnc0tleXMsXHJcblx0XHRcdH0sXHJcblx0XHRcdHNwZWNzPy5zYW1wbGVzLFxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBHcmFwaFFMLXF1ZXJ5IGRhdGEgc291cmNlIG9iamVjdC5cclxuXHQgKiBAcGFyYW0gc3BlY3MgUmFkb24gUmV0cmlldmFsIHNwZWNzLlxyXG5cdCAqKi9cclxuXHRleHBvcnQgZnVuY3Rpb24gR3JhcGhRTFF1ZXJ5KHNwZWNzOiB7XHJcblx0XHQvKipcclxuXHRcdCAqIEdyYXBoUUwgVVJMIGVuZHBvaW50XHJcblx0XHQgKi9cclxuXHRcdHVybD86IHN0cmluZztcclxuXHRcdC8qKlxyXG5cdFx0ICogR3JhcGhRTCBxdWVyeVxyXG5cdFx0ICovXHJcblx0XHRxdWVyeTogc3RyaW5nO1xyXG5cdFx0LyoqXHJcblx0XHQgKiBSYWRvbiBzY3JpcHQgZm9yIHByb2Nlc3NpbmcgcmV0dXJuZWQgdmFsdWUuXHJcblx0XHQgKi9cclxuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xyXG5cdFx0LyoqXHJcblx0XHQgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpXHJcblx0XHQgKi9cclxuXHRcdGFyZ3NLZXlzPzogc3RyaW5nW107XHJcblx0XHQvKipcclxuXHRcdCAqIE1hcCBvZiBwcmUtc2V0IHBhcmFtZXRlcnMgKG9uIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscywgb25seSkuXHJcblx0XHQgKi9cclxuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XHJcblx0fSkge1xyXG5cdFx0cmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbChcclxuXHRcdFx0e1xyXG5cdFx0XHRcdG1ldGhvZDogTWV0aG9kcy5IdHRwUG9zdCxcclxuXHRcdFx0XHR1cmw6IHNwZWNzLnVybCxcclxuXHRcdFx0XHRib2R5OiBge1wicXVlcnlcIjpcIiR7Z3JhcGhRbENvbXByZXNzKHNwZWNzLnF1ZXJ5KS5yZXBsYWNlQWxsKCdcIicsICdcXFxcXCInKX1cIn1gLFxyXG5cdFx0XHRcdGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcIiB9LFxyXG5cdFx0XHRcdHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcclxuXHRcdFx0XHRhcmdzS2V5czogc3BlY3M/LmFyZ3NLZXlzLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzcGVjcz8uc2FtcGxlcyxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGEgSlNPTi1SUEMgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXHJcblx0ICoqL1xyXG5cdGV4cG9ydCBmdW5jdGlvbiBKc29uUlBDKHNwZWNzOiB7XHJcblx0XHQvKipcclxuXHRcdCAqIEpTT04tUlBDIG1ldGhvZCBhbmQgcGFyYW1ldGVycy5cclxuXHRcdCAqL1xyXG5cdFx0cnBjOiB7IG1ldGhvZDogc3RyaW5nOyBwYXJhbXM/OiBhbnkgfTtcclxuXHRcdC8qKlxyXG5cdFx0ICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxyXG5cdFx0ICovXHJcblx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcclxuXHRcdC8qKlxyXG5cdFx0ICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxyXG5cdFx0ICovXHJcblx0XHRhcmdzS2V5cz86IHN0cmluZ1tdO1xyXG5cdFx0LyoqXHJcblx0XHQgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxyXG5cdFx0ICovXHJcblx0XHRzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xyXG5cdH0pIHtcclxuXHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXHJcblx0XHRcdHtcclxuXHRcdFx0XHRtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwUG9zdCxcclxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRqc29ucnBjOiBcIjIuMFwiLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiBzcGVjcy5ycGMubWV0aG9kLFxyXG5cdFx0XHRcdFx0cGFyYW1zOiBzcGVjcy5ycGM/LnBhcmFtcyxcclxuXHRcdFx0XHRcdGlkOiAxLFxyXG5cdFx0XHRcdH0pLnJlcGxhY2VBbGwoXCJcXFxcXFxcXFwiLCBcIlxcXFxcIiksXHJcblx0XHRcdFx0aGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOFwiIH0sXHJcblx0XHRcdFx0c2NyaXB0OiBzcGVjcz8uc2NyaXB0LFxyXG5cdFx0XHRcdGFyZ3NLZXlzOiBzcGVjcz8uYXJnc0tleXMsXHJcblx0XHRcdH0sXHJcblx0XHRcdHNwZWNzPy5zYW1wbGVzLFxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuZXhwb3J0IG5hbWVzcGFjZSB0eXBlcyB7XHJcblx0ZXhwb3J0IGNvbnN0IFJhZG9uQXJyYXkgPSBfUmFkb25BcnJheTtcclxuXHRleHBvcnQgY29uc3QgUmFkb25Cb29sZWFuID0gX1JhZG9uQm9vbGVhbjtcclxuXHRleHBvcnQgY29uc3QgUmFkb25CeXRlcyA9IF9SYWRvbkJ5dGVzO1xyXG5cdGV4cG9ydCBjb25zdCBSYWRvbkZsb2F0ID0gX1JhZG9uRmxvYXQ7XHJcblx0ZXhwb3J0IGNvbnN0IFJhZG9uSW50ZWdlciA9IF9SYWRvbkludGVnZXI7XHJcblx0ZXhwb3J0IGNvbnN0IFJhZG9uTWFwID0gX1JhZG9uTWFwO1xyXG5cdGV4cG9ydCBjb25zdCBSYWRvblNjcmlwdCA9IF9SYWRvblNjcmlwdDtcclxuXHRleHBvcnQgY29uc3QgUmFkb25TdHJpbmcgPSBfUmFkb25TdHJpbmc7XHJcblx0ZXhwb3J0IGNvbnN0IFJhZG9uRW5jb2RpbmdzID0gX1JhZG9uRW5jb2RpbmdzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm94eUhhbmRsZXI8VD4odDogeyBuZXcgKHNwZWNzOiBhbnkpOiBUIH0pIHtcclxuXHRyZXR1cm4ge1xyXG5cdFx0Z2V0KHRhcmdldDogYW55LCBwcm9wOiBzdHJpbmcpIHtcclxuXHRcdFx0Y29uc3QgZm91bmQgPSB0YXJnZXRbcHJvcF0gPz8gZmluZEtleUluT2JqZWN0KHRhcmdldCwgcHJvcCk7XHJcblx0XHRcdC8vIGlmICghZm91bmQpIHtcclxuXHRcdFx0Ly8gICAgIHRocm93IEV2YWxFcnJvcihgWycke3Byb3B9J10gd2FzIG5vdCBmb3VuZCBpbiBkaWN0aW9uYXJ5YClcclxuXHRcdFx0Ly8gfSBlbHNlXHJcblx0XHRcdGlmIChmb3VuZCAmJiAhKGZvdW5kIGluc3RhbmNlb2YgdCkpIHtcclxuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXHJcblx0XHRcdFx0XHRgWycke3Byb3B9J10gd2FzIGZvdW5kIHdpdGggdHlwZSAke2ZvdW5kPy5jb25zdHJ1Y3Rvcj8ubmFtZX0gaW5zdGVhZCBvZiAke3QubmFtZX0hYCxcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBmb3VuZDtcclxuXHRcdH0sXHJcblx0fTtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZEtleUluT2JqZWN0KGRpY3Q6IGFueSwgdGFnOiBzdHJpbmcpIHtcclxuXHRmb3IgKGNvbnN0IGtleSBpbiBkaWN0KSB7XHJcblx0XHRpZiAodHlwZW9mIGRpY3Rba2V5XSA9PT0gXCJvYmplY3RcIikge1xyXG5cdFx0XHRpZiAoa2V5ID09PSB0YWcpIHtcclxuXHRcdFx0XHRyZXR1cm4gZGljdFtrZXldO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGNvbnN0IGZvdW5kOiBhbnkgPSBmaW5kS2V5SW5PYmplY3QoZGljdFtrZXldLCB0YWcpO1xyXG5cdFx0XHRcdGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
749
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRS9DLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUVsQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsQ0FBQztBQUNyQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUNuQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FDNUMsQ0FBQztBQUNGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFdEQsT0FBTyxFQUNOLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsMkJBQTJCLEVBQzNCLFdBQVcsRUFDWCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEdBQ2QsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxJQUFJLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQ04sVUFBVSxJQUFJLFdBQVcsRUFDekIsWUFBWSxJQUFJLGFBQWEsRUFDN0IsVUFBVSxJQUFJLFdBQVcsRUFDekIsY0FBYyxJQUFJLGVBQWUsRUFDakMsVUFBVSxJQUFJLFdBQVcsRUFDekIsWUFBWSxJQUFJLGFBQWEsRUFDN0IsUUFBUSxJQUFJLFNBQVMsRUFDckIsV0FBVyxJQUFJLFlBQVksRUFDM0IsV0FBVyxJQUFJLFlBQVksR0FJM0IsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSTlDLE1BQU0sYUFBYTtJQUNGLE9BQU8sQ0FBbUI7SUFDMUIsY0FBYyxDQUFlO0lBQzdCLGNBQWMsQ0FBZTtJQUU3QyxZQUFZLEtBSVg7UUFDQSxJQUNDLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDZCxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM3QixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQ3pCLENBQUM7WUFDRixNQUFNLFNBQVMsQ0FDZCx5REFBeUQsQ0FDekQsQ0FBQztRQUNILENBQUM7UUFDRCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMzQyxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxTQUFTLENBQUMsNkJBQTZCLEtBQUssZUFBZSxDQUFDLENBQUM7WUFDcEUsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLFlBQVksY0FBYyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxTQUFTLENBQUMsNkJBQTZCLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sUUFBUTtRQUNkLE9BQU8sQ0FDTixDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ1osRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN6QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLENBQy9CLENBQUM7SUFDSCxDQUFDO0NBQ0Q7QUFFRCxNQUFNLE9BQU8sWUFBYSxTQUFRLGFBQWE7SUFDOUM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBYTtRQUN2QyxJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sSUFBSSxRQUFRLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDM0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQzthQUFNLElBQUksUUFBUSxZQUFZLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNLElBQUksU0FBUyxDQUNsQiw4Q0FBOEMsUUFBUSxFQUFFLENBQ3hELENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQVEsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxPQUFPLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVE7UUFDbEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUNuRCxNQUFNLEtBQUssR0FBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztZQUMzQixDQUFDO1lBQ0QsSUFBSSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDakMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUFDO29CQUMxQyxVQUFVLENBQUMsSUFBSTtvQkFDZixVQUFVLENBQUMsS0FBSztpQkFDaEIsQ0FBQyxDQUNGLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxTQUFTLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxLQUFLLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFDRCxJQUFJLFNBQVMsRUFBRSxNQUFNO2dCQUNwQixLQUFLLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRSxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDOUIsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQy9CLE9BQU8sSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Z0JBQy9ELE9BQU8sSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztRQUNGLE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDdkIsT0FBTztZQUNQLGNBQWMsRUFBRSxJQUFJLFlBQVksQ0FDL0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQ3JCLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FDeEM7WUFDRCxjQUFjLEVBQUUsSUFBSSxZQUFZLENBQy9CLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUNqQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQ3BDO1NBQ0QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksS0FJWDtRQUNBLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUMzQyxDQUFDLENBQUUsS0FBSyxDQUFDLE9BQTRCO1lBQ3JDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQixLQUFLLENBQUM7WUFDTCxPQUFPO1lBQ1AsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtZQUN4RCxjQUFjLEVBQUUsS0FBSyxFQUFFLGNBQWMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO1NBQ3hELENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLE9BQU87YUFDdkIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO2FBQ3ZDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQixNQUFNLFNBQVMsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDRixDQUFDO0lBRVMsT0FBTztRQUNoQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNGLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxLQUFLO1FBQ3RDLE9BQU8sQ0FDTixNQUFNLGlCQUFpQixDQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ2pCLFFBQVEsRUFDUixPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUMxQixDQUNELENBQUMsSUFBSSxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHO1lBQ3ZELENBQUMsQ0FBQyxZQUFZO1lBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVTtnQkFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSTtnQkFDcEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2pCLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sVUFBVTtRQUNoQixPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLDRDQUE0QztJQUNqRixDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQWtCO1FBQy9CLE9BQU87WUFDTixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckUsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUMvQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQzNDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDckMsQ0FBQztJQUNILENBQUM7SUFFTSxVQUFVO1FBQ2hCLE9BQU87WUFDTixjQUFjO1lBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakUsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFO1lBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRTtTQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWixPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Q7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FLdEM7SUFDQSxNQUFNLE9BQU8sR0FBcUIsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELDhCQUE4QjtJQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUMxQyxNQUFNLFNBQVMsR0FBbUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sSUFBSSxHQUFJLEtBQUssQ0FBQyxPQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sU0FBUyxDQUNkLG1EQUFtRCxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sTUFBTSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQ2xHLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNGLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLElBQUksWUFBWSxDQUFDO1FBQ3ZCLE9BQU87UUFDUCxjQUFjLEVBQUUsS0FBSyxFQUFFLGNBQWM7UUFDckMsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjO0tBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUV6QixTQUFtRDtJQUNwRCxJQUFJLENBQUMsU0FBUztRQUNiLE1BQU0sU0FBUyxDQUNkLDRFQUE0RSxDQUM1RSxDQUFDO0lBQ0gsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sYUFBYyxTQUFRLGFBQWE7SUFDckMsVUFBVSxDQUFTO0lBRWIsV0FBVyxDQUFVO0lBQ3JCLE9BQU8sQ0FBd0I7SUFFL0MsWUFDQyxLQUlDLEVBQ0QsT0FBOEI7UUFFOUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzNDLENBQUMsQ0FBRSxLQUFLLENBQUMsT0FBNEI7WUFDckMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25CLEtBQUssQ0FBQztZQUNMLE9BQU87WUFDUCxjQUFjLEVBQUUsS0FBSyxFQUFFLGNBQWMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ3hELGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7U0FDeEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPO2FBQ3ZCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzthQUN4QyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxTQUFTLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQy9CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQ3RELENBQUM7UUFDRixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxVQUFVLEdBQVMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNwQyxVQUFVLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztnQkFDRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ25DLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDakUsVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEMsQ0FBQzt5QkFBTSxJQUFJLFVBQVUsRUFBRSxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNsRCxNQUFNLFNBQVMsQ0FDZCxnREFBZ0QsTUFBTSxNQUFNLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixPQUFPLENBQUMsTUFBTSxXQUFXLENBQzdILENBQUM7b0JBQ0gsQ0FBQztvQkFDRCxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO3dCQUN0QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDOzRCQUMvQyxNQUFNLFNBQVMsQ0FDZCx5RUFBeUUsTUFBTSxxQ0FBcUMsS0FBSyxlQUFlLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxrQkFBa0IsQ0FDMU4sQ0FBQzt3QkFDSCxDQUFDO29CQUNGLENBQUMsQ0FBQyxDQUFDO2dCQUNKLENBQUM7WUFDRixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLENBQUM7SUFDRixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN4QixDQUFDO0lBRU0saUJBQWlCLENBQ3ZCLElBQXlDO1FBRXpDLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsa0RBQWtEO1lBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLE1BQU0sSUFBSSxTQUFTLENBQ2xCLDhEQUE4RCxJQUFJLENBQUMsTUFBTSxPQUFPLENBQ2hGLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsRSxNQUFNLElBQUksU0FBUyxDQUNsQiwrQ0FBK0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxXQUFXLElBQUksQ0FBQyxNQUFNLGNBQWMsQ0FDL0csQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN0QyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pFLE1BQU0sSUFBSSxTQUFTLENBQ2xCLHdDQUF3QyxJQUFJLENBQUMsTUFBTSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQy9FLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pDLElBQ0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFCLFNBQVMsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFDekMsQ0FBQztvQkFDRixNQUFNLElBQUksU0FBUyxDQUNsQiw2QkFBNkIsS0FBSyxHQUFHLENBQUMsNkJBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUNiLE9BQU8sU0FBUyxDQUFDLFNBQVMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDL0MsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDdkIsT0FBTztZQUNQLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDbkMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNEO0FBRUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxhQUFhO0lBQ2xDLFVBQVUsQ0FBZ0I7SUFFcEMsWUFBWSxLQUtYO1FBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFNBQVMsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxLQUFLLENBQ0o7WUFDQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzFCLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDeEQsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtTQUN4RCxFQUNELEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUN4QixDQUFDO1FBQ0YsSUFBSSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDRixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ25CLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDbkMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDaEUsQ0FBQztRQUNGLE9BQU8sbUJBQW1CLEdBQUcsQ0FBQztZQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDO1lBQ2hELENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLFNBQVMsQ0FBQyxTQUF3QjtRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQXFCO1FBQzdDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sUUFBUSxDQUFDLFdBQVc7WUFDMUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDbEMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDMUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUNqRSxDQUFDO0lBQ0wsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFNBQXlCO1FBQ2xELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoQixTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQzthQUFNLENBQUM7WUFDUCxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxTQUFTLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLGFBQWEsQ0FBQztZQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDdEQsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztTQUNuQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUFDLFNBQXdCO1FBQ3ZDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM5QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNyRSxNQUFNLFNBQVMsQ0FBQyxpQ0FBaUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM5RCxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFNBQVMsQ0FBQztJQUNsQixDQUFDO0NBQ0Q7QUFFRCxNQUFNLE9BQU8sY0FBYztJQUNWLFFBQVEsQ0FBaUI7SUFDekIsU0FBUyxDQUFTO0lBQ2xCLE1BQU0sQ0FBcUI7SUFDM0IsU0FBUyxDQUFVO0lBQ25CLElBQUksQ0FBTztJQUNYLE9BQU8sQ0FBMEI7SUFDakMsSUFBSSxDQUFVO0lBQ2QsS0FBSyxDQUFVO0lBQ2YsTUFBTSxDQUFVO0lBQ2hCLE1BQU0sQ0FBZ0I7SUFDdEIsR0FBRyxDQUFVO0lBRWIsT0FBTyxDQUE0QjtJQUVuRCxZQUNDLEtBT0MsRUFDRCxPQUFrQztRQUVsQyxJQUNDLEtBQUssQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHO1lBQ3ZDLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQ2xELENBQUM7WUFDRixNQUFNLFNBQVMsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1lBQ2xFLHlGQUF5RjtZQUN6RixnRUFBZ0U7UUFDakUsQ0FBQzthQUFNLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkUsTUFBTSxTQUFTLENBQ2QsOERBQThELENBQzlELENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUM7b0JBQ0osTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7d0JBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7d0JBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7d0JBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7Z0JBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQztZQUNYLENBQUM7UUFDRixDQUFDO2FBQU0sSUFDTixLQUFLLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTztZQUMzQyxLQUFLLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUM1QyxLQUFLLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUMzQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN2RSxNQUFNLElBQUksU0FBUyxDQUNsQixxRUFBcUUsQ0FDckUsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxPQUFPLENBQUM7UUFDL0IsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQztRQUN4QixJQUFJLEtBQUssRUFBRSxNQUFNO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUN4QiwyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ3RDLDJCQUEyQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFDdkMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNoRCwyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FDaEMsSUFBSSxFQUFFLENBQUMsRUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3BELDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUNsQyxJQUFJLEVBQUUsQ0FBQyxFQUNSLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUM3QixDQUFDO1FBQ0YsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksU0FBUyxDQUNsQixnRUFBZ0UsQ0FDaEUsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sSUFBSSxTQUFTLENBQ2xCLGlFQUFpRSxDQUNqRSxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDckQsTUFBTSxJQUFJLFNBQVMsQ0FDbEIsdURBQXVELEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FDbkcsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDaEMsQ0FBQztJQUNGLENBQUM7SUFFTSxPQUFPO1FBQ2IsT0FBTyxDQUNOLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHO1lBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLENBQ25DLENBQUM7SUFDSCxDQUFDO0lBRU0sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxRQUFRLENBQUMsSUFBb0I7UUFDbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLENBQUMsOEVBQThFO1FBQzVGLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSyxJQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxJQUFJLFNBQVMsQ0FDbEIsd0NBQXdDLElBQUksQ0FBQyxNQUFNLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUN6RSxDQUFDO1lBQ0gsQ0FBQztZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBSSxJQUFpQixDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxJQUFJLFNBQVMsQ0FDbEIsMkRBQTJELENBQzNELENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNoQixNQUFNLElBQUksU0FBUyxDQUNsQixnREFBZ0QsR0FBRyxJQUFJLENBQ3ZELENBQUM7b0JBQ0gsQ0FBQztvQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVcsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsQ0FBQztZQUNKLENBQUM7UUFDRixDQUFDO2FBQU0sQ0FBQztZQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBYyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQU8sSUFBSSxjQUFjLENBQUM7WUFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztZQUN2QyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7WUFDekMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3hELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7Z0JBQzdCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7YUFDL0IsQ0FBQyxDQUNGO1lBQ0QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDaEQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxHQUFHLE1BQWdCO1FBQ3pDLE1BQU0sUUFBUSxHQUFxQixFQUFFLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQ1osSUFBSSxjQUFjLENBQUM7b0JBQ2xCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7b0JBQzVCLEdBQUc7aUJBQ0gsQ0FBQyxDQUNGLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLElBQUksU0FBUyxDQUNsQiw2REFBNkQsQ0FDN0QsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3hCLFFBQVEsQ0FBQyxJQUFJLENBQ1osSUFBSSxjQUFjLENBQUM7b0JBQ2xCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsR0FBRyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDdkQsSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDekQsT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQ3JDLENBQUMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUM3QixjQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDbkQsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7cUJBQ3JELENBQ0QsQ0FDRDtvQkFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztvQkFDN0MsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDakMsQ0FBQyxDQUNGLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNqQixDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQWtCO1FBQy9CLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sSUFBSSxHQUFRO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGlEQUFpRDtTQUMxRSxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsR0FBRztZQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLENBQUM7UUFDRixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRO1lBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtZQUN6QixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVNLFVBQVU7UUFDaEIsTUFBTSxRQUFRLEdBQVE7WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ2pCLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxHQUFHO1lBQUUsUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLFFBQVEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUNsRCxDQUFDLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVCLE9BQU87b0JBQ04sSUFBSSxFQUFFLFNBQVM7b0JBQ2YsS0FBSyxFQUFFLFdBQVc7aUJBQ2xCLENBQUM7WUFDSCxDQUFDLENBQ0QsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsUUFBUSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDM0IsQ0FBQztRQUNELFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDekQsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxRQUFRO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVTLFNBQVMsQ0FBQyxLQUFZO1FBQy9CLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxLQUFLO2lCQUNKLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDL0QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNEO0FBRUQsTUFBTSxLQUFXLE9BQU8sQ0FTdkI7QUFURCxXQUFpQixPQUFPO0lBQ1YsZUFBTyxHQUFHLE9BQU8sQ0FBQztJQUNsQixhQUFLLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLFNBQWdCLElBQUk7UUFDbkIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUZlLFlBQUksT0FFbkIsQ0FBQTtJQUNELFNBQWdCLEtBQUssQ0FBQyxLQUFhO1FBQ2xDLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFGZSxhQUFLLFFBRXBCLENBQUE7QUFDRixDQUFDLEVBVGdCLE9BQU8sS0FBUCxPQUFPLFFBU3ZCO0FBRUQsTUFBTSxLQUFXLFFBQVEsQ0F5QnhCO0FBekJELFdBQWlCLFFBQVE7SUFDWCxnQkFBTyxHQUFHLFFBQVEsQ0FBQztJQUNuQixjQUFLLEdBQUcsWUFBWSxDQUFDO0lBQ2xDLFNBQWdCLElBQUksQ0FBQyxHQUFHLE9BQXNCO1FBQzdDLE9BQU8sSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRmUsYUFBSSxPQUVuQixDQUFBO0lBQ0QsU0FBZ0IsSUFBSSxDQUFDLEdBQUcsT0FBc0I7UUFDN0MsT0FBTyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFGZSxhQUFJLE9BRW5CLENBQUE7SUFDRCxTQUFnQixNQUFNLENBQUMsR0FBRyxPQUFzQjtRQUMvQyxPQUFPLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUZlLGVBQU0sU0FFckIsQ0FBQTtJQUNELFNBQWdCLEtBQUssQ0FBQyxHQUFHLE9BQXNCO1FBQzlDLE9BQU8sSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFGZSxjQUFLLFFBRXBCLENBQUE7SUFDRCxTQUFnQixVQUFVLENBQUMsR0FBRyxPQUFzQjtRQUNuRCxPQUFPLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRmUsbUJBQVUsYUFFekIsQ0FBQTtJQUVELFNBQWdCLGNBQWM7UUFDN0IsT0FBTyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUZlLHVCQUFjLGlCQUU3QixDQUFBO0lBQ0QsU0FBZ0IsVUFBVTtRQUN6QixPQUFPLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRmUsbUJBQVUsYUFFekIsQ0FBQTtBQUNGLENBQUMsRUF6QmdCLFFBQVEsS0FBUixRQUFRLFFBeUJ4QjtBQUVELE9BQU8sS0FBSyxJQUFJLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsTUFBTSxLQUFXLFVBQVUsQ0FxTzFCO0FBck9ELFdBQWlCLFVBQVU7SUFDYixjQUFHLEdBQUcsSUFBSSxDQUFDO0lBRXhCLFNBQWdCLGVBQWUsQ0FDOUIsTUFBYztRQUVkLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFKZSwwQkFBZSxrQkFJOUIsQ0FBQTtJQUVELElBQVksT0FNWDtJQU5ELFdBQVksT0FBTztRQUNsQixxQ0FBVSxDQUFBO1FBQ1YsMkNBQWMsQ0FBQTtRQUNkLDZDQUFlLENBQUE7UUFDZiw2Q0FBZSxDQUFBO1FBQ2YsbUNBQVUsQ0FBQTtJQUNYLENBQUMsRUFOVyxPQUFPLEdBQVAsa0JBQU8sS0FBUCxrQkFBTyxRQU1sQjtJQUVEOzs7O1FBSUk7SUFDSixTQUFnQixHQUFHLENBQUMsTUFBaUI7UUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLElBQ0MsU0FBUyxFQUFFLE1BQU07WUFDakIsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQzlELENBQUM7WUFDRixNQUFNLElBQUksU0FBUyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7SUFUZSxjQUFHLE1BU2xCLENBQUE7SUFFRDs7O1FBR0k7SUFDSixTQUFnQixPQUFPLENBQUMsS0FxQnZCO1FBQ0EsT0FBTyxJQUFJLGNBQWMsQ0FDeEI7WUFDQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDdkIsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHO1lBQ2YsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPO1lBQ3ZCLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTTtZQUNyQixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7U0FDekIsRUFDRCxLQUFLLEVBQUUsT0FBTyxDQUNkLENBQUM7SUFDSCxDQUFDO0lBaENlLGtCQUFPLFVBZ0N0QixDQUFBO0lBRUQ7OztRQUdJO0lBQ0osU0FBZ0IsUUFBUSxDQUFDLEtBcUJ4QjtRQUNBLE9BQU8sSUFBSSxjQUFjLENBQ3hCO1lBQ0MsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQ3hCLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRztZQUNmLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTztZQUN2QixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDckIsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO1NBQ3pCLEVBQ0QsS0FBSyxFQUFFLE9BQU8sQ0FDZCxDQUFDO0lBQ0gsQ0FBQztJQWhDZSxtQkFBUSxXQWdDdkIsQ0FBQTtJQUVEOzs7UUFHSTtJQUNKLFNBQWdCLFFBQVEsQ0FBQyxLQXlCeEI7UUFDQSxPQUFPLElBQUksY0FBYyxDQUN4QjtZQUNDLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUTtZQUN4QixHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUc7WUFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdkIsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJO1lBQ2pCLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTTtZQUNyQixRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVE7U0FDekIsRUFDRCxLQUFLLEVBQUUsT0FBTyxDQUNkLENBQUM7SUFDSCxDQUFDO0lBckNlLG1CQUFRLFdBcUN2QixDQUFBO0lBRUQ7OztRQUdJO0lBQ0osU0FBZ0IsWUFBWSxDQUFDLEtBcUI1QjtRQUNBLE9BQU8sSUFBSSxjQUFjLENBQ3hCO1lBQ0MsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQ3hCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLElBQUksRUFBRSxhQUFhLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSTtZQUMxRSxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsZ0NBQWdDLEVBQUU7WUFDN0QsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNO1lBQ3JCLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtTQUN6QixFQUNELEtBQUssRUFBRSxPQUFPLENBQ2QsQ0FBQztJQUNILENBQUM7SUFqQ2UsdUJBQVksZUFpQzNCLENBQUE7SUFFRDs7O1FBR0k7SUFDSixTQUFnQixPQUFPLENBQUMsS0FpQnZCO1FBQ0EsT0FBTyxJQUFJLGNBQWMsQ0FDeEI7WUFDQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQ25DLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNwQixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNO2dCQUN4QixNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNO2dCQUN6QixFQUFFLEVBQUUsQ0FBQzthQUNMLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztZQUMzQixPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsZ0NBQWdDLEVBQUU7WUFDN0QsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNO1lBQ3JCLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtTQUN6QixFQUNELEtBQUssRUFBRSxPQUFPLENBQ2QsQ0FBQztJQUNILENBQUM7SUFqQ2Usa0JBQU8sVUFpQ3RCLENBQUE7QUFDRixDQUFDLEVBck9nQixVQUFVLEtBQVYsVUFBVSxRQXFPMUI7QUFDRCxNQUFNLEtBQVcsS0FBSyxDQVVyQjtBQVZELFdBQWlCLEtBQUs7SUFDUixnQkFBVSxHQUFHLFdBQVcsQ0FBQztJQUN6QixrQkFBWSxHQUFHLGFBQWEsQ0FBQztJQUM3QixnQkFBVSxHQUFHLFdBQVcsQ0FBQztJQUN6QixnQkFBVSxHQUFHLFdBQVcsQ0FBQztJQUN6QixrQkFBWSxHQUFHLGFBQWEsQ0FBQztJQUM3QixjQUFRLEdBQUcsU0FBUyxDQUFDO0lBQ3JCLGlCQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzNCLGlCQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzNCLG9CQUFjLEdBQUcsZUFBZSxDQUFDO0FBQy9DLENBQUMsRUFWZ0IsS0FBSyxLQUFMLEtBQUssUUFVckI7QUFFRCxTQUFTLFlBQVksQ0FBSSxDQUEwQjtJQUNsRCxPQUFPO1FBQ04sR0FBRyxDQUFDLE1BQVcsRUFBRSxJQUFZO1lBQzVCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVELGdCQUFnQjtZQUNoQixpRUFBaUU7WUFDakUsU0FBUztZQUNULElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxTQUFTLENBQ2QsS0FBSyxJQUFJLDBCQUEwQixLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksZUFBZSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQ25GLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO0tBQ0QsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFTLEVBQUUsR0FBVztJQUM5QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLENBQUM7aUJBQU0sQ0FBQztnQkFDUCxNQUFNLEtBQUssR0FBUSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLEtBQUs7b0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDekIsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDO0FBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCBjYm9yIGZyb20gXCJjYm9yXCI7XG5pbXBvcnQgZ3JhcGhRbENvbXByZXNzIGZyb20gXCJncmFwaHFsLXF1ZXJ5LWNvbXByZXNzXCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmltcG9ydCBwcm90b2J1ZiBmcm9tIFwicHJvdG9idWZqc1wiO1xuXG5jb25zdCB7IFJvb3Q6IFByb3RvUm9vdCB9ID0gcHJvdG9idWY7XG5jb25zdCBwcm90b1Jvb3QgPSBQcm90b1Jvb3QuZnJvbUpTT04oXG5cdHJlcXVpcmUoXCIuLi8uLi8uLi93aXRuZXQvd2l0bmV0LnByb3RvLmpzb25cIiksXG4pO1xuY29uc3QgUkFEUmVxdWVzdCA9IHByb3RvUm9vdC5sb29rdXBUeXBlKFwiUkFEUmVxdWVzdFwiKTtcblxuaW1wb3J0IHtcblx0ZXhlY1JhZG9uQnl0ZWNvZGUsXG5cdGZyb21IZXhTdHJpbmcsXG5cdGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyxcblx0aXNIZXhTdHJpbmcsXG5cdGlzV2lsZGNhcmQsXG5cdHBhcnNlVVJMLFxuXHRyZXBsYWNlV2lsZGNhcmRzLFxuXHRzcGxpY2VXaWxkY2FyZCxcblx0dG9IZXhTdHJpbmcsXG5cdHRvVXRmOEFycmF5LFxuXHR1dGY4QXJyYXlUb1N0cixcbn0gZnJvbSBcIi4uLy4uL2Jpbi9oZWxwZXJzLmpzXCI7XG5cbmltcG9ydCB7IHNoYTI1NiB9IGZyb20gXCIuLi9jcnlwdG8vdXRpbHMuanNcIjtcbmltcG9ydCB7IE9wY29kZXMgYXMgRmlsdGVycywgUmFkb25GaWx0ZXIgfSBmcm9tIFwiLi9maWx0ZXJzLmpzXCI7XG5pbXBvcnQgeyBSYWRvblJlZHVjZXIsIE9wY29kZXMgYXMgUmVkdWNlcnMgfSBmcm9tIFwiLi9yZWR1Y2Vycy5qc1wiO1xuaW1wb3J0IHtcblx0UmFkb25BcnJheSBhcyBfUmFkb25BcnJheSxcblx0UmFkb25Cb29sZWFuIGFzIF9SYWRvbkJvb2xlYW4sXG5cdFJhZG9uQnl0ZXMgYXMgX1JhZG9uQnl0ZXMsXG5cdFJhZG9uRW5jb2RpbmdzIGFzIF9SYWRvbkVuY29kaW5ncyxcblx0UmFkb25GbG9hdCBhcyBfUmFkb25GbG9hdCxcblx0UmFkb25JbnRlZ2VyIGFzIF9SYWRvbkludGVnZXIsXG5cdFJhZG9uTWFwIGFzIF9SYWRvbk1hcCxcblx0UmFkb25TY3JpcHQgYXMgX1JhZG9uU2NyaXB0LFxuXHRSYWRvblN0cmluZyBhcyBfUmFkb25TdHJpbmcsXG5cdHR5cGUgUmFkb25BbnksXG5cdHR5cGUgUmFkb25PcGVyYXRvcixcblx0dHlwZSBSYWRvblN0cmluZyxcbn0gZnJvbSBcIi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IHBhcnNlUmFkb25TY3JpcHQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG50eXBlIEFyZ3MgPSBzdHJpbmdbXSB8IHN0cmluZ1tdW107XG5cbmNsYXNzIFJhZG9uQXJ0aWZhY3Qge1xuXHRwdWJsaWMgcmVhZG9ubHkgc291cmNlczogUmFkb25SZXRyaWV2YWxbXTtcblx0cHVibGljIHJlYWRvbmx5IHNvdXJjZXNSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XG5cdHB1YmxpYyByZWFkb25seSB3aXRuZXNzUmVkdWNlcjogUmFkb25SZWR1Y2VyO1xuXG5cdGNvbnN0cnVjdG9yKHNwZWNzOiB7XG5cdFx0c291cmNlczogUmFkb25SZXRyaWV2YWxbXTtcblx0XHRzb3VyY2VzUmVkdWNlcjogUmFkb25SZWR1Y2VyO1xuXHRcdHdpdG5lc3NSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XG5cdH0pIHtcblx0XHRpZiAoXG5cdFx0XHQhc3BlY3Muc291cmNlcyB8fFxuXHRcdFx0IUFycmF5LmlzQXJyYXkoc3BlY3Muc291cmNlcykgfHxcblx0XHRcdHNwZWNzLnNvdXJjZXMubGVuZ3RoID09PSAwXG5cdFx0KSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXG5cdFx0XHRcdFwiUmFkb25BcnRpZmFjdDogY2Fubm90IGJ1aWxkIGlmIG5vIHJldHJpZXZhbHMgYXJlIHBhc3NlZFwiLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0c3BlY3Muc291cmNlcz8uZm9yRWFjaCgocmV0cmlldmFsLCBpbmRleCkgPT4ge1xuXHRcdFx0aWYgKHJldHJpZXZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihgUmFkb25BcnRpZmFjdDogcmV0cmlldmFsICMke2luZGV4fSBpcyB1bmRlZmluZWRgKTtcblx0XHRcdH0gZWxzZSBpZiAoIShyZXRyaWV2YWwgaW5zdGFuY2VvZiBSYWRvblJldHJpZXZhbCkpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKGBSYWRvbkFydGlmYWN0OiByZXRyaWV2YWwgIyR7aW5kZXh9OiBpbnZhbGlkIHR5cGVgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnNvdXJjZXMgPSBzcGVjcy5zb3VyY2VzO1xuXHRcdHRoaXMuc291cmNlc1JlZHVjZXIgPSBzcGVjcy5zb3VyY2VzUmVkdWNlcjtcblx0XHR0aGlzLndpdG5lc3NSZWR1Y2VyID0gc3BlY3Mud2l0bmVzc1JlZHVjZXI7XG5cdH1cblxuXHRwdWJsaWMgb3BzQ291bnQoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0KHRoaXMuc291cmNlc1xuXHRcdFx0XHQ/Lm1hcCgocmV0cmlldmFsKSA9PiByZXRyaWV2YWwub3BzQ291bnQoKSlcblx0XHRcdFx0LnJlZHVjZSgoc3VtLCBhKSA9PiBzdW0gKyBhKSB8fCAwKSArXG5cdFx0XHR0aGlzLnNvdXJjZXNSZWR1Y2VyPy5vcHNDb3VudCgpICtcblx0XHRcdHRoaXMud2l0bmVzc1JlZHVjZXI/Lm9wc0NvdW50KClcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvblJlcXVlc3QgZXh0ZW5kcyBSYWRvbkFydGlmYWN0IHtcblx0LyoqXG5cdCAqIERlY29kZXMgYSBSYWRvblJlcXVlc3QgYXJ0aWZhY3Qgb3V0IGZyb20gYSBQcm90b2J1Zi1zZXJpYWxpemVkIGJ5dGVjb2RlLlxuXHQgKiBAcGFyYW0gYnl0ZWNvZGUgUmFkb24gcmVxdWVzdCBieXRlY29kZS5cblx0ICogQHJldHVybnMgUmFkb25SZXF1ZXN0IG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZnJvbUJ5dGVjb2RlKGJ5dGVjb2RlOiBhbnkpIHtcblx0XHRsZXQgYnVmZmVyO1xuXHRcdGlmIChpc0hleFN0cmluZyhieXRlY29kZSkpIHtcblx0XHRcdGJ1ZmZlciA9IGZyb21IZXhTdHJpbmcoYnl0ZWNvZGUpO1xuXHRcdH0gZWxzZSBpZiAoYnl0ZWNvZGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG5cdFx0XHRidWZmZXIgPSBCdWZmZXIuZnJvbShieXRlY29kZSk7XG5cdFx0fSBlbHNlIGlmIChieXRlY29kZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuXHRcdFx0YnVmZmVyID0gYnl0ZWNvZGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXG5cdFx0XHRcdGBSYWRvblJlcXVlc3Q6IHVuc3VwcG9ydGVkIGJ5dGVjb2RlIGZvcm1hdDogJHtieXRlY29kZX1gLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0Y29uc3Qgb2JqOiBhbnkgPSBSQURSZXF1ZXN0LmRlY29kZShidWZmZXIpO1xuXHRcdHJldHVybiBSYWRvblJlcXVlc3QuZnJvbVByb3RvYnVmKG9iaik7XG5cdH1cblxuXHQvKipcblx0ICogRGVjb2RlcyBhIFJhZG9uUmVxdWVzdCBhcnRpZmFjdCBvdXQgZnJvbSBhIFByb3RvYnVmIG9iamVjdC5cblx0ICogQHBhcmFtIG9iaiBQcm90b2J1ZiBvYmplY3QuXG5cdCAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZyb21Qcm90b2J1ZihvYmo6IGFueSkge1xuXHRcdGNvbnN0IHNvdXJjZXMgPSBvYmoucmV0cmlldmUubWFwKChyZXRyaWV2YWw6IGFueSkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BlY3M6IGFueSA9IHt9O1xuXHRcdFx0aWYgKHJldHJpZXZhbD8udXJsKSB7XG5cdFx0XHRcdHNwZWNzLnVybCA9IHJldHJpZXZhbC51cmw7XG5cdFx0XHR9XG5cdFx0XHRpZiAocmV0cmlldmFsPy5oZWFkZXJzKSB7XG5cdFx0XHRcdHNwZWNzLmhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRcdFx0cmV0cmlldmFsLmhlYWRlcnMubWFwKChzdHJpbmdQYWlyOiBhbnkpID0+IFtcblx0XHRcdFx0XHRcdHN0cmluZ1BhaXIubGVmdCxcblx0XHRcdFx0XHRcdHN0cmluZ1BhaXIucmlnaHQsXG5cdFx0XHRcdFx0XSksXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocmV0cmlldmFsPy5ib2R5ICYmIHJldHJpZXZhbC5ib2R5Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0c3BlY3MuYm9keSA9IHV0ZjhBcnJheVRvU3RyKE9iamVjdC52YWx1ZXMocmV0cmlldmFsLmJvZHkpKTtcblx0XHRcdH1cblx0XHRcdGlmIChyZXRyaWV2YWw/LnNjcmlwdClcblx0XHRcdFx0c3BlY3Muc2NyaXB0ID0gcGFyc2VSYWRvblNjcmlwdCh0b0hleFN0cmluZyhyZXRyaWV2YWwuc2NyaXB0KSk7XG5cdFx0XHRzcGVjcy5tZXRob2QgPSByZXRyaWV2YWwua2luZDtcblx0XHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoc3BlY3MpO1xuXHRcdH0pO1xuXHRcdGNvbnN0IGRlY29kZUZpbHRlciA9IChmOiBhbnkpID0+IHtcblx0XHRcdGlmIChmPy5hcmdzICYmIGYuYXJncy5sZW5ndGggPiAwKVxuXHRcdFx0XHRyZXR1cm4gbmV3IFJhZG9uRmlsdGVyKGYub3AsIGNib3IuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShmLmFyZ3MpKSk7XG5cdFx0XHRlbHNlIHJldHVybiBuZXcgUmFkb25GaWx0ZXIoZi5vcCk7XG5cdFx0fTtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVxdWVzdCh7XG5cdFx0XHRzb3VyY2VzLFxuXHRcdFx0c291cmNlc1JlZHVjZXI6IG5ldyBSYWRvblJlZHVjZXIoXG5cdFx0XHRcdG9iai5hZ2dyZWdhdGUucmVkdWNlcixcblx0XHRcdFx0b2JqLmFnZ3JlZ2F0ZS5maWx0ZXJzPy5tYXAoZGVjb2RlRmlsdGVyKSxcblx0XHRcdCksXG5cdFx0XHR3aXRuZXNzUmVkdWNlcjogbmV3IFJhZG9uUmVkdWNlcihcblx0XHRcdFx0b2JqLnRhbGx5LnJlZHVjZXIsXG5cdFx0XHRcdG9iai50YWxseS5maWx0ZXJzPy5tYXAoZGVjb2RlRmlsdGVyKSxcblx0XHRcdCksXG5cdFx0fSk7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcihzcGVjczoge1xuXHRcdHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsIHwgUmFkb25SZXRyaWV2YWxbXTtcblx0XHRzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0XHR3aXRuZXNzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0fSkge1xuXHRcdGNvbnN0IHNvdXJjZXMgPSBBcnJheS5pc0FycmF5KHNwZWNzLnNvdXJjZXMpXG5cdFx0XHQ/IChzcGVjcy5zb3VyY2VzIGFzIFJhZG9uUmV0cmlldmFsW10pXG5cdFx0XHQ6IFtzcGVjcy5zb3VyY2VzXTtcblx0XHRzdXBlcih7XG5cdFx0XHRzb3VyY2VzLFxuXHRcdFx0c291cmNlc1JlZHVjZXI6IHNwZWNzPy5zb3VyY2VzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXG5cdFx0XHR3aXRuZXNzUmVkdWNlcjogc3BlY3M/LndpdG5lc3NSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcblx0XHR9KTtcblx0XHRjb25zdCBhcmdzQ291bnQgPSBzb3VyY2VzXG5cdFx0XHQubWFwKChyZXRyaWV2YWwpID0+IHJldHJpZXZhbC5hcmdzQ291bnQpXG5cdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3Vycik7XG5cdFx0aWYgKGFyZ3NDb3VudCA+IDApIHtcblx0XHRcdHRocm93IFR5cGVFcnJvcihcIlJhZG9uUmVxdWVzdDogcGFyYW1ldGVyaXplZCByZXRyaWV2YWxzIHdlcmUgcGFzc2VkXCIpO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBfZW5jb2RlKCk6IEJ1ZmZlciB7XG5cdFx0Y29uc3QgcGF5bG9hZCA9IHRoaXMudG9Qcm90b2J1ZigpO1xuXHRcdGNvbnN0IGVyck1zZyA9IFJBRFJlcXVlc3QudmVyaWZ5KHBheWxvYWQpO1xuXHRcdGlmIChlcnJNc2cpIHtcblx0XHRcdHRocm93IEVycm9yKGVyck1zZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBSQURSZXF1ZXN0LmZyb21PYmplY3QocGF5bG9hZCk7XG5cdFx0XHRyZXR1cm4gQnVmZmVyLmZyb20oUkFEUmVxdWVzdC5lbmNvZGUobWVzc2FnZSkuZmluaXNoKCkpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyBleGVjRHJ5UnVuKHZlcmJvc2UgPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0cmV0dXJuIChcblx0XHRcdGF3YWl0IGV4ZWNSYWRvbkJ5dGVjb2RlKFxuXHRcdFx0XHR0aGlzLnRvQnl0ZWNvZGUoKSxcblx0XHRcdFx0XCItLWpzb25cIixcblx0XHRcdFx0dmVyYm9zZSA/IFwiLS12ZXJib3NlXCIgOiBcIlwiLFxuXHRcdFx0KVxuXHRcdCkudHJpbSgpO1xuXHR9XG5cblx0cHVibGljIGdldCBkYXRhVHlwZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnNvdXJjZXNbMF0ubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuUk5HXG5cdFx0XHQ/IFwiUmFkb25CeXRlc1wiXG5cdFx0XHQ6IHRoaXMuc291cmNlcz8uWzBdPy5zY3JpcHQ/Lm91dHB1dFR5cGVcblx0XHRcdFx0PyB0aGlzLnNvdXJjZXNbMF0uc2NyaXB0Lm91dHB1dFR5cGUuY29uc3RydWN0b3IubmFtZVxuXHRcdFx0XHQ6IFwiUmFkb25BbnlcIjtcblx0fVxuXG5cdHB1YmxpYyBnZXQgcmFkSGFzaCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0b0hleFN0cmluZyhzaGEyNTYodGhpcy5fZW5jb2RlKCkpLCBmYWxzZSk7XG5cdH1cblxuXHRwdWJsaWMgdG9CeXRlY29kZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0b0hleFN0cmluZyh0aGlzLl9lbmNvZGUoKSk7IC8vZW5jb2RlUkFEUmVxdWVzdCh0aGlzLnRvUHJvdG9idWYoKSksIHRydWUpXG5cdH1cblxuXHRwdWJsaWMgdG9KU09OKGh1bWFuaXplPzogYm9vbGVhbik6IGFueSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHJldHJpZXZlOiB0aGlzLnNvdXJjZXMubWFwKChyZXRyaWV2YWwpID0+IHJldHJpZXZhbC50b0pTT04oaHVtYW5pemUpKSxcblx0XHRcdGFnZ3JlZ2F0ZTogdGhpcy5zb3VyY2VzUmVkdWNlci50b0pTT04oaHVtYW5pemUpLFxuXHRcdFx0dGFsbHk6IHRoaXMud2l0bmVzc1JlZHVjZXIudG9KU09OKGh1bWFuaXplKSxcblx0XHRcdC4uLihodW1hbml6ZSA/IHt9IDogeyB0aW1lX2xvY2s6IDAgfSksXG5cdFx0fTtcblx0fVxuXG5cdHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdC8vdGltZUxvY2s6IDAsXG5cdFx0XHRyZXRyaWV2ZTogdGhpcy5zb3VyY2VzLm1hcCgocmV0cmlldmFsKSA9PiByZXRyaWV2YWwudG9Qcm90b2J1ZigpKSxcblx0XHRcdGFnZ3JlZ2F0ZTogdGhpcy5zb3VyY2VzUmVkdWNlci50b1Byb3RvYnVmKCksXG5cdFx0XHR0YWxseTogdGhpcy53aXRuZXNzUmVkdWNlci50b1Byb3RvYnVmKCksXG5cdFx0fTtcblx0fVxuXG5cdHB1YmxpYyB3ZWlnaHQoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy50b0J5dGVjb2RlKCkuc2xpY2UoMikubGVuZ3RoIC8gMjtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmFkb25SZXF1ZXN0RnJvbUFzc2V0cyhzcGVjczoge1xuXHRhc3NldHM6IE9iamVjdDtcblx0YXJnc01hcDogUmVjb3JkPHN0cmluZywgYW55IHwgc3RyaW5nW10gfCB1bmRlZmluZWQ+O1xuXHRzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0d2l0bmVzc1JlZHVjZXI/OiBSYWRvblJlZHVjZXI7XG59KTogUmFkb25SZXF1ZXN0IHtcblx0Y29uc3Qgc291cmNlczogUmFkb25SZXRyaWV2YWxbXSA9IFtdO1xuXHRjb25zdCBkaWN0ID0gcmV0cmlldmFscy5mcm9tUmFkb25Bc3NldHMoc3BlY3MuYXNzZXRzKTtcblx0Ly8gY29uc3QgYXJnczogc3RyaW5nW11bXSA9IFtdXG5cdE9iamVjdC5rZXlzKHNwZWNzLmFyZ3NNYXApLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdGNvbnN0IHJldHJpZXZhbDogUmFkb25SZXRyaWV2YWwgPSBkaWN0W2tleV07XG5cdFx0Y29uc3QgYXJncyA9IChzcGVjcy5hcmdzTWFwIGFzIGFueSlba2V5XTtcblx0XHRpZiAocmV0cmlldmFsLmFyZ3NDb3VudCA+IDApIHtcblx0XHRcdGlmICghYXJncyB8fCBhcmdzLmxlbmd0aCA8IHJldHJpZXZhbC5hcmdzQ291bnQpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFxuXHRcdFx0XHRcdGBJbnN1ZmZpY2llbnQgYXJncyBwYXNzZWQgdG8gcmV0cmlldmFsIG5hbWVkIGFzICcke2tleX0nOiAke2FyZ3MubGVuZ3RofSA8ICR7cmV0cmlldmFsLmFyZ3NDb3VudH1gLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c291cmNlcy5wdXNoKHJldHJpZXZhbC5mb2xkQXJncyhhcmdzKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNvdXJjZXMucHVzaChyZXRyaWV2YWwpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcblx0XHRzb3VyY2VzLFxuXHRcdHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIsXG5cdFx0d2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlcixcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYWRvblNjcmlwdDxcblx0SW5wdXRUeXBlIGV4dGVuZHMgUmFkb25BbnkgPSBSYWRvblN0cmluZyxcbj4oaW5wdXRUeXBlOiB7IG5ldyAob3BzPzogUmFkb25PcGVyYXRvcik6IElucHV0VHlwZSB9KTogSW5wdXRUeXBlIHtcblx0aWYgKCFpbnB1dFR5cGUpXG5cdFx0dGhyb3cgVHlwZUVycm9yKFxuXHRcdFx0XCJJbnB1dCBSYWRvbiBkYXRhIHR5cGUgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBkZWNsYXJpbmcgYSBuZXcgUmFkb24gc2NyaXB0LlwiLFxuXHRcdCk7XG5cdHJldHVybiBuZXcgaW5wdXRUeXBlKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvblRlbXBsYXRlIGV4dGVuZHMgUmFkb25BcnRpZmFjdCB7XG5cdHByb3RlY3RlZCBfYXJnc0NvdW50OiBudW1iZXI7XG5cblx0cHVibGljIHJlYWRvbmx5IGhvbW9nZW5lb3VzOiBib29sZWFuO1xuXHRwdWJsaWMgcmVhZG9ubHkgc2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIEFyZ3M+O1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHNwZWNzOiB7XG5cdFx0XHRzb3VyY2VzOiBSYWRvblJldHJpZXZhbCB8IFJhZG9uUmV0cmlldmFsW107XG5cdFx0XHRzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0XHRcdHdpdG5lc3NSZWR1Y2VyPzogUmFkb25SZWR1Y2VyO1xuXHRcdH0sXG5cdFx0c2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIEFyZ3M+LFxuXHQpIHtcblx0XHRjb25zdCBzb3VyY2VzID0gQXJyYXkuaXNBcnJheShzcGVjcy5zb3VyY2VzKVxuXHRcdFx0PyAoc3BlY3Muc291cmNlcyBhcyBSYWRvblJldHJpZXZhbFtdKVxuXHRcdFx0OiBbc3BlY3Muc291cmNlc107XG5cdFx0c3VwZXIoe1xuXHRcdFx0c291cmNlcyxcblx0XHRcdHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXG5cdFx0fSk7XG5cdFx0dGhpcy5fYXJnc0NvdW50ID0gc291cmNlc1xuXHRcdFx0Lm1hcCgocmV0cmlldmFsKSA9PiByZXRyaWV2YWw/LmFyZ3NDb3VudClcblx0XHRcdC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IE1hdGgubWF4KHByZXYsIGN1cnIpLCAwKTtcblx0XHRpZiAodGhpcy5fYXJnc0NvdW50ID09PSAwKSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblRlbXBsYXRlOiBubyBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMgd2VyZSBwYXNzZWRcIik7XG5cdFx0fVxuXHRcdHRoaXMuaG9tb2dlbmVvdXMgPSAhc291cmNlcy5maW5kKFxuXHRcdFx0KHJldHJpZXZhbCkgPT4gcmV0cmlldmFsLmFyZ3NDb3VudCAhPT0gdGhpcy5fYXJnc0NvdW50LFxuXHRcdCk7XG5cdFx0aWYgKHNhbXBsZXMpIHtcblx0XHRcdE9iamVjdC5rZXlzKHNhbXBsZXMpLmZvckVhY2goKHNhbXBsZSkgPT4ge1xuXHRcdFx0XHRsZXQgc2FtcGxlQXJnczogQXJncyA9IE9iamVjdChzYW1wbGVzKVtzYW1wbGVdO1xuXHRcdFx0XHRpZiAodHlwZW9mIHNhbXBsZUFyZ3MgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0XHRzYW1wbGVBcmdzID0gW3NhbXBsZUFyZ3NdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzYW1wbGVBcmdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkoc2FtcGxlQXJnc1swXSkpIHtcblx0XHRcdFx0XHRcdE9iamVjdChzYW1wbGVzKVtzYW1wbGVdID0gQXJyYXkoc291cmNlcy5sZW5ndGgpLmZpbGwoc2FtcGxlQXJncyk7XG5cdFx0XHRcdFx0XHRzYW1wbGVBcmdzID0gT2JqZWN0KHNhbXBsZXMpW3NhbXBsZV07XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChzYW1wbGVBcmdzPy5sZW5ndGggIT09IHNvdXJjZXMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0XHRcdGBSYWRvblRlbXBsYXRlOiBhcmd1bWVudHMgbWlzbWF0Y2ggaW4gc2FtcGxlIFwiJHtzYW1wbGV9XCI6ICR7c2FtcGxlQXJncz8ubGVuZ3RofSBzYW1wbGVzIGdpdmVuIHZzLiAke3NvdXJjZXMubGVuZ3RofSBleHBlY3RlZGAsXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzYW1wbGVBcmdzPy5mb3JFYWNoKChzdWJhcmdzLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHN1YmFyZ3MubGVuZ3RoIDwgc291cmNlc1tpbmRleF0uYXJnc0NvdW50KSB7XG5cdFx0XHRcdFx0XHRcdHRocm93IFR5cGVFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRgXFx4MWJbMTszM21SYWRvblJlcXVlc3RUZW1wbGF0ZTogYXJndW1lbnRzIG1pc21hdGNoIGluIHRlc3QgXFx4MWJbMTszMW0nJHtzYW1wbGV9J1xceDFiWzE7MzNtOiBcXHgxYlsxOzM3bVJldHJpZXZhbCAjJHtpbmRleH1cXHgxYlsxOzMzbTogJHtzdWJhcmdzPy5sZW5ndGh9IHBhcmFtZXRlcnMgZ2l2ZW4gdnMuICR7c291cmNlc1tpbmRleF0uYXJnc0NvdW50fSBleHBlY3RlZFxceDFiWzBtYCxcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnNhbXBsZXMgPSBzYW1wbGVzO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXQgYXJnc0NvdW50KCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMuX2FyZ3NDb3VudDtcblx0fVxuXG5cdHB1YmxpYyBidWlsZFJhZG9uUmVxdWVzdChcblx0XHRhcmdzOiBhbnkgfCBhbnlbXSB8IHN0cmluZ1tdIHwgc3RyaW5nW11bXSxcblx0KTogUmFkb25SZXF1ZXN0IHtcblx0XHRjb25zdCBzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdID0gW107XG5cdFx0aWYgKHRoaXMuaG9tb2dlbmVvdXMpIHtcblx0XHRcdC8vIGFyZ3MgY2FuIGJlIGVpdGhlciBhbnksIHN0cmluZ1tdIG9yIHN0cmluZ1swXVtdXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhcmdzKSAmJiBhcmdzWzBdICYmIEFycmF5LmlzQXJyYXkoYXJnc1swXSkpIHtcblx0XHRcdFx0aWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0XHRgUmFkb25UZW1wbGF0ZTogaG9tb2dlbmVvdXMgdGVtcGxhdGU6IGFyZ3MgdmVjdG9yIGRpbWVuc2lvbiAke2FyZ3MubGVuZ3RofSA+IDEuYCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFyZ3MgPSBhcmdzWzBdO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpICYmIGFyZ3MubGVuZ3RoICE9PSB0aGlzLmFyZ3NDb3VudCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxuXHRcdFx0XHRcdGBSYWRvblRlbXBsYXRlOiBob21vZ2Vub3VzIHRlbXBsYXRlOiBtaXNzaW5nICR7dGhpcy5hcmdzQ291bnQgLSBhcmdzLmxlbmd0aH0gb3V0IG9mICR7YXJncy5sZW5ndGh9IHBhcmFtZXRlcnMuYCxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc291cmNlcy5mb3JFYWNoKChyZXRyaWV2YWwpID0+XG5cdFx0XHRcdHNvdXJjZXMucHVzaChyZXRyaWV2YWwuZm9sZEFyZ3MoYXJncykpLFxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpIHx8IGFyZ3MubGVuZ3RoICE9PSB0aGlzLnNvdXJjZXMubGVuZ3RoKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0YFJhZG9uVGVtcGxhdGU6IGFyZ3MgdmVjdG9yIGRpbWVuc2lvbiAke2FyZ3MubGVuZ3RofSAhPSAke3RoaXMuc291cmNlcy5sZW5ndGh9YCxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc291cmNlcy5mb3JFYWNoKChyZXRyaWV2YWwsIGluZGV4KSA9PiB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRBcnJheS5pc0FycmF5KGFyZ3NbaW5kZXhdKSAmJlxuXHRcdFx0XHRcdHJldHJpZXZhbC5hcmdzQ291bnQgIT09IGFyZ3NbaW5kZXhdLmxlbmd0aFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxuXHRcdFx0XHRcdFx0YFJhZG9uVGVtcGxhdGU6IHJldHJpZXZhbCAjJHtpbmRleCArIDF9OiBtaXNtYXRjaGluZyBhcmdzIGNvdW50OiAke1xuXHRcdFx0XHRcdFx0XHRhcmdzW2luZGV4XS5sZW5ndGhcblx0XHRcdFx0XHRcdH0gIT0gJHtyZXRyaWV2YWwuYXJnc0NvdW50fSAoWyR7YXJnc1tpbmRleF19KV1gLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0c291cmNlcy5wdXNoKHJldHJpZXZhbC5mb2xkQXJncyhhcmdzW2luZGV4XSkpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcblx0XHRcdHNvdXJjZXMsXG5cdFx0XHRzb3VyY2VzUmVkdWNlcjogdGhpcy5zb3VyY2VzUmVkdWNlcixcblx0XHRcdHdpdG5lc3NSZWR1Y2VyOiB0aGlzLndpdG5lc3NSZWR1Y2VyLFxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvbk1vZGFsIGV4dGVuZHMgUmFkb25UZW1wbGF0ZSB7XG5cdHByb3RlY3RlZCBfcHJvdmlkZXJzOiBBcnJheTxzdHJpbmc+O1xuXG5cdGNvbnN0cnVjdG9yKHNwZWNzOiB7XG5cdFx0cHJvdmlkZXJzPzogQXJyYXk8c3RyaW5nPjtcblx0XHRyZXRyaWV2YWw6IFJhZG9uUmV0cmlldmFsO1xuXHRcdHNvdXJjZXNSZWR1Y2VyPzogUmFkb25SZWR1Y2VyO1xuXHRcdHdpdG5lc3NSZWR1Y2VyPzogUmFkb25SZWR1Y2VyO1xuXHR9KSB7XG5cdFx0aWYgKCFzcGVjcy5yZXRyaWV2YWwuaXNNb2RhbCgpKSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJSYWRvbk1vZGFsOiBubyBtb2RhbCByZXRyaWV2YWwgd2FzIHBhc3NlZC5cIik7XG5cdFx0fVxuXHRcdHN1cGVyKFxuXHRcdFx0e1xuXHRcdFx0XHRzb3VyY2VzOiBbc3BlY3MucmV0cmlldmFsXSxcblx0XHRcdFx0c291cmNlc1JlZHVjZXI6IHNwZWNzPy5zb3VyY2VzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXG5cdFx0XHRcdHdpdG5lc3NSZWR1Y2VyOiBzcGVjcz8ud2l0bmVzc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxuXHRcdFx0fSxcblx0XHRcdHNwZWNzLnJldHJpZXZhbD8uc2FtcGxlcyxcblx0XHQpO1xuXHRcdGlmIChzcGVjcz8ucHJvdmlkZXJzKSB7XG5cdFx0XHR0aGlzLl9wcm92aWRlcnMgPSB0aGlzLl9jaGVja1Byb3ZpZGVycyhzcGVjcy5wcm92aWRlcnMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9wcm92aWRlcnMgPSBbXTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0IGFyZ3NDb3VudCgpOiBudW1iZXIge1xuXHRcdGNvbnN0IF9wcm92aWRlcnNBcmdzQ291bnQgPSBNYXRoLm1heChcblx0XHRcdC4uLnRoaXMucHJvdmlkZXJzLm1hcCgodXJsKSA9PiBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcodXJsKSksXG5cdFx0KTtcblx0XHRyZXR1cm4gX3Byb3ZpZGVyc0FyZ3NDb3VudCA+IDBcblx0XHRcdD8gTWF0aC5tYXgodGhpcy5fYXJnc0NvdW50LCBfcHJvdmlkZXJzQXJnc0NvdW50KVxuXHRcdFx0OiB0aGlzLl9hcmdzQ291bnQ7XG5cdH1cblxuXHRwdWJsaWMgZ2V0IHByb3ZpZGVycygpOiBBcnJheTxzdHJpbmc+IHtcblx0XHRyZXR1cm4gdGhpcy5fcHJvdmlkZXJzO1xuXHR9XG5cblx0cHVibGljIHNldCBwcm92aWRlcnMocHJvdmlkZXJzOiBBcnJheTxzdHJpbmc+KSB7XG5cdFx0dGhpcy5fcHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMocHJvdmlkZXJzKTtcblx0fVxuXG5cdHB1YmxpYyBidWlsZFJhZG9uUmVxdWVzdChhcmdzPzogYW55IHwgc3RyaW5nW10pOiBSYWRvblJlcXVlc3Qge1xuXHRcdGlmICh0aGlzLnByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uTW9kYWw6IG5vIHByb3ZpZGVycyB3ZXJlIHByZXZpb3VzbHkgc2V0dGxlZC5gKTtcblx0XHR9XG5cdFx0Y29uc3QgdGVtcGxhdGUgPSB0aGlzLmJ1aWxkUmFkb25UZW1wbGF0ZSh0aGlzLnByb3ZpZGVycyk7XG5cdFx0cmV0dXJuIHRlbXBsYXRlLmhvbW9nZW5lb3VzXG5cdFx0XHQ/IHRlbXBsYXRlLmJ1aWxkUmFkb25SZXF1ZXN0KGFyZ3MpXG5cdFx0XHQ6IHRlbXBsYXRlLmJ1aWxkUmFkb25SZXF1ZXN0KFxuXHRcdFx0XHRcdHRlbXBsYXRlLnNvdXJjZXMubWFwKChzb3VyY2UpID0+IGFyZ3Muc2xpY2UoMCwgc291cmNlLmFyZ3NDb3VudCkpLFxuXHRcdFx0XHQpO1xuXHR9XG5cblx0cHVibGljIGJ1aWxkUmFkb25UZW1wbGF0ZShwcm92aWRlcnM/OiBBcnJheTxzdHJpbmc+KTogUmFkb25UZW1wbGF0ZSB7XG5cdFx0aWYgKCFwcm92aWRlcnMpIHtcblx0XHRcdHByb3ZpZGVycyA9IHRoaXMuX2NoZWNrUHJvdmlkZXJzKFsuLi50aGlzLl9wcm92aWRlcnNdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMoWy4uLnByb3ZpZGVyc10pO1xuXHRcdH1cblx0XHRpZiAoIXByb3ZpZGVycyB8fCBwcm92aWRlcnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvbk1vZGFsOiBubyBwcm92aWRlcnMgd2VyZSBzcGVjaWZpZWQuYCk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgUmFkb25UZW1wbGF0ZSh7XG5cdFx0XHRzb3VyY2VzOiB0aGlzLnNvdXJjZXNbMF0uc3Bhd25SZXRyaWV2YWxzKC4uLnByb3ZpZGVycyksXG5cdFx0XHRzb3VyY2VzUmVkdWNlcjogdGhpcy5zb3VyY2VzUmVkdWNlcixcblx0XHRcdHdpdG5lc3NSZWR1Y2VyOiB0aGlzLndpdG5lc3NSZWR1Y2VyLFxuXHRcdH0pO1xuXHR9XG5cblx0X2NoZWNrUHJvdmlkZXJzKHByb3ZpZGVyczogQXJyYXk8c3RyaW5nPik6IEFycmF5PHN0cmluZz4ge1xuXHRcdHByb3ZpZGVycy5mb3JFYWNoKChwcm92aWRlcikgPT4ge1xuXHRcdFx0Y29uc3QgW3NjaGVtYV0gPSBwYXJzZVVSTChwcm92aWRlcik7XG5cdFx0XHRpZiAoIXNjaGVtYS5zdGFydHNXaXRoKFwiaHR0cDovL1wiKSAmJiAhc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSkge1xuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoYFJhZG9uTW9kYWw6IGludmFsaWQgcHJvdmlkZXI6ICR7cHJvdmlkZXJ9YCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHByb3ZpZGVycztcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25SZXRyaWV2YWwge1xuXHRwdWJsaWMgcmVhZG9ubHkgYXJnc0tleXM/OiBBcnJheTxzdHJpbmc+O1xuXHRwdWJsaWMgcmVhZG9ubHkgYXJnc0NvdW50OiBudW1iZXI7XG5cdHB1YmxpYyByZWFkb25seSBtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcztcblx0cHVibGljIHJlYWRvbmx5IGF1dGhvcml0eT86IHN0cmluZztcblx0cHVibGljIHJlYWRvbmx5IGJvZHk/OiBhbnk7XG5cdHB1YmxpYyByZWFkb25seSBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblx0cHVibGljIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cdHB1YmxpYyByZWFkb25seSBxdWVyeT86IHN0cmluZztcblx0cHVibGljIHJlYWRvbmx5IHNjaGVtYT86IHN0cmluZztcblx0cHVibGljIHJlYWRvbmx5IHNjcmlwdD86IF9SYWRvblNjcmlwdDtcblx0cHVibGljIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuXHRwdWJsaWMgcmVhZG9ubHkgc2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRzcGVjczoge1xuXHRcdFx0bWV0aG9kOiByZXRyaWV2YWxzLk1ldGhvZHM7XG5cdFx0XHR1cmw/OiBzdHJpbmc7XG5cdFx0XHRoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblx0XHRcdGJvZHk/OiBhbnk7XG5cdFx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcblx0XHRcdGFyZ3NLZXlzPzogQXJyYXk8c3RyaW5nPjtcblx0XHR9LFxuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4sXG5cdCkge1xuXHRcdGlmIChcblx0XHRcdHNwZWNzLm1ldGhvZCA9PT0gcmV0cmlldmFscy5NZXRob2RzLlJORyAmJlxuXHRcdFx0KHNwZWNzPy51cmwgfHwgc3BlY3M/LmhlYWRlcnM/LnNpemUgfHwgc3BlY3M/LmJvZHkpXG5cdFx0KSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogUk5HIGFjY2VwdHMgbm8gVVJMcyBvciBoZWFkZXJzXCIpO1xuXHRcdFx0Ly8gfSBlbHNlIGlmICghc3BlY3M/LnVybCAmJiAobWV0aG9kID09IE1ldGhvZHMuSHR0cFBvc3QgfHwgbWV0aG9kID09IE1ldGhvZHMuSHR0cEdldCkpIHtcblx0XHRcdC8vICAgICB0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogVVJMIG11c3QgYmUgc3BlY2lmaWVkXCIpO1xuXHRcdH0gZWxzZSBpZiAoc3BlY3M/LmJvZHkgJiYgc3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cEdldCkge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFxuXHRcdFx0XHRcIlJhZG9uUmV0cmlldmFsOiBib2R5IGNhbm5vdCBiZSBzcGVjaWZpZWQgaW4gSFRUUC1HRVQgcXVlcmllc1wiLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0dGhpcy5tZXRob2QgPSBzcGVjcy5tZXRob2Q7XG5cdFx0aWYgKHNwZWNzPy51cmwpIHtcblx0XHRcdHRoaXMudXJsID0gc3BlY3MudXJsO1xuXHRcdFx0aWYgKCFpc1dpbGRjYXJkKHNwZWNzLnVybCkpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCBwYXJ0cyA9IHBhcnNlVVJMKHNwZWNzLnVybCk7XG5cdFx0XHRcdFx0dGhpcy5zY2hlbWEgPSBwYXJ0c1swXTtcblx0XHRcdFx0XHRpZiAocGFydHNbMV0gIT09IFwiXCIpIHRoaXMuYXV0aG9yaXR5ID0gcGFydHNbMV07XG5cdFx0XHRcdFx0aWYgKHBhcnRzWzJdICE9PSBcIlwiKSB0aGlzLnBhdGggPSBwYXJ0c1syXTtcblx0XHRcdFx0XHRpZiAocGFydHNbM10gIT09IFwiXCIpIHRoaXMucXVlcnkgPSBwYXJ0c1szXTtcblx0XHRcdFx0fSBjYXRjaCB7fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRzcGVjcy5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwR2V0IHx8XG5cdFx0XHRzcGVjcy5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwUG9zdCB8fFxuXHRcdFx0c3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cEhlYWRcblx0XHQpIHtcblx0XHRcdHRoaXMudXJsID0gXCJcXFxcMFxcXFxcIjtcblx0XHR9XG5cdFx0aWYgKHNwZWNzPy5oZWFkZXJzKSB7XG5cdFx0XHRpZiAodHlwZW9mIHNwZWNzLmhlYWRlcnMgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheShzcGVjcy5oZWFkZXJzKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxuXHRcdFx0XHRcdFwiUmFkb25SZXRyaWV2YWw6IEhUVFAgaGVhZGVycyBtdXN0IGJlIG9mIHR5cGUgUmVjb3JkPHN0cmluZywgc3RyaW5nPlwiLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5oZWFkZXJzID0gc3BlY3M/LmhlYWRlcnM7XG5cdFx0fVxuXHRcdHRoaXMuYm9keSA9IHNwZWNzPy5ib2R5O1xuXHRcdGlmIChzcGVjcz8uc2NyaXB0KSB0aGlzLnNjcmlwdCA9IG5ldyBfUmFkb25TY3JpcHQoc3BlY3M/LnNjcmlwdCk7XG5cdFx0dGhpcy5hcmdzQ291bnQgPSBNYXRoLm1heChcblx0XHRcdGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyh0aGlzPy51cmwpLFxuXHRcdFx0Z2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHRoaXM/LmJvZHkpLFxuXHRcdFx0Li4uKE9iamVjdC5rZXlzKHRoaXM/LmhlYWRlcnMgfHwge30pLm1hcCgoa2V5KSA9PlxuXHRcdFx0XHRnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcoa2V5KSxcblx0XHRcdCkgPz8gW10pLFxuXHRcdFx0Li4uKE9iamVjdC52YWx1ZXModGhpcz8uaGVhZGVycyB8fCB7fSkubWFwKCh2YWx1ZSkgPT5cblx0XHRcdFx0Z2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHZhbHVlKSxcblx0XHRcdCkgPz8gW10pLFxuXHRcdFx0dGhpcy5zY3JpcHQ/LmFyZ3NDb3VudCgpIHx8IDAsXG5cdFx0KTtcblx0XHRpZiAoc2FtcGxlcyAmJiB0aGlzLmFyZ3NDb3VudCA9PT0gMCkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcblx0XHRcdFx0XCJSYWRvblJldHJpZXZhbDogcGFzc2VkIHNhbXBsZXMgdG8gbm9uLXBhcmFtZXRlcml6ZWQgcmV0cmlldmFsLlwiLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0dGhpcy5zYW1wbGVzID0gc2FtcGxlcztcblx0XHRpZiAoc3BlY3M/LmFyZ3NLZXlzKSB7XG5cdFx0XHRpZiAodGhpcy5hcmdzQ291bnQgPT09IDApIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcblx0XHRcdFx0XHRcIlJhZG9uUmV0cmlldmFsOiBwYXNzZWQgYXJncyBrZXlzIHRvIG5vbi1wYXJhbWV0ZXJpemVkIHJldHJpZXZhbFwiLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmIChzcGVjcy5hcmdzS2V5cy5sZW5ndGggIT09IHRoaXMuYXJnc0NvdW50KSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0YFJhZG9uUmV0cmlldmFsOiBwYXNzZWQgaW52YWxpZCBudW1iZXIgb2YgYXJncyBrZXlzOiAke3NwZWNzLmFyZ3NLZXlzLmxlbmd0aH0gIT0gJHt0aGlzLmFyZ3NDb3VudH1gLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5hcmdzS2V5cyA9IHNwZWNzLmFyZ3NLZXlzO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBpc01vZGFsKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLm1ldGhvZCAhPT0gcmV0cmlldmFscy5NZXRob2RzLlJORyAmJlxuXHRcdFx0KCF0aGlzLnVybCB8fCB0aGlzLnVybCA9PT0gXCJcXFxcMFxcXFxcIilcblx0XHQpO1xuXHR9XG5cblx0cHVibGljIGlzUGFyYW1ldGVyaXplZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5hcmdzQ291bnQgPiAwO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgUmFkb24gUmV0cmlldmFsIGJ5IG9yZGVybHkgcmVwbGFjaW5nIGluZGV4ZWQgd2lsZGNhcmRzIHdpdGggZ2l2ZW4gcGFyYW1ldGVycy5cblx0ICogRmFpbHMgaWYgbm90IHBhcmFtZXRlcml6ZWQsIG9mIGlmIHBhc3NpbmcgdG9vIG1hbnkgcGFyYW1ldGVycy5cblx0ICovXG5cdHB1YmxpYyBmb2xkQXJncyhhcmdzOiBhbnkgfCBzdHJpbmdbXSk6IFJhZG9uUmV0cmlldmFsIHtcblx0XHRpZiAodGhpcy5hcmdzQ291bnQgPT09IDApIHtcblx0XHRcdHJldHVybiB0aGlzOyAvL3Rocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmV0cmlldmFsOiBjYW5ub3QgZm9sZCB1bnBhcmFtZXRlcml6ZWQgcmV0cmlldmFsYClcblx0XHR9XG5cdFx0Y29uc3QgcGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG5cdFx0XHRpZiAoKGFyZ3MgYXMgYW55W10pLmxlbmd0aCA+IHRoaXMuYXJnc0NvdW50KSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0YFJhZG9uUmV0cmlldmFsOiB0b28gbWF5IGFyZ3MgcGFzc2VkOiAke2FyZ3MubGVuZ3RofSA+ICR7dGhpcy5hcmdzQ291bnR9YCxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHBhcmFtcy5wdXNoKC4uLihhcmdzIGFzIHN0cmluZ1tdKSk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgYXJncyA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0aWYgKCF0aGlzLmFyZ3NLZXlzKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0YFJhZG9uUmV0cmlldmFsOiB1bmV4cGVjdGVkIGFyZ3MgbWFwOiB1bmRlZmluZWQgYXJncyBrZXlzLmAsXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmFyZ3NLZXlzLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0XHRcdGlmICghYXJnc1trZXldKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxuXHRcdFx0XHRcdFx0XHRgUmFkb25SZXRyaWV2YWw6IG1pc3NpbmcgdmFsdWUgZm9yIHBhcmFtZXRlciBcIiR7a2V5fVwiLmAsXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRwYXJhbXMucHVzaChhcmdzW2tleV0gYXMgc3RyaW5nKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBhcmFtcy5wdXNoKGFyZ3MgYXMgc3RyaW5nKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbCh7XG5cdFx0XHRtZXRob2Q6IHRoaXMubWV0aG9kLFxuXHRcdFx0dXJsOiByZXBsYWNlV2lsZGNhcmRzKHRoaXMudXJsLCBwYXJhbXMpLFxuXHRcdFx0Ym9keTogcmVwbGFjZVdpbGRjYXJkcyh0aGlzLmJvZHksIHBhcmFtcyksXG5cdFx0XHRoZWFkZXJzOiBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRcdE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycyB8fCB7fSkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtcblx0XHRcdFx0XHRyZXBsYWNlV2lsZGNhcmRzKGtleSwgcGFyYW1zKSxcblx0XHRcdFx0XHRyZXBsYWNlV2lsZGNhcmRzKHZhbHVlLCBwYXJhbXMpLFxuXHRcdFx0XHRdKSxcblx0XHRcdCksXG5cdFx0XHRzY3JpcHQ6IHRoaXMuc2NyaXB0Py5yZXBsYWNlV2lsZGNhcmRzKC4uLnBhcmFtcyksXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBvbmUgb3IgbW9yZSBjbG9uZXMgb2YgdGhpcyByZXRyaWV2YWwsIGluIHdoaWNoIHRoZSBpbmRleC0wIHdpbGRjYXJkXG5cdCAqIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGdpdmVuIHZhbHVlcy4gRmFpbHMgaWYgdGhlIHJldHJpZXZhbCBpcyBub3QgcGFyYW1ldGVyaXplZC5cblx0ICovXG5cdHB1YmxpYyBzcGF3blJldHJpZXZhbHMoLi4udmFsdWVzOiBzdHJpbmdbXSk6IFJhZG9uUmV0cmlldmFsW10ge1xuXHRcdGNvbnN0IF9zcGF3bmVkOiBSYWRvblJldHJpZXZhbFtdID0gW107XG5cdFx0aWYgKHRoaXMuaXNNb2RhbCgpKSB7XG5cdFx0XHR2YWx1ZXMuZm9yRWFjaCgodXJsKSA9PiB7XG5cdFx0XHRcdF9zcGF3bmVkLnB1c2goXG5cdFx0XHRcdFx0bmV3IFJhZG9uUmV0cmlldmFsKHtcblx0XHRcdFx0XHRcdGFyZ3NLZXlzOiB0aGlzLmFyZ3NLZXlzLFxuXHRcdFx0XHRcdFx0Ym9keTogdGhpcy5ib2R5LFxuXHRcdFx0XHRcdFx0aGVhZGVyczogdGhpcy5oZWFkZXJzLFxuXHRcdFx0XHRcdFx0bWV0aG9kOiB0aGlzLm1ldGhvZCxcblx0XHRcdFx0XHRcdHNjcmlwdDogdGhpcy5zY3JpcHQ/LmNsb25lKCksXG5cdFx0XHRcdFx0XHR1cmwsXG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMuYXJnc0NvdW50ID09PSAwKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0YFJhZG9uUmV0cmlldmFsOiBjYW5ub3Qgc3Bhd24gZnJvbSB1bnBhcmFtZXRlcml6ZWQgcmV0cmlldmFsYCxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHZhbHVlcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRfc3Bhd25lZC5wdXNoKFxuXHRcdFx0XHRcdG5ldyBSYWRvblJldHJpZXZhbCh7XG5cdFx0XHRcdFx0XHRtZXRob2Q6IHRoaXMubWV0aG9kLFxuXHRcdFx0XHRcdFx0dXJsOiBzcGxpY2VXaWxkY2FyZCh0aGlzLnVybCwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcblx0XHRcdFx0XHRcdGJvZHk6IHNwbGljZVdpbGRjYXJkKHRoaXMuYm9keSwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcblx0XHRcdFx0XHRcdGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRcdFx0XHRcdFx0T2JqZWN0LmVudHJpZXModGhpcy5oZWFkZXJzIHx8IHt9KS5tYXAoXG5cdFx0XHRcdFx0XHRcdFx0KFtoZWFkZXJLZXksIGhlYWRlclZhbHVlXSkgPT4gW1xuXHRcdFx0XHRcdFx0XHRcdFx0c3BsaWNlV2lsZGNhcmQoaGVhZGVyS2V5LCAwLCB2YWx1ZSwgdGhpcy5hcmdzQ291bnQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0c3BsaWNlV2lsZGNhcmQoaGVhZGVyVmFsdWUsIDAsIHZhbHVlLCB0aGlzLmFyZ3NDb3VudCksXG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRzY3JpcHQ6IHRoaXMuc2NyaXB0Py5zcGxpY2VXaWxkY2FyZCgwLCB2YWx1ZSksXG5cdFx0XHRcdFx0XHRhcmdzS2V5czogdGhpcy5hcmdzS2V5cz8uc2xpY2UoMSksXG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIF9zcGF3bmVkO1xuXHR9XG5cblx0cHVibGljIHRvSlNPTihodW1hbml6ZT86IGJvb2xlYW4pOiBhbnkge1xuXHRcdGNvbnN0IGtpbmQgPSBbXCJcIiwgXCJIVFRQLUdFVFwiLCBcIlJOR1wiLCBcIkhUVFAtUE9TVFwiLCBcIkhUVFAtSEVBRFwiXTtcblx0XHRjb25zdCBqc29uOiBhbnkgPSB7XG5cdFx0XHRraW5kOiBraW5kW3RoaXMubWV0aG9kXSwgLy8gaHVtYW5pemUgPyBNZXRob2RzW3RoaXMubWV0aG9kXSA6IHRoaXMubWV0aG9kLFxuXHRcdH07XG5cdFx0aWYgKHRoaXMudXJsKSBqc29uLnVybCA9IHRoaXMudXJsO1xuXHRcdGlmICh0aGlzLmhlYWRlcnMpIHtcblx0XHRcdGpzb24uaGVhZGVycyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycyk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmJvZHkpIHtcblx0XHRcdGlmICh0eXBlb2YgdGhpcy5ib2R5ID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdGpzb24uYm9keSA9IGh1bWFuaXplID8gdGhpcy5ib2R5IDogdG9VdGY4QXJyYXkodGhpcy5ib2R5KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpzb24uYm9keSA9IHRoaXMuYm9keTtcblx0XHRcdH1cblx0XHR9XG5cdFx0anNvbi5zY3JpcHQgPSBodW1hbml6ZVxuXHRcdFx0PyB0aGlzLnNjcmlwdD8udG9TdHJpbmcoKVxuXHRcdFx0OiBBcnJheS5mcm9tKGZyb21IZXhTdHJpbmcodGhpcy5zY3JpcHQ/LnRvQnl0ZWNvZGUoKSB8fCBcIjB4ODBcIikpO1xuXHRcdHJldHVybiBqc29uO1xuXHR9XG5cblx0cHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcblx0XHRjb25zdCBwcm90b2J1ZjogYW55ID0ge1xuXHRcdFx0a2luZDogdGhpcy5tZXRob2QsXG5cdFx0fTtcblx0XHRpZiAodGhpcy51cmwpIHByb3RvYnVmLnVybCA9IHRoaXMudXJsO1xuXHRcdGlmICh0aGlzLmhlYWRlcnMpIHtcblx0XHRcdHByb3RvYnVmLmhlYWRlcnMgPSBPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMpLm1hcChcblx0XHRcdFx0KFtoZWFkZXJLZXksIGhlYWRlclZhbHVlXSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRsZWZ0OiBoZWFkZXJLZXksXG5cdFx0XHRcdFx0XHRyaWdodDogaGVhZGVyVmFsdWUsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmJvZHkpIHtcblx0XHRcdGNvbnN0IHV0ZjhBcnJheSA9IHRvVXRmOEFycmF5KHRoaXMuYm9keSk7XG5cdFx0XHRwcm90b2J1Zi5ib2R5ID0gdXRmOEFycmF5O1xuXHRcdH1cblx0XHRwcm90b2J1Zi5zY3JpcHQgPSBPYmplY3QudmFsdWVzKFxuXHRcdFx0VWludDhBcnJheS5mcm9tKGNib3IuZW5jb2RlKHRoaXMuc2NyaXB0Py5lbmNvZGUoKSB8fCBbXSkpLFxuXHRcdCk7XG5cdFx0cmV0dXJuIHByb3RvYnVmO1xuXHR9XG5cblx0cHVibGljIG9wc0NvdW50KCk6IGFueSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NvdW50T3BzKHRoaXMuc2NyaXB0Py5lbmNvZGUoKSB8fCBbXSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgX2NvdW50T3BzKGl0ZW1zOiBhbnlbXSk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDBcblx0XHRcdD8gaXRlbXNcblx0XHRcdFx0XHQubWFwKChpdGVtKSA9PiAoQXJyYXkuaXNBcnJheShpdGVtKSA/IHRoaXMuX2NvdW50T3BzKGl0ZW0pIDogMSkpXG5cdFx0XHRcdFx0LnJlZHVjZSgoc3VtLCBhKSA9PiBzdW0gKyBhKVxuXHRcdFx0OiAwO1xuXHR9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgZmlsdGVycyB7XG5cdGV4cG9ydCBjb25zdCBPcGNvZGVzID0gRmlsdGVycztcblx0ZXhwb3J0IGNvbnN0IENsYXNzID0gUmFkb25GaWx0ZXI7XG5cdGV4cG9ydCBmdW5jdGlvbiBNb2RlKCkge1xuXHRcdHJldHVybiBuZXcgUmFkb25GaWx0ZXIoRmlsdGVycy5Nb2RlKTtcblx0fVxuXHRleHBvcnQgZnVuY3Rpb24gU3RkZXYoc3RkZXY6IG51bWJlcikge1xuXHRcdHJldHVybiBuZXcgUmFkb25GaWx0ZXIoRmlsdGVycy5TdGFuZGFyZERldmlhdGlvbiwgc3RkZXYpO1xuXHR9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgcmVkdWNlcnMge1xuXHRleHBvcnQgY29uc3QgT3Bjb2RlcyA9IFJlZHVjZXJzO1xuXHRleHBvcnQgY29uc3QgQ2xhc3MgPSBSYWRvblJlZHVjZXI7XG5cdGV4cG9ydCBmdW5jdGlvbiBNb2RlKC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5Nb2RlLCBmaWx0ZXJzKTtcblx0fVxuXHRleHBvcnQgZnVuY3Rpb24gTWVhbiguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVhbkF2ZXJhZ2UsIGZpbHRlcnMpO1xuXHR9XG5cdGV4cG9ydCBmdW5jdGlvbiBNZWRpYW4oLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1lZGlhbkF2ZXJhZ2UsIGZpbHRlcnMpO1xuXHR9XG5cdGV4cG9ydCBmdW5jdGlvbiBTdGRldiguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuU3RhbmRhcmREZXZpYXRpb24sIGZpbHRlcnMpO1xuXHR9XG5cdGV4cG9ydCBmdW5jdGlvbiBDb25jYXRIYXNoKC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5Db25jYXRlbmF0ZUFuZEhhc2gsIGZpbHRlcnMpO1xuXHR9XG5cblx0ZXhwb3J0IGZ1bmN0aW9uIFByaWNlQWdncmVnYXRlKCkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1lYW5BdmVyYWdlLCBbZmlsdGVycy5TdGRldigxLjQpXSk7XG5cdH1cblx0ZXhwb3J0IGZ1bmN0aW9uIFByaWNlVGFsbHkoKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVhbkF2ZXJhZ2UsIFtmaWx0ZXJzLlN0ZGV2KDIuNSldKTtcblx0fVxufVxuXG5pbXBvcnQgKiBhcyBjY2RyIGZyb20gXCIuL2NjZHIvaW5kZXguanNcIjtcbmV4cG9ydCBuYW1lc3BhY2UgcmV0cmlldmFscyB7XG5cdGV4cG9ydCBjb25zdCBycGMgPSBjY2RyO1xuXG5cdGV4cG9ydCBmdW5jdGlvbiBmcm9tUmFkb25Bc3NldHMoXG5cdFx0YXNzZXRzOiBPYmplY3QsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJhZG9uUmV0cmlldmFsPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm94eShhc3NldHMsIHByb3h5SGFuZGxlcihSYWRvblJldHJpZXZhbCkpO1xuXHR9XG5cblx0ZXhwb3J0IGVudW0gTWV0aG9kcyB7XG5cdFx0Tm9uZSA9IDB4MCxcblx0XHRIdHRwR2V0ID0gMHgwMSxcblx0XHRIdHRwSGVhZCA9IDB4MDQsXG5cdFx0SHR0cFBvc3QgPSAweDAzLFxuXHRcdFJORyA9IDB4MDIsXG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIFdpdG5ldCByYW5kb21uZXNzIGRhdGEgc291cmNlIG9iamVjdC5cblx0ICogQHBhcmFtIHNjcmlwdCAoT3B0aW9uYWwpIFJhZG9uIFNjcmlwdCB0byBhcHBseSB0byB0aGUgcmFuZG9tIHNlZWQgcHJvcG9zZWQgYnkgZXZlcnkgc2luZ2xlIHdpdG5lc3MsXG5cdCAqIGJlZm9yZSBhZ2dyZWdhdGlvbi5cblx0ICoqL1xuXHRleHBvcnQgZnVuY3Rpb24gUk5HKHNjcmlwdD86IFJhZG9uQW55KSB7XG5cdFx0Y29uc3QgcmV0cmlldmFsID0gbmV3IFJhZG9uUmV0cmlldmFsKHsgbWV0aG9kOiBNZXRob2RzLlJORywgc2NyaXB0IH0pO1xuXHRcdGlmIChcblx0XHRcdHJldHJpZXZhbD8uc2NyaXB0ICYmXG5cdFx0XHRyZXRyaWV2YWw/LnNjcmlwdD8uaW5wdXRUeXBlPy5jb25zdHJ1Y3Rvci5uYW1lICE9PSBcIlJhZG9uQnl0ZXNcIlxuXHRcdCkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcIlJORyBzY3JpcHRzIHJlcXVpcmUgW1JhZG9uQnl0ZXNdIGFzIGlucHV0IHR5cGVcIik7XG5cdFx0fVxuXHRcdHJldHVybiByZXRyaWV2YWw7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIEhUVFAvR0VUIGRhdGEgcmV0cmlldmFsIG9iamVjdC5cblx0ICogQHBhcmFtIHNwZWNzIFJhZG9uIFJldHJpZXZhbCBzcGVjcy5cblx0ICoqL1xuXHRleHBvcnQgZnVuY3Rpb24gSHR0cEdldChzcGVjczoge1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBVUkwuXG5cdFx0ICovXG5cdFx0dXJsPzogc3RyaW5nO1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBoZWFkZXJzLlxuXHRcdCAqL1xuXHRcdGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXHRcdC8qKlxuXHRcdCAqIFJhZG9uU2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxuXHRcdCAqL1xuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xuXHRcdC8qKlxuXHRcdCAqIE5hbWVzIG9mIGluZGV4ZWQgcGFyYW1ldGVycyAob3B0aW9uYWwsIGlmIGFueSkuXG5cdFx0ICovXG5cdFx0YXJnc0tleXM/OiBzdHJpbmdbXTtcblx0XHQvKipcblx0XHQgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxuXHRcdCAqL1xuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG5cdH0pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IE1ldGhvZHMuSHR0cEdldCxcblx0XHRcdFx0dXJsOiBzcGVjcz8udXJsLFxuXHRcdFx0XHRoZWFkZXJzOiBzcGVjcz8uaGVhZGVycyxcblx0XHRcdFx0c2NyaXB0OiBzcGVjcz8uc2NyaXB0LFxuXHRcdFx0XHRhcmdzS2V5czogc3BlY3M/LmFyZ3NLZXlzLFxuXHRcdFx0fSxcblx0XHRcdHNwZWNzPy5zYW1wbGVzLFxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIEhUVFAvSEVBRCBkYXRhIHJldHJpZXZhbCBvYmplY3QuXG5cdCAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXG5cdCAqKi9cblx0ZXhwb3J0IGZ1bmN0aW9uIEh0dHBIZWFkKHNwZWNzOiB7XG5cdFx0LyoqXG5cdFx0ICogSFRUUCByZXF1ZXN0IFVSTFxuXHRcdCAqL1xuXHRcdHVybD86IHN0cmluZztcblx0XHQvKipcblx0XHQgKiBIVFRQIHJlcXVlc3QgaGVhZGVyc1xuXHRcdCAqL1xuXHRcdGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXHRcdC8qKlxuXHRcdCAqIFJhZG9uIHNjcmlwdCBmb3IgcHJvY2Vzc2luZyByZXR1cm5lZCB2YWx1ZS5cblx0XHQgKi9cblx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcblx0XHQvKipcblx0XHQgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpXG5cdFx0ICovXG5cdFx0YXJnc0tleXM/OiBzdHJpbmdbXTtcblx0XHQvKipcblx0XHQgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxuXHRcdCAqL1xuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG5cdH0pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IE1ldGhvZHMuSHR0cEhlYWQsXG5cdFx0XHRcdHVybDogc3BlY3M/LnVybCxcblx0XHRcdFx0aGVhZGVyczogc3BlY3M/LmhlYWRlcnMsXG5cdFx0XHRcdHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcblx0XHRcdFx0YXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcblx0XHRcdH0sXG5cdFx0XHRzcGVjcz8uc2FtcGxlcyxcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBIVFRQL1BPU1QgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxuXHQgKiBAcGFyYW0gc3BlY3MgUmFkb24gUmV0cmlldmFsIHNwZWNzLlxuXHQgKiovXG5cdGV4cG9ydCBmdW5jdGlvbiBIdHRwUG9zdChzcGVjczoge1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBVUkxcblx0XHQgKi9cblx0XHR1cmw/OiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogSFRUUCByZXF1ZXN0IGJvZHlcblx0XHQgKi9cblx0XHRib2R5Pzogc3RyaW5nO1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBoZWFkZXJzXG5cdFx0ICovXG5cdFx0aGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cdFx0LyoqXG5cdFx0ICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxuXHRcdCAqL1xuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xuXHRcdC8qKlxuXHRcdCAqIE5hbWVzIG9mIGluZGV4ZWQgcGFyYW1ldGVycyAob3B0aW9uYWwsIGlmIGFueSlcblx0XHQgKi9cblx0XHRhcmdzS2V5cz86IHN0cmluZ1tdO1xuXHRcdC8qKlxuXHRcdCAqIE1hcCBvZiBwcmUtc2V0IHBhcmFtZXRlcnMgKG9uIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscywgb25seSkuXG5cdFx0ICovXG5cdFx0c2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcblx0fSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXG5cdFx0XHR7XG5cdFx0XHRcdG1ldGhvZDogTWV0aG9kcy5IdHRwUG9zdCxcblx0XHRcdFx0dXJsOiBzcGVjcz8udXJsLFxuXHRcdFx0XHRoZWFkZXJzOiBzcGVjcz8uaGVhZGVycyxcblx0XHRcdFx0Ym9keTogc3BlY3M/LmJvZHksXG5cdFx0XHRcdHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcblx0XHRcdFx0YXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcblx0XHRcdH0sXG5cdFx0XHRzcGVjcz8uc2FtcGxlcyxcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBHcmFwaFFMLXF1ZXJ5IGRhdGEgc291cmNlIG9iamVjdC5cblx0ICogQHBhcmFtIHNwZWNzIFJhZG9uIFJldHJpZXZhbCBzcGVjcy5cblx0ICoqL1xuXHRleHBvcnQgZnVuY3Rpb24gR3JhcGhRTFF1ZXJ5KHNwZWNzOiB7XG5cdFx0LyoqXG5cdFx0ICogR3JhcGhRTCBVUkwgZW5kcG9pbnRcblx0XHQgKi9cblx0XHR1cmw/OiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogR3JhcGhRTCBxdWVyeVxuXHRcdCAqL1xuXHRcdHF1ZXJ5OiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxuXHRcdCAqL1xuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xuXHRcdC8qKlxuXHRcdCAqIE5hbWVzIG9mIGluZGV4ZWQgcGFyYW1ldGVycyAob3B0aW9uYWwsIGlmIGFueSlcblx0XHQgKi9cblx0XHRhcmdzS2V5cz86IHN0cmluZ1tdO1xuXHRcdC8qKlxuXHRcdCAqIE1hcCBvZiBwcmUtc2V0IHBhcmFtZXRlcnMgKG9uIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscywgb25seSkuXG5cdFx0ICovXG5cdFx0c2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcblx0fSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXG5cdFx0XHR7XG5cdFx0XHRcdG1ldGhvZDogTWV0aG9kcy5IdHRwUG9zdCxcblx0XHRcdFx0dXJsOiBzcGVjcy51cmwsXG5cdFx0XHRcdGJvZHk6IGB7XCJxdWVyeVwiOlwiJHtncmFwaFFsQ29tcHJlc3Moc3BlY3MucXVlcnkpLnJlcGxhY2VBbGwoJ1wiJywgJ1xcXFxcIicpfVwifWAsXG5cdFx0XHRcdGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcIiB9LFxuXHRcdFx0XHRzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXG5cdFx0XHRcdGFyZ3NLZXlzOiBzcGVjcz8uYXJnc0tleXMsXG5cdFx0XHR9LFxuXHRcdFx0c3BlY3M/LnNhbXBsZXMsXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgSlNPTi1SUEMgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxuXHQgKiBAcGFyYW0gc3BlY3MgUmFkb24gUmV0cmlldmFsIHNwZWNzLlxuXHQgKiovXG5cdGV4cG9ydCBmdW5jdGlvbiBKc29uUlBDKHNwZWNzOiB7XG5cdFx0LyoqXG5cdFx0ICogSlNPTi1SUEMgbWV0aG9kIGFuZCBwYXJhbWV0ZXJzLlxuXHRcdCAqL1xuXHRcdHJwYzogeyBtZXRob2Q6IHN0cmluZzsgcGFyYW1zPzogYW55IH07XG5cdFx0LyoqXG5cdFx0ICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxuXHRcdCAqL1xuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xuXHRcdC8qKlxuXHRcdCAqIE5hbWVzIG9mIGluZGV4ZWQgcGFyYW1ldGVycyAob3B0aW9uYWwsIGlmIGFueSlcblx0XHQgKi9cblx0XHRhcmdzS2V5cz86IHN0cmluZ1tdO1xuXHRcdC8qKlxuXHRcdCAqIE1hcCBvZiBwcmUtc2V0IHBhcmFtZXRlcnMgKG9uIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscywgb25seSkuXG5cdFx0ICovXG5cdFx0c2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcblx0fSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXG5cdFx0XHR7XG5cdFx0XHRcdG1ldGhvZDogcmV0cmlldmFscy5NZXRob2RzLkh0dHBQb3N0LFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdFx0anNvbnJwYzogXCIyLjBcIixcblx0XHRcdFx0XHRtZXRob2Q6IHNwZWNzLnJwYy5tZXRob2QsXG5cdFx0XHRcdFx0cGFyYW1zOiBzcGVjcy5ycGM/LnBhcmFtcyxcblx0XHRcdFx0XHRpZDogMSxcblx0XHRcdFx0fSkucmVwbGFjZUFsbChcIlxcXFxcXFxcXCIsIFwiXFxcXFwiKSxcblx0XHRcdFx0aGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOFwiIH0sXG5cdFx0XHRcdHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcblx0XHRcdFx0YXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcblx0XHRcdH0sXG5cdFx0XHRzcGVjcz8uc2FtcGxlcyxcblx0XHQpO1xuXHR9XG59XG5leHBvcnQgbmFtZXNwYWNlIHR5cGVzIHtcblx0ZXhwb3J0IGNvbnN0IFJhZG9uQXJyYXkgPSBfUmFkb25BcnJheTtcblx0ZXhwb3J0IGNvbnN0IFJhZG9uQm9vbGVhbiA9IF9SYWRvbkJvb2xlYW47XG5cdGV4cG9ydCBjb25zdCBSYWRvbkJ5dGVzID0gX1JhZG9uQnl0ZXM7XG5cdGV4cG9ydCBjb25zdCBSYWRvbkZsb2F0ID0gX1JhZG9uRmxvYXQ7XG5cdGV4cG9ydCBjb25zdCBSYWRvbkludGVnZXIgPSBfUmFkb25JbnRlZ2VyO1xuXHRleHBvcnQgY29uc3QgUmFkb25NYXAgPSBfUmFkb25NYXA7XG5cdGV4cG9ydCBjb25zdCBSYWRvblNjcmlwdCA9IF9SYWRvblNjcmlwdDtcblx0ZXhwb3J0IGNvbnN0IFJhZG9uU3RyaW5nID0gX1JhZG9uU3RyaW5nO1xuXHRleHBvcnQgY29uc3QgUmFkb25FbmNvZGluZ3MgPSBfUmFkb25FbmNvZGluZ3M7XG59XG5cbmZ1bmN0aW9uIHByb3h5SGFuZGxlcjxUPih0OiB7IG5ldyAoc3BlY3M6IGFueSk6IFQgfSkge1xuXHRyZXR1cm4ge1xuXHRcdGdldCh0YXJnZXQ6IGFueSwgcHJvcDogc3RyaW5nKSB7XG5cdFx0XHRjb25zdCBmb3VuZCA9IHRhcmdldFtwcm9wXSA/PyBmaW5kS2V5SW5PYmplY3QodGFyZ2V0LCBwcm9wKTtcblx0XHRcdC8vIGlmICghZm91bmQpIHtcblx0XHRcdC8vICAgICB0aHJvdyBFdmFsRXJyb3IoYFsnJHtwcm9wfSddIHdhcyBub3QgZm91bmQgaW4gZGljdGlvbmFyeWApXG5cdFx0XHQvLyB9IGVsc2Vcblx0XHRcdGlmIChmb3VuZCAmJiAhKGZvdW5kIGluc3RhbmNlb2YgdCkpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFxuXHRcdFx0XHRcdGBbJyR7cHJvcH0nXSB3YXMgZm91bmQgd2l0aCB0eXBlICR7Zm91bmQ/LmNvbnN0cnVjdG9yPy5uYW1lfSBpbnN0ZWFkIG9mICR7dC5uYW1lfSFgLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZvdW5kO1xuXHRcdH0sXG5cdH07XG59XG5cbmZ1bmN0aW9uIGZpbmRLZXlJbk9iamVjdChkaWN0OiBhbnksIHRhZzogc3RyaW5nKSB7XG5cdGZvciAoY29uc3Qga2V5IGluIGRpY3QpIHtcblx0XHRpZiAodHlwZW9mIGRpY3Rba2V5XSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0aWYgKGtleSA9PT0gdGFnKSB7XG5cdFx0XHRcdHJldHVybiBkaWN0W2tleV07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBmb3VuZDogYW55ID0gZmluZEtleUluT2JqZWN0KGRpY3Rba2V5XSwgdGFnKTtcblx0XHRcdFx0aWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iXX0=
@@ -77,4 +77,4 @@ export function PriceAggregate() {
77
77
  export function PriceTally() {
78
78
  return new RadonReducer(Opcodes.MeanAverage, [StdevFilter(2.5)]);
79
79
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3JlZHVjZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsS0FBSyxJQUFJLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd0RSxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2xCLHFDQUFXLENBQUE7SUFDWCxtREFBa0IsQ0FBQTtJQUNsQix1REFBb0IsQ0FBQTtJQUNwQiwrREFBd0IsQ0FBQTtJQUN4QixrRUFBeUIsQ0FBQTtBQUMxQixDQUFDLEVBTlcsT0FBTyxLQUFQLE9BQU8sUUFNbEI7QUFPRCxNQUFNLE9BQU8sWUFBWTtJQUNmLE1BQU0sQ0FBVTtJQUNoQixPQUFPLENBQWlCO0lBRWpDLFlBQVksTUFBZSxFQUFFLE9BQXVCO1FBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN2QyxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNYLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDNUIsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksT0FBTztvQkFBRSxPQUFPLEdBQUcsR0FBRyxPQUFPLEdBQUcsQ0FBQztnQkFDckMsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JCLEtBQUssT0FBTyxDQUFDLElB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RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBSYWRvbkZpbHRlciwgU3RkZXYgYXMgU3RkZXZGaWx0ZXIgfSBmcm9tIFwiLi9maWx0ZXJzLmpzXCI7XHJcbmltcG9ydCB0eXBlIHsgUmFkb25TY3JpcHQgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xyXG5cclxuZXhwb3J0IGVudW0gT3Bjb2RlcyB7XHJcblx0TW9kZSA9IDB4MDIsXHJcblx0TWVhbkF2ZXJhZ2UgPSAweDAzLFxyXG5cdE1lZGlhbkF2ZXJhZ2UgPSAweDA1LFxyXG5cdFN0YW5kYXJkRGV2aWF0aW9uID0gMHgwNyxcclxuXHRDb25jYXRlbmF0ZUFuZEhhc2ggPSAweDBiLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNwZWNzIHtcclxuXHRmaWx0ZXJzPzogUmFkb25GaWx0ZXJbXTtcclxuXHRzY3JpcHQ/OiBSYWRvblNjcmlwdDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZG9uUmVkdWNlciB7XHJcblx0cmVhZG9ubHkgb3Bjb2RlOiBPcGNvZGVzO1xyXG5cdHJlYWRvbmx5IGZpbHRlcnM/OiBSYWRvbkZpbHRlcltdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihvcGNvZGU6IE9wY29kZXMsIGZpbHRlcnM/OiBSYWRvbkZpbHRlcltdKSB7XHJcblx0XHR0aGlzLm9wY29kZSA9IG9wY29kZTtcclxuXHRcdHRoaXMuZmlsdGVycyA9IGZpbHRlcnM7XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJ0b1N0cmluZ1wiLCB7XHJcblx0XHRcdHZhbHVlOiAoKSA9PiB7XHJcblx0XHRcdFx0bGV0IGZpbHRlcnMgPSBcIlwiO1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVycz8ubWFwKChmaWx0ZXIpID0+IHtcclxuXHRcdFx0XHRcdGZpbHRlcnMgPSBgJHtmaWx0ZXIudG9TdHJpbmcoKX0ke2ZpbHRlcnMgPyBgLiR7ZmlsdGVyc31gIDogXCJcIn1gO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGlmIChmaWx0ZXJzKSBmaWx0ZXJzID0gYCR7ZmlsdGVyc30uYDtcclxuXHRcdFx0XHRzd2l0Y2ggKHRoaXMub3Bjb2RlKSB7XHJcblx0XHRcdFx0XHRjYXNlIE9wY29kZXMuTW9kZTpcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGAke2ZpbHRlcnN9TW9kZSgpYDtcclxuXHRcdFx0XHRcdGNhc2UgT3Bjb2Rlcy5NZWFuQXZlcmFnZTpcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGAke2ZpbHRlcnN9TWVhbigpYDtcclxuXHRcdFx0XHRcdGNhc2UgT3Bjb2Rlcy5NZWRpYW5BdmVyYWdlOlxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gYCR7ZmlsdGVyc31NZWRpYW4oKWA7XHJcblx0XHRcdFx0XHRjYXNlIE9wY29kZXMuU3RhbmRhcmREZXZpYXRpb246XHJcblx0XHRcdFx0XHRcdHJldHVybiBgJHtmaWx0ZXJzfVN0ZGV2KClgO1xyXG5cdFx0XHRcdFx0Y2FzZSBPcGNvZGVzLkNvbmNhdGVuYXRlQW5kSGFzaDpcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGAke2ZpbHRlcnN9Q29uY2F0SGFzaCgpYDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyB0b0pTT04oaHVtYW5pemU/OiBib29sZWFuKTogYW55IHtcclxuXHRcdGNvbnN0IGpzb246IGFueSA9IHtcclxuXHRcdFx0cmVkdWNlcjogaHVtYW5pemUgPyBPcGNvZGVzW3RoaXMub3Bjb2RlXSA6IHRoaXMub3Bjb2RlLFxyXG5cdFx0fTtcclxuXHRcdGpzb24uZmlsdGVycyA9IHRoaXMuZmlsdGVycz8ubWFwKChmaWx0ZXIpID0+IGZpbHRlci50b0pTT04oaHVtYW5pemUpKSB8fCBbXTtcclxuXHRcdHJldHVybiBqc29uO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcclxuXHRcdGNvbnN0IHByb3RvYnVmOiBhbnkgPSB7XHJcblx0XHRcdHJlZHVjZXI6IHRoaXMub3Bjb2RlLFxyXG5cdFx0fTtcclxuXHRcdGlmICh0aGlzLmZpbHRlcnMgJiYgdGhpcy5maWx0ZXJzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0cHJvdG9idWYuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5tYXAoKGZpbHRlcikgPT4gZmlsdGVyLnRvUHJvdG9idWYoKSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcHJvdG9idWY7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgb3BzQ291bnQoKTogbnVtYmVyIHtcclxuXHRcdHJldHVybiAxICsgKHRoaXMuZmlsdGVycz8ubGVuZ3RoIHx8IDApO1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1vZGUoLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xyXG5cdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKE9wY29kZXMuTW9kZSwgZmlsdGVycyk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIE1lYW4oLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xyXG5cdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKE9wY29kZXMuTWVhbkF2ZXJhZ2UsIGZpbHRlcnMpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBNZWRpYW4oLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xyXG5cdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKE9wY29kZXMuTWVkaWFuQXZlcmFnZSwgZmlsdGVycyk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIFN0ZGV2KC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHtcclxuXHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihPcGNvZGVzLlN0YW5kYXJkRGV2aWF0aW9uLCBmaWx0ZXJzKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gQ29uY2F0SGFzaCguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7XHJcblx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoT3Bjb2Rlcy5Db25jYXRlbmF0ZUFuZEhhc2gsIGZpbHRlcnMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUHJpY2VBZ2dyZWdhdGUoKSB7XHJcblx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoT3Bjb2Rlcy5NZWFuQXZlcmFnZSwgW1N0ZGV2RmlsdGVyKDEuNCldKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gUHJpY2VUYWxseSgpIHtcclxuXHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihPcGNvZGVzLk1lYW5BdmVyYWdlLCBbU3RkZXZGaWx0ZXIoMi41KV0pO1xyXG59XHJcbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3JlZHVjZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsS0FBSyxJQUFJLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd0RSxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2xCLHFDQUFXLENBQUE7SUFDWCxtREFBa0IsQ0FBQTtJQUNsQix1REFBb0IsQ0FBQTtJQUNwQiwrREFBd0IsQ0FBQTtJQUN4QixrRUFBeUIsQ0FBQTtBQUMxQixDQUFDLEVBTlcsT0FBTyxLQUFQLE9BQU8sUUFNbEI7QUFPRCxNQUFNLE9BQU8sWUFBWTtJQUNmLE1BQU0sQ0FBVTtJQUNoQixPQUFPLENBQWlCO0lBRWpDLFlBQVksTUFBZSxFQUFFLE9BQXVCO1FBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN2QyxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNYLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDNUIsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksT0FBTztvQkFBRSxPQUFPLEdBQUcsR0FBRyxPQUFPLEdBQUcsQ0FBQztnQkFDckMsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JCLEtBQUssT0FBTyxDQUFDLElB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RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBSYWRvbkZpbHRlciwgU3RkZXYgYXMgU3RkZXZGaWx0ZXIgfSBmcm9tIFwiLi9maWx0ZXJzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJhZG9uU2NyaXB0IH0gZnJvbSBcIi4vdHlwZXMuanNcIjtcblxuZXhwb3J0IGVudW0gT3Bjb2RlcyB7XG5cdE1vZGUgPSAweDAyLFxuXHRNZWFuQXZlcmFnZSA9IDB4MDMsXG5cdE1lZGlhbkF2ZXJhZ2UgPSAweDA1LFxuXHRTdGFuZGFyZERldmlhdGlvbiA9IDB4MDcsXG5cdENvbmNhdGVuYXRlQW5kSGFzaCA9IDB4MGIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BlY3Mge1xuXHRmaWx0ZXJzPzogUmFkb25GaWx0ZXJbXTtcblx0c2NyaXB0PzogUmFkb25TY3JpcHQ7XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvblJlZHVjZXIge1xuXHRyZWFkb25seSBvcGNvZGU6IE9wY29kZXM7XG5cdHJlYWRvbmx5IGZpbHRlcnM/OiBSYWRvbkZpbHRlcltdO1xuXG5cdGNvbnN0cnVjdG9yKG9wY29kZTogT3Bjb2RlcywgZmlsdGVycz86IFJhZG9uRmlsdGVyW10pIHtcblx0XHR0aGlzLm9wY29kZSA9IG9wY29kZTtcblx0XHR0aGlzLmZpbHRlcnMgPSBmaWx0ZXJzO1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInRvU3RyaW5nXCIsIHtcblx0XHRcdHZhbHVlOiAoKSA9PiB7XG5cdFx0XHRcdGxldCBmaWx0ZXJzID0gXCJcIjtcblx0XHRcdFx0dGhpcy5maWx0ZXJzPy5tYXAoKGZpbHRlcikgPT4ge1xuXHRcdFx0XHRcdGZpbHRlcnMgPSBgJHtmaWx0ZXIudG9TdHJpbmcoKX0ke2ZpbHRlcnMgPyBgLiR7ZmlsdGVyc31gIDogXCJcIn1gO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKGZpbHRlcnMpIGZpbHRlcnMgPSBgJHtmaWx0ZXJzfS5gO1xuXHRcdFx0XHRzd2l0Y2ggKHRoaXMub3Bjb2RlKSB7XG5cdFx0XHRcdFx0Y2FzZSBPcGNvZGVzLk1vZGU6XG5cdFx0XHRcdFx0XHRyZXR1cm4gYCR7ZmlsdGVyc31Nb2RlKClgO1xuXHRcdFx0XHRcdGNhc2UgT3Bjb2Rlcy5NZWFuQXZlcmFnZTpcblx0XHRcdFx0XHRcdHJldHVybiBgJHtmaWx0ZXJzfU1lYW4oKWA7XG5cdFx0XHRcdFx0Y2FzZSBPcGNvZGVzLk1lZGlhbkF2ZXJhZ2U6XG5cdFx0XHRcdFx0XHRyZXR1cm4gYCR7ZmlsdGVyc31NZWRpYW4oKWA7XG5cdFx0XHRcdFx0Y2FzZSBPcGNvZGVzLlN0YW5kYXJkRGV2aWF0aW9uOlxuXHRcdFx0XHRcdFx0cmV0dXJuIGAke2ZpbHRlcnN9U3RkZXYoKWA7XG5cdFx0XHRcdFx0Y2FzZSBPcGNvZGVzLkNvbmNhdGVuYXRlQW5kSGFzaDpcblx0XHRcdFx0XHRcdHJldHVybiBgJHtmaWx0ZXJzfUNvbmNhdEhhc2goKWA7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgdG9KU09OKGh1bWFuaXplPzogYm9vbGVhbik6IGFueSB7XG5cdFx0Y29uc3QganNvbjogYW55ID0ge1xuXHRcdFx0cmVkdWNlcjogaHVtYW5pemUgPyBPcGNvZGVzW3RoaXMub3Bjb2RlXSA6IHRoaXMub3Bjb2RlLFxuXHRcdH07XG5cdFx0anNvbi5maWx0ZXJzID0gdGhpcy5maWx0ZXJzPy5tYXAoKGZpbHRlcikgPT4gZmlsdGVyLnRvSlNPTihodW1hbml6ZSkpIHx8IFtdO1xuXHRcdHJldHVybiBqc29uO1xuXHR9XG5cblx0cHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcblx0XHRjb25zdCBwcm90b2J1ZjogYW55ID0ge1xuXHRcdFx0cmVkdWNlcjogdGhpcy5vcGNvZGUsXG5cdFx0fTtcblx0XHRpZiAodGhpcy5maWx0ZXJzICYmIHRoaXMuZmlsdGVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHRwcm90b2J1Zi5maWx0ZXJzID0gdGhpcy5maWx0ZXJzLm1hcCgoZmlsdGVyKSA9PiBmaWx0ZXIudG9Qcm90b2J1ZigpKTtcblx0XHR9XG5cdFx0cmV0dXJuIHByb3RvYnVmO1xuXHR9XG5cblx0cHVibGljIG9wc0NvdW50KCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIDEgKyAodGhpcy5maWx0ZXJzPy5sZW5ndGggfHwgMCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vZGUoLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xuXHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihPcGNvZGVzLk1vZGUsIGZpbHRlcnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIE1lYW4oLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xuXHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihPcGNvZGVzLk1lYW5BdmVyYWdlLCBmaWx0ZXJzKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBNZWRpYW4oLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xuXHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihPcGNvZGVzLk1lZGlhbkF2ZXJhZ2UsIGZpbHRlcnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIFN0ZGV2KC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHtcblx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoT3Bjb2Rlcy5TdGFuZGFyZERldmlhdGlvbiwgZmlsdGVycyk7XG59XG5leHBvcnQgZnVuY3Rpb24gQ29uY2F0SGFzaCguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7XG5cdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKE9wY29kZXMuQ29uY2F0ZW5hdGVBbmRIYXNoLCBmaWx0ZXJzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFByaWNlQWdncmVnYXRlKCkge1xuXHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihPcGNvZGVzLk1lYW5BdmVyYWdlLCBbU3RkZXZGaWx0ZXIoMS40KV0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIFByaWNlVGFsbHkoKSB7XG5cdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKE9wY29kZXMuTWVhbkF2ZXJhZ2UsIFtTdGRldkZpbHRlcigyLjUpXSk7XG59XG4iXX0=