@cubist-labs/cubesigner-sdk 0.4.263 → 0.4.265

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 (106) hide show
  1. package/dist/package.json +12 -4
  2. package/dist/src/acl.js +1 -2
  3. package/dist/src/audit_log.d.ts +2 -2
  4. package/dist/src/audit_log.js +116 -119
  5. package/dist/src/bucket.d.ts +2 -2
  6. package/dist/src/bucket.d.ts.map +1 -1
  7. package/dist/src/bucket.js +2 -5
  8. package/dist/src/client/api_client.d.ts +16 -12
  9. package/dist/src/client/api_client.d.ts.map +1 -1
  10. package/dist/src/client/api_client.js +288 -292
  11. package/dist/src/client/base_client.d.ts +6 -6
  12. package/dist/src/client/base_client.d.ts.map +1 -1
  13. package/dist/src/client/base_client.js +27 -38
  14. package/dist/src/client/session.d.ts +2 -2
  15. package/dist/src/client/session.d.ts.map +1 -1
  16. package/dist/src/client/session.js +20 -35
  17. package/dist/src/client.d.ts +18 -18
  18. package/dist/src/client.d.ts.map +1 -1
  19. package/dist/src/client.js +14 -18
  20. package/dist/src/contact.d.ts +3 -3
  21. package/dist/src/contact.d.ts.map +1 -1
  22. package/dist/src/contact.js +4 -8
  23. package/dist/src/diffie_hellman.d.ts +1 -1
  24. package/dist/src/diffie_hellman.d.ts.map +1 -1
  25. package/dist/src/diffie_hellman.js +9 -12
  26. package/dist/src/env.js +13 -20
  27. package/dist/src/error.d.ts +2 -2
  28. package/dist/src/error.d.ts.map +1 -1
  29. package/dist/src/error.js +3 -8
  30. package/dist/src/events.js +2 -6
  31. package/dist/src/evm/index.d.ts +1 -1
  32. package/dist/src/evm/index.d.ts.map +1 -1
  33. package/dist/src/evm/index.js +5 -9
  34. package/dist/src/fetch.d.ts +1 -1
  35. package/dist/src/fetch.d.ts.map +1 -1
  36. package/dist/src/fetch.js +10 -15
  37. package/dist/src/index.d.ts +24 -24
  38. package/dist/src/index.d.ts.map +1 -1
  39. package/dist/src/index.js +25 -48
  40. package/dist/src/key.d.ts +5 -5
  41. package/dist/src/key.d.ts.map +1 -1
  42. package/dist/src/key.js +28 -33
  43. package/dist/src/mfa.d.ts +2 -2
  44. package/dist/src/mfa.d.ts.map +1 -1
  45. package/dist/src/mfa.js +14 -25
  46. package/dist/src/org.d.ts +197 -197
  47. package/dist/src/org.d.ts.map +1 -1
  48. package/dist/src/org.js +28 -32
  49. package/dist/src/paginator.js +3 -8
  50. package/dist/src/passkey.d.ts +1 -1
  51. package/dist/src/passkey.d.ts.map +1 -1
  52. package/dist/src/passkey.js +16 -23
  53. package/dist/src/policy.d.ts +1 -1
  54. package/dist/src/policy.d.ts.map +1 -1
  55. package/dist/src/policy.js +17 -27
  56. package/dist/src/response.d.ts +16 -7
  57. package/dist/src/response.d.ts.map +1 -1
  58. package/dist/src/response.js +42 -21
  59. package/dist/src/retry.d.ts.map +1 -1
  60. package/dist/src/retry.js +5 -11
  61. package/dist/src/role.d.ts +3 -3
  62. package/dist/src/role.d.ts.map +1 -1
  63. package/dist/src/role.js +13 -18
  64. package/dist/src/schema.d.ts +115 -38
  65. package/dist/src/schema.d.ts.map +1 -1
  66. package/dist/src/schema.js +2 -3
  67. package/dist/src/schema_types.d.ts +6 -3
  68. package/dist/src/schema_types.d.ts.map +1 -1
  69. package/dist/src/schema_types.js +11 -7
  70. package/dist/src/scopes.d.ts +1 -1
  71. package/dist/src/scopes.d.ts.map +1 -1
  72. package/dist/src/scopes.js +19 -21
  73. package/dist/src/signer_session.d.ts +1 -1
  74. package/dist/src/signer_session.d.ts.map +1 -1
  75. package/dist/src/signer_session.js +2 -6
  76. package/dist/src/user_export.d.ts +1 -1
  77. package/dist/src/user_export.d.ts.map +1 -1
  78. package/dist/src/user_export.js +10 -18
  79. package/dist/src/util.js +9 -19
  80. package/package.json +12 -4
  81. package/src/audit_log.ts +1 -1
  82. package/src/bucket.ts +2 -2
  83. package/src/client/api_client.ts +25 -19
  84. package/src/client/base_client.ts +10 -10
  85. package/src/client/session.ts +4 -4
  86. package/src/client.ts +12 -6
  87. package/src/contact.ts +3 -3
  88. package/src/diffie_hellman.ts +3 -3
  89. package/src/env.ts +3 -3
  90. package/src/error.ts +2 -2
  91. package/src/evm/index.ts +1 -1
  92. package/src/fetch.ts +3 -3
  93. package/src/index.ts +29 -24
  94. package/src/key.ts +8 -8
  95. package/src/mfa.ts +3 -3
  96. package/src/org.ts +4 -4
  97. package/src/passkey.ts +1 -1
  98. package/src/policy.ts +2 -2
  99. package/src/response.ts +57 -12
  100. package/src/role.ts +3 -3
  101. package/src/schema.ts +107 -21
  102. package/src/schema_types.ts +14 -3
  103. package/src/scopes.ts +2 -1
  104. package/src/signer_session.ts +1 -1
  105. package/src/user_export.ts +2 -2
  106. package/tsconfig.json +12 -0
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
2
  if (kind === "m") throw new TypeError("Private method is not writable");
4
3
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
@@ -11,10 +10,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
11
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
11
  };
13
12
  var _Paginator_listFn, _Paginator_lastFn, _Paginator_combineFn, _Paginator_opts, _Paginator_last, _Paginator_done;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.Paginator = exports.Page = void 0;
16
13
  /** Static constructors for `IPage` */
17
- class Page {
14
+ export class Page {
18
15
  /**
19
16
  * The default is to fetch the entire result set
20
17
  * (by repeatedly calling the remote endpoint until all pages are retrieved).
@@ -27,14 +24,13 @@ class Page {
27
24
  };
28
25
  }
29
26
  }
30
- exports.Page = Page;
31
27
  /**
32
28
  * Helper class for fetching paginated results.
33
29
  *
34
30
  * @template U The type of the response
35
31
  * @template A The type of the aggregate result (produced by {@link fetchAll})
36
32
  */
37
- class Paginator {
33
+ export class Paginator {
38
34
  /**
39
35
  * @param pageOpts Pagination options
40
36
  * @param listFn Calls a remote endpoint that returns a paginated response
@@ -130,6 +126,5 @@ class Paginator {
130
126
  return result;
131
127
  }
132
128
  }
133
- exports.Paginator = Paginator;
134
129
  _Paginator_listFn = new WeakMap(), _Paginator_lastFn = new WeakMap(), _Paginator_combineFn = new WeakMap(), _Paginator_opts = new WeakMap(), _Paginator_last = new WeakMap(), _Paginator_done = new WeakMap();
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhZ2luYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFhQSxzQ0FBc0M7QUFDdEMsTUFBYSxJQUFJO0lBQ2Y7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsT0FBTztRQUNaLE9BQWlCO1lBQ2YsR0FBRyxFQUFFLElBQUk7U0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBWkQsb0JBWUM7QUF5QkQ7Ozs7O0dBS0c7QUFDSCxNQUFhLFNBQVM7SUFRcEI7Ozs7O09BS0c7SUFDSCxZQUNFLFFBQWtCLEVBQ2xCLE1BQWlCLEVBQ2pCLE1BQWlCLEVBQ2pCLFNBQTBCO1FBakJuQixvQ0FBbUI7UUFDbkIsb0NBQW1CO1FBQ25CLHVDQUE0QjtRQUNyQyxrQ0FBZ0I7UUFDaEIsa0NBQWlDO1FBQ2pDLGtDQUFlO1FBY2IsdUJBQUEsSUFBSSxxQkFBVyxNQUFNLE1BQUEsQ0FBQztRQUN0Qix1QkFBQSxJQUFJLHdCQUFjLFNBQVMsTUFBQSxDQUFDO1FBQzVCLHVCQUFBLElBQUkscUJBQVcsTUFBTSxNQUFBLENBQUM7UUFDdEIsdUJBQUEsSUFBSSxtQkFBUyxRQUFRLE1BQUEsQ0FBQztRQUN0Qix1QkFBQSxJQUFJLG1CQUFTLFFBQVEsQ0FBQyxLQUFLLE1BQUEsQ0FBQztRQUM1Qix1QkFBQSxJQUFJLG1CQUFTLEtBQUssTUFBQSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUNWLFFBQWtCLEVBQ2xCLE1BQWlCLEVBQ2pCLE9BQXlCLEVBQ3pCLE1BQWlCO1FBRWpCLE9BQU8sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDM0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDOUIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sdUJBQUEsSUFBSSx1QkFBTSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsT0FBTyx1QkFBQSxJQUFJLHVCQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFNBQVM7UUFDYixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwQyxPQUFPLHVCQUFBLElBQUksNEJBQVcsTUFBZixJQUFJLEVBQVksU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsU0FBUztRQUNiLElBQUksdUJBQUEsSUFBSSx1QkFBTSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLHVCQUFBLElBQUkseUJBQVEsTUFBWixJQUFJLEVBQVM7WUFDOUIsV0FBVyxFQUFFLHVCQUFBLElBQUksdUJBQU0sQ0FBQyxJQUFJO1lBQzVCLFlBQVksRUFBRSx1QkFBQSxJQUFJLHVCQUFNO1NBQ3pCLENBQUMsQ0FBQztRQUNILHVCQUFBLElBQUksbUJBQVMsdUJBQUEsSUFBSSx5QkFBUSxNQUFaLElBQUksRUFBUyxJQUFJLENBQUMsTUFBQSxDQUFDO1FBQ2hDLHVCQUFBLElBQUksbUJBQVMsQ0FBQyx1QkFBQSxJQUFJLHVCQUFNLE1BQUEsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckMsSUFBSSxNQUFNLEdBQUcsdUJBQUEsSUFBSSw0QkFBVyxNQUFmLElBQUksRUFBWSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsT0FBTyxDQUFDLHVCQUFBLElBQUksdUJBQU0sRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sR0FBRyx1QkFBQSxJQUFJLDRCQUFXLE1BQWYsSUFBSSxFQUFZLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBaEhELDhCQWdIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBQYWdpbmF0aW9uIG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VPcHRzIHtcbiAgLyoqIE1heCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuICovXG4gIHNpemU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTdGFydGluZyBwb2ludCAoaS5lLiwgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgcHJldmlvdXMgcGFnZSkuXG4gICAqIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgKi9cbiAgc3RhcnQ/OiBzdHJpbmc7XG4gIC8qKiBJdGVyYXRlIHVudGlsIHJldHJpZXZpbmcgdGhlIGVudGlyZSByZXN1bHQgc2V0LiAqL1xuICBhbGw6IGJvb2xlYW47XG59XG5cbi8qKiBTdGF0aWMgY29uc3RydWN0b3JzIGZvciBgSVBhZ2VgICovXG5leHBvcnQgY2xhc3MgUGFnZSB7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBpcyB0byBmZXRjaCB0aGUgZW50aXJlIHJlc3VsdCBzZXRcbiAgICogKGJ5IHJlcGVhdGVkbHkgY2FsbGluZyB0aGUgcmVtb3RlIGVuZHBvaW50IHVudGlsIGFsbCBwYWdlcyBhcmUgcmV0cmlldmVkKS5cbiAgICpcbiAgICogQHJldHVybnMgUGFnaW5hdGlvbiBvcHRpb25zLlxuICAgKi9cbiAgc3RhdGljIGRlZmF1bHQoKTogUGFnZU9wdHMge1xuICAgIHJldHVybiA8UGFnZU9wdHM+e1xuICAgICAgYWxsOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlUXVlcnlBcmdzIHtcbiAgLyoqXG4gICAqIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgKlxuICAgKiBUaGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgKi9cbiAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLlxuICAgKlxuICAgKiBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgdGhlIGV4YWN0XG4gICAqIHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICovXG4gIFwicGFnZS5zdGFydFwiPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgTGlzdEZuPFU+ID0gKHBhZ2VRdWVyeUFyZ3M6IFBhZ2VRdWVyeUFyZ3MpID0+IFByb21pc2U8VT47XG5leHBvcnQgdHlwZSBMYXN0Rm48VT4gPSAocmVzcDogVSkgPT4gc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbmV4cG9ydCB0eXBlIENvbWJpbmVGbjxBLCBVPiA9IChhY2M6IEEgfCB1bmRlZmluZWQsIG5leHQ6IFUpID0+IEE7XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBmZXRjaGluZyBwYWdpbmF0ZWQgcmVzdWx0cy5cbiAqXG4gKiBAdGVtcGxhdGUgVSBUaGUgdHlwZSBvZiB0aGUgcmVzcG9uc2VcbiAqIEB0ZW1wbGF0ZSBBIFRoZSB0eXBlIG9mIHRoZSBhZ2dyZWdhdGUgcmVzdWx0IChwcm9kdWNlZCBieSB7QGxpbmsgZmV0Y2hBbGx9KVxuICovXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yPFUsIEE+IHtcbiAgcmVhZG9ubHkgI2xpc3RGbjogTGlzdEZuPFU+O1xuICByZWFkb25seSAjbGFzdEZuOiBMYXN0Rm48VT47XG4gIHJlYWRvbmx5ICNjb21iaW5lRm46IENvbWJpbmVGbjxBLCBVPjtcbiAgI29wdHM6IFBhZ2VPcHRzO1xuICAjbGFzdDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgI2RvbmU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwYWdlT3B0cyBQYWdpbmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIGxpc3RGbiBDYWxscyBhIHJlbW90ZSBlbmRwb2ludCB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgcmVzcG9uc2VcbiAgICogQHBhcmFtIGxhc3RGbiBFeHRyYWN0cyB0aGUgbGFzdCBldmFsdWF0ZWQga2V5IGZyb20gdGhlIHBhZ2luYXRlZCByZXNwb25zZVxuICAgKiBAcGFyYW0gY29tYmluZUZuIENvbWJpbmVzIHRoZSBjdXJyZW50IHJlc3BvbnNlIHdpdGggYSBwcmV2aW91cyBvbmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHBhZ2VPcHRzOiBQYWdlT3B0cyxcbiAgICBsaXN0Rm46IExpc3RGbjxVPixcbiAgICBsYXN0Rm46IExhc3RGbjxVPixcbiAgICBjb21iaW5lRm46IENvbWJpbmVGbjxBLCBVPixcbiAgKSB7XG4gICAgdGhpcy4jbGlzdEZuID0gbGlzdEZuO1xuICAgIHRoaXMuI2NvbWJpbmVGbiA9IGNvbWJpbmVGbjtcbiAgICB0aGlzLiNsYXN0Rm4gPSBsYXN0Rm47XG4gICAgdGhpcy4jb3B0cyA9IHBhZ2VPcHRzO1xuICAgIHRoaXMuI2xhc3QgPSBwYWdlT3B0cy5zdGFydDtcbiAgICB0aGlzLiNkb25lID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBhZ2VPcHRzIFBhZ2luYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0gbGlzdEZuIENhbGxzIGEgcmVtb3RlIGVuZHBvaW50IHRoYXQgcmV0dXJucyBhIHBhZ2luYXRlZCByZXNwb25zZVxuICAgKiBAcGFyYW0gaXRlbXNGbiBFeHRyYWN0cyBpdGVtcyBmcm9tIHRoZSBwYWdpbmF0ZWQgcmVzcG9uc2VcbiAgICogQHBhcmFtIGxhc3RGbiBFeHRyYWN0cyB0aGUgbGFzdCBldmFsdWF0ZWQga2V5IGZyb20gdGhlIHBhZ2luYXRlZCByZXNwb25zZVxuICAgKiBAcmV0dXJucyBQYWdpbmF0b3Igd2hpY2ggY29tYmluZXMgcmVzcG9uc2VzIGJ5IGNvbmNhdGVuYXRpbmcgdGhlaXIgaXRlbXMgKGFzIGRlZmluZWQgYnkge0BsaW5rIGl0ZW1zRm59KS5cbiAgICovXG4gIHN0YXRpYyBpdGVtczxVLCBUPihcbiAgICBwYWdlT3B0czogUGFnZU9wdHMsXG4gICAgbGlzdEZuOiBMaXN0Rm48VT4sXG4gICAgaXRlbXNGbjogKHJlc3A6IFUpID0+IFRbXSxcbiAgICBsYXN0Rm46IExhc3RGbjxVPixcbiAgKTogUGFnaW5hdG9yPFUsIFRbXT4ge1xuICAgIHJldHVybiBuZXcgUGFnaW5hdG9yKHBhZ2VPcHRzLCBsaXN0Rm4sIGxhc3RGbiwgKGFjYywgbmV4dCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYWNjID8/IFtdO1xuICAgICAgcmVzdWx0LnB1c2goLi4uaXRlbXNGbihuZXh0KSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhpcyBwYWdpbmF0b3IgYWxyZWFkeSBmZXRjaGVkIGV2ZXJ5dGhpbmcuIE9uY2UgZG9uZSwgY2FsbGluZ1xuICAgKiAge0BsaW5rIGZldGNoTmV4dH0sIHtAbGluayBmZXRjaFBhZ2V9LCBhbmQge0BsaW5rIGZldGNoQWxsfSBpcyBubyBsb25nZXIgYWxsb3dlZC5cbiAgICovXG4gIGlzRG9uZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jZG9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGVpdGhlciBhIHNpbmdsZSBwYWdlIG9yIHRoZSBlbnRpcmUgcmVzdWx0IHNldCwgZGVwZW5kaW5nIG9uXG4gICAqIHRoZSBgYWxsYCBwcm9wZXJ0eSBvZiB0aGUgcGFnaW5hdGlvbiBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHNpbmdsZSBwYWdlIG9yIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICovXG4gIGFzeW5jIGZldGNoKCk6IFByb21pc2U8QT4ge1xuICAgIHJldHVybiB0aGlzLiNvcHRzLmFsbCA/IGF3YWl0IHRoaXMuZmV0Y2hBbGwoKSA6IGF3YWl0IHRoaXMuZmV0Y2hQYWdlKCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIHNpbmdsZSBwYWdlIG9mIHRoZSByZXN1bHQgc2V0IGZyb20gd2hlcmUgaXQgcHJldmlvdXNseSBsZWZ0IG9mZi5cbiAgICogTXV0YXRlcyBzZWxmIHRvIHJlbWVtYmVyIHdoZXJlIGl0IGxlZnQgb2ZmLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LlxuICAgKi9cbiAgYXN5bmMgZmV0Y2hQYWdlKCk6IFByb21pc2U8QT4ge1xuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZldGNoTmV4dCgpO1xuICAgIHJldHVybiB0aGlzLiNjb21iaW5lRm4odW5kZWZpbmVkLCByZXNwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBuZXh0IHJlc3BvbnNlLCBmcm9tIHdoZXJlIGl0IHByZXZpb3VzbHkgbGVmdCBvZmYuXG4gICAqIE11dGF0ZXMgc2VsZiB0byByZW1lbWJlciB3aGVyZSBpdCBsZWZ0IG9mZi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIG5leHQgcmVzcG9uc2UuXG4gICAqIEB0aHJvd3MgSWYgYWxyZWFkeSBkb25lXG4gICAqL1xuICBhc3luYyBmZXRjaE5leHQoKTogUHJvbWlzZTxVPiB7XG4gICAgaWYgKHRoaXMuI2RvbmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkFscmVhZHkgZG9uZS5cIik7XG4gICAgfVxuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLiNsaXN0Rm4oe1xuICAgICAgXCJwYWdlLnNpemVcIjogdGhpcy4jb3B0cy5zaXplLFxuICAgICAgXCJwYWdlLnN0YXJ0XCI6IHRoaXMuI2xhc3QsXG4gICAgfSk7XG4gICAgdGhpcy4jbGFzdCA9IHRoaXMuI2xhc3RGbihyZXNwKTtcbiAgICB0aGlzLiNkb25lID0gIXRoaXMuI2xhc3Q7XG4gICAgcmV0dXJuIHJlc3A7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgZW50aXJlIHJlc3VsdCBzZXQgc3RhcnRpbmcgZnJvbSB3aGVyZSBpdCBwcmV2aW91c2x5IGxlZnQgb2ZmXG4gICAqIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBwYWdlcyByZXR1cm5lZCBieSB0aGUgcmVtb3RlIGVuZC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgKi9cbiAgYXN5bmMgZmV0Y2hBbGwoKTogUHJvbWlzZTxBPiB7XG4gICAgY29uc3QgZmlyc3QgPSBhd2FpdCB0aGlzLmZldGNoTmV4dCgpO1xuICAgIGxldCByZXN1bHQgPSB0aGlzLiNjb21iaW5lRm4odW5kZWZpbmVkLCBmaXJzdCk7XG4gICAgd2hpbGUgKCF0aGlzLiNkb25lKSB7XG4gICAgICBjb25zdCBuZXh0ID0gYXdhaXQgdGhpcy5mZXRjaE5leHQoKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuI2NvbWJpbmVGbihyZXN1bHQsIG5leHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhZ2luYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFhQSxzQ0FBc0M7QUFDdEMsTUFBTSxPQUFPLElBQUk7SUFDZjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBaUI7WUFDZixHQUFHLEVBQUUsSUFBSTtTQUNWLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF5QkQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQVFwQjs7Ozs7T0FLRztJQUNILFlBQ0UsUUFBa0IsRUFDbEIsTUFBaUIsRUFDakIsTUFBaUIsRUFDakIsU0FBMEI7UUFqQm5CLG9DQUFtQjtRQUNuQixvQ0FBbUI7UUFDbkIsdUNBQTRCO1FBQ3JDLGtDQUFnQjtRQUNoQixrQ0FBaUM7UUFDakMsa0NBQWU7UUFjYix1QkFBQSxJQUFJLHFCQUFXLE1BQU0sTUFBQSxDQUFDO1FBQ3RCLHVCQUFBLElBQUksd0JBQWMsU0FBUyxNQUFBLENBQUM7UUFDNUIsdUJBQUEsSUFBSSxxQkFBVyxNQUFNLE1BQUEsQ0FBQztRQUN0Qix1QkFBQSxJQUFJLG1CQUFTLFFBQVEsTUFBQSxDQUFDO1FBQ3RCLHVCQUFBLElBQUksbUJBQVMsUUFBUSxDQUFDLEtBQUssTUFBQSxDQUFDO1FBQzVCLHVCQUFBLElBQUksbUJBQVMsS0FBSyxNQUFBLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQ1YsUUFBa0IsRUFDbEIsTUFBaUIsRUFDakIsT0FBeUIsRUFDekIsTUFBaUI7UUFFakIsT0FBTyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUMzRCxNQUFNLE1BQU0sR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM5QixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0osT0FBTyx1QkFBQSxJQUFJLHVCQUFNLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxPQUFPLHVCQUFBLElBQUksdUJBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sdUJBQUEsSUFBSSw0QkFBVyxNQUFmLElBQUksRUFBWSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxTQUFTO1FBQ2IsSUFBSSx1QkFBQSxJQUFJLHVCQUFNLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sdUJBQUEsSUFBSSx5QkFBUSxNQUFaLElBQUksRUFBUztZQUM5QixXQUFXLEVBQUUsdUJBQUEsSUFBSSx1QkFBTSxDQUFDLElBQUk7WUFDNUIsWUFBWSxFQUFFLHVCQUFBLElBQUksdUJBQU07U0FDekIsQ0FBQyxDQUFDO1FBQ0gsdUJBQUEsSUFBSSxtQkFBUyx1QkFBQSxJQUFJLHlCQUFRLE1BQVosSUFBSSxFQUFTLElBQUksQ0FBQyxNQUFBLENBQUM7UUFDaEMsdUJBQUEsSUFBSSxtQkFBUyxDQUFDLHVCQUFBLElBQUksdUJBQU0sTUFBQSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFFBQVE7UUFDWixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQyxJQUFJLE1BQU0sR0FBRyx1QkFBQSxJQUFJLDRCQUFXLE1BQWYsSUFBSSxFQUFZLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPLENBQUMsdUJBQUEsSUFBSSx1QkFBTSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEMsTUFBTSxHQUFHLHVCQUFBLElBQUksNEJBQVcsTUFBZixJQUFJLEVBQVksTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGFnaW5hdGlvbiBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlT3B0cyB7XG4gIC8qKiBNYXggbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLiAqL1xuICBzaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogU3RhcnRpbmcgcG9pbnQgKGkuZS4sICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHByZXZpb3VzIHBhZ2UpLlxuICAgKiBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICovXG4gIHN0YXJ0Pzogc3RyaW5nO1xuICAvKiogSXRlcmF0ZSB1bnRpbCByZXRyaWV2aW5nIHRoZSBlbnRpcmUgcmVzdWx0IHNldC4gKi9cbiAgYWxsOiBib29sZWFuO1xufVxuXG4vKiogU3RhdGljIGNvbnN0cnVjdG9ycyBmb3IgYElQYWdlYCAqL1xuZXhwb3J0IGNsYXNzIFBhZ2Uge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgaXMgdG8gZmV0Y2ggdGhlIGVudGlyZSByZXN1bHQgc2V0XG4gICAqIChieSByZXBlYXRlZGx5IGNhbGxpbmcgdGhlIHJlbW90ZSBlbmRwb2ludCB1bnRpbCBhbGwgcGFnZXMgYXJlIHJldHJpZXZlZCkuXG4gICAqXG4gICAqIEByZXR1cm5zIFBhZ2luYXRpb24gb3B0aW9ucy5cbiAgICovXG4gIHN0YXRpYyBkZWZhdWx0KCk6IFBhZ2VPcHRzIHtcbiAgICByZXR1cm4gPFBhZ2VPcHRzPntcbiAgICAgIGFsbDogdHJ1ZSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVF1ZXJ5QXJncyB7XG4gIC8qKlxuICAgKiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICpcbiAgICogVGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICovXG4gIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydCBvZiB0aGUgcGFnZS5cbiAgICpcbiAgICogT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IHRoZSBleGFjdFxuICAgKiB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAqL1xuICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIExpc3RGbjxVPiA9IChwYWdlUXVlcnlBcmdzOiBQYWdlUXVlcnlBcmdzKSA9PiBQcm9taXNlPFU+O1xuZXhwb3J0IHR5cGUgTGFzdEZuPFU+ID0gKHJlc3A6IFUpID0+IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG5leHBvcnQgdHlwZSBDb21iaW5lRm48QSwgVT4gPSAoYWNjOiBBIHwgdW5kZWZpbmVkLCBuZXh0OiBVKSA9PiBBO1xuXG4vKipcbiAqIEhlbHBlciBjbGFzcyBmb3IgZmV0Y2hpbmcgcGFnaW5hdGVkIHJlc3VsdHMuXG4gKlxuICogQHRlbXBsYXRlIFUgVGhlIHR5cGUgb2YgdGhlIHJlc3BvbnNlXG4gKiBAdGVtcGxhdGUgQSBUaGUgdHlwZSBvZiB0aGUgYWdncmVnYXRlIHJlc3VsdCAocHJvZHVjZWQgYnkge0BsaW5rIGZldGNoQWxsfSlcbiAqL1xuZXhwb3J0IGNsYXNzIFBhZ2luYXRvcjxVLCBBPiB7XG4gIHJlYWRvbmx5ICNsaXN0Rm46IExpc3RGbjxVPjtcbiAgcmVhZG9ubHkgI2xhc3RGbjogTGFzdEZuPFU+O1xuICByZWFkb25seSAjY29tYmluZUZuOiBDb21iaW5lRm48QSwgVT47XG4gICNvcHRzOiBQYWdlT3B0cztcbiAgI2xhc3Q6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICNkb25lOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFnZU9wdHMgUGFnaW5hdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSBsaXN0Rm4gQ2FsbHMgYSByZW1vdGUgZW5kcG9pbnQgdGhhdCByZXR1cm5zIGEgcGFnaW5hdGVkIHJlc3BvbnNlXG4gICAqIEBwYXJhbSBsYXN0Rm4gRXh0cmFjdHMgdGhlIGxhc3QgZXZhbHVhdGVkIGtleSBmcm9tIHRoZSBwYWdpbmF0ZWQgcmVzcG9uc2VcbiAgICogQHBhcmFtIGNvbWJpbmVGbiBDb21iaW5lcyB0aGUgY3VycmVudCByZXNwb25zZSB3aXRoIGEgcHJldmlvdXMgb25lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwYWdlT3B0czogUGFnZU9wdHMsXG4gICAgbGlzdEZuOiBMaXN0Rm48VT4sXG4gICAgbGFzdEZuOiBMYXN0Rm48VT4sXG4gICAgY29tYmluZUZuOiBDb21iaW5lRm48QSwgVT4sXG4gICkge1xuICAgIHRoaXMuI2xpc3RGbiA9IGxpc3RGbjtcbiAgICB0aGlzLiNjb21iaW5lRm4gPSBjb21iaW5lRm47XG4gICAgdGhpcy4jbGFzdEZuID0gbGFzdEZuO1xuICAgIHRoaXMuI29wdHMgPSBwYWdlT3B0cztcbiAgICB0aGlzLiNsYXN0ID0gcGFnZU9wdHMuc3RhcnQ7XG4gICAgdGhpcy4jZG9uZSA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwYWdlT3B0cyBQYWdpbmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIGxpc3RGbiBDYWxscyBhIHJlbW90ZSBlbmRwb2ludCB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgcmVzcG9uc2VcbiAgICogQHBhcmFtIGl0ZW1zRm4gRXh0cmFjdHMgaXRlbXMgZnJvbSB0aGUgcGFnaW5hdGVkIHJlc3BvbnNlXG4gICAqIEBwYXJhbSBsYXN0Rm4gRXh0cmFjdHMgdGhlIGxhc3QgZXZhbHVhdGVkIGtleSBmcm9tIHRoZSBwYWdpbmF0ZWQgcmVzcG9uc2VcbiAgICogQHJldHVybnMgUGFnaW5hdG9yIHdoaWNoIGNvbWJpbmVzIHJlc3BvbnNlcyBieSBjb25jYXRlbmF0aW5nIHRoZWlyIGl0ZW1zIChhcyBkZWZpbmVkIGJ5IHtAbGluayBpdGVtc0ZufSkuXG4gICAqL1xuICBzdGF0aWMgaXRlbXM8VSwgVD4oXG4gICAgcGFnZU9wdHM6IFBhZ2VPcHRzLFxuICAgIGxpc3RGbjogTGlzdEZuPFU+LFxuICAgIGl0ZW1zRm46IChyZXNwOiBVKSA9PiBUW10sXG4gICAgbGFzdEZuOiBMYXN0Rm48VT4sXG4gICk6IFBhZ2luYXRvcjxVLCBUW10+IHtcbiAgICByZXR1cm4gbmV3IFBhZ2luYXRvcihwYWdlT3B0cywgbGlzdEZuLCBsYXN0Rm4sIChhY2MsIG5leHQpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGFjYyA/PyBbXTtcbiAgICAgIHJlc3VsdC5wdXNoKC4uLml0ZW1zRm4obmV4dCkpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoaXMgcGFnaW5hdG9yIGFscmVhZHkgZmV0Y2hlZCBldmVyeXRoaW5nLiBPbmNlIGRvbmUsIGNhbGxpbmdcbiAgICogIHtAbGluayBmZXRjaE5leHR9LCB7QGxpbmsgZmV0Y2hQYWdlfSwgYW5kIHtAbGluayBmZXRjaEFsbH0gaXMgbm8gbG9uZ2VyIGFsbG93ZWQuXG4gICAqL1xuICBpc0RvbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2RvbmU7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBlaXRoZXIgYSBzaW5nbGUgcGFnZSBvciB0aGUgZW50aXJlIHJlc3VsdCBzZXQsIGRlcGVuZGluZyBvblxuICAgKiB0aGUgYGFsbGAgcHJvcGVydHkgb2YgdGhlIHBhZ2luYXRpb24gb3B0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMgQSBzaW5nbGUgcGFnZSBvciB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAqL1xuICBhc3luYyBmZXRjaCgpOiBQcm9taXNlPEE+IHtcbiAgICByZXR1cm4gdGhpcy4jb3B0cy5hbGwgPyBhd2FpdCB0aGlzLmZldGNoQWxsKCkgOiBhd2FpdCB0aGlzLmZldGNoUGFnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYSBzaW5nbGUgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCBmcm9tIHdoZXJlIGl0IHByZXZpb3VzbHkgbGVmdCBvZmYuXG4gICAqIE11dGF0ZXMgc2VsZiB0byByZW1lbWJlciB3aGVyZSBpdCBsZWZ0IG9mZi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldC5cbiAgICovXG4gIGFzeW5jIGZldGNoUGFnZSgpOiBQcm9taXNlPEE+IHtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5mZXRjaE5leHQoKTtcbiAgICByZXR1cm4gdGhpcy4jY29tYmluZUZuKHVuZGVmaW5lZCwgcmVzcCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgbmV4dCByZXNwb25zZSwgZnJvbSB3aGVyZSBpdCBwcmV2aW91c2x5IGxlZnQgb2ZmLlxuICAgKiBNdXRhdGVzIHNlbGYgdG8gcmVtZW1iZXIgd2hlcmUgaXQgbGVmdCBvZmYuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBuZXh0IHJlc3BvbnNlLlxuICAgKiBAdGhyb3dzIElmIGFscmVhZHkgZG9uZVxuICAgKi9cbiAgYXN5bmMgZmV0Y2hOZXh0KCk6IFByb21pc2U8VT4ge1xuICAgIGlmICh0aGlzLiNkb25lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbHJlYWR5IGRvbmUuXCIpO1xuICAgIH1cbiAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy4jbGlzdEZuKHtcbiAgICAgIFwicGFnZS5zaXplXCI6IHRoaXMuI29wdHMuc2l6ZSxcbiAgICAgIFwicGFnZS5zdGFydFwiOiB0aGlzLiNsYXN0LFxuICAgIH0pO1xuICAgIHRoaXMuI2xhc3QgPSB0aGlzLiNsYXN0Rm4ocmVzcCk7XG4gICAgdGhpcy4jZG9uZSA9ICF0aGlzLiNsYXN0O1xuICAgIHJldHVybiByZXNwO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGVudGlyZSByZXN1bHQgc2V0IHN0YXJ0aW5nIGZyb20gd2hlcmUgaXQgcHJldmlvdXNseSBsZWZ0IG9mZlxuICAgKiBieSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgcGFnZXMgcmV0dXJuZWQgYnkgdGhlIHJlbW90ZSBlbmQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICovXG4gIGFzeW5jIGZldGNoQWxsKCk6IFByb21pc2U8QT4ge1xuICAgIGNvbnN0IGZpcnN0ID0gYXdhaXQgdGhpcy5mZXRjaE5leHQoKTtcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy4jY29tYmluZUZuKHVuZGVmaW5lZCwgZmlyc3QpO1xuICAgIHdoaWxlICghdGhpcy4jZG9uZSkge1xuICAgICAgY29uc3QgbmV4dCA9IGF3YWl0IHRoaXMuZmV0Y2hOZXh0KCk7XG4gICAgICByZXN1bHQgPSB0aGlzLiNjb21iaW5lRm4ocmVzdWx0LCBuZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { type MultiRegionEnv, type EnvInterface, type PasskeyAssertChallenge, type schemas, type SessionData } from ".";
1
+ import { type MultiRegionEnv, type EnvInterface, type PasskeyAssertChallenge, type schemas, type SessionData } from "./index.ts";
2
2
  /**
3
3
  * Manual implementation of [PublicKeyCredential.parseRequestOptionsFromJSON](https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredential/parseRequestOptionsFromJSON_static)
4
4
  * (implemented here because not all browsers support it)
@@ -1 +1 @@
1
- {"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../src/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,OAAO,EACZ,KAAK,WAAW,EACjB,MAAM,GAAG,CAAC;AAwBX;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,CAAC,mCAAmC,CAAC,GACpD,iCAAiC,CASnC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,CAAC,oCAAoC,CAAC,GACrD,kCAAkC,CAWpC;AA2BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAyB1F;AAED;;GAEG;AACH,qBAAa,qBAAqB;;IAe9B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAb7C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IAEpD;;;;;;OAMG;gBAED,GAAG,EAAE,YAAY,GAAG,cAAc,EAClC,SAAS,EAAE,sBAAsB,EACxB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAO7C;;;;;OAKG;IACG,sBAAsB,IAAI,OAAO,CAAC,WAAW,CAAC;IAMpD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;CAM9D"}
1
+ {"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../src/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,OAAO,EACZ,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAwBpB;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,CAAC,mCAAmC,CAAC,GACpD,iCAAiC,CASnC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,CAAC,oCAAoC,CAAC,GACrD,kCAAkC,CAWpC;AA2BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAyB1F;AAED;;GAEG;AACH,qBAAa,qBAAqB;;IAe9B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAb7C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IAEpD;;;;;;OAMG;gBAED,GAAG,EAAE,YAAY,GAAG,cAAc,EAClC,SAAS,EAAE,sBAAsB,EACxB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAO7C;;;;;OAKG;IACG,sBAAsB,IAAI,OAAO,CAAC,WAAW,CAAC;IAMpD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;CAM9D"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
2
  if (kind === "m") throw new TypeError("Private method is not writable");
4
3
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
@@ -11,12 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
11
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
11
  };
13
12
  var _PasskeyLoginChallenge_env;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.PasskeyLoginChallenge = void 0;
16
- exports.parseRequestOptions = parseRequestOptions;
17
- exports.parseCreationOptions = parseCreationOptions;
18
- exports.credentialToJSON = credentialToJSON;
19
- const _1 = require(".");
13
+ import { ApiClient, decodeBase64Url, encodeToBase64Url, } from "./index.js";
20
14
  /**
21
15
  * @param val The value to check
22
16
  * @returns If the value is `null`, returns undefined, otherwise returns the value
@@ -30,7 +24,7 @@ function noNull(val) {
30
24
  */
31
25
  function mapPublicKeyCredentialDescriptor(cred) {
32
26
  return {
33
- id: (0, _1.decodeBase64Url)(cred.id),
27
+ id: decodeBase64Url(cred.id),
34
28
  type: cred.type,
35
29
  transports: noNull(cred.transports),
36
30
  };
@@ -42,10 +36,10 @@ function mapPublicKeyCredentialDescriptor(cred) {
42
36
  * @param options The credential request options as returned by the CubeSigner back end
43
37
  * @returns Parsed credential request options
44
38
  */
45
- function parseRequestOptions(options) {
39
+ export function parseRequestOptions(options) {
46
40
  return {
47
41
  ...options,
48
- challenge: (0, _1.decodeBase64Url)(options.challenge),
42
+ challenge: decodeBase64Url(options.challenge),
49
43
  extensions: noNull(options.extensions),
50
44
  rpId: noNull(options.rpId),
51
45
  timeout: noNull(options.timeout),
@@ -59,13 +53,13 @@ function parseRequestOptions(options) {
59
53
  * @param options The credential creation options as returned by the CubeSigner back end
60
54
  * @returns Parsed credential creation options
61
55
  */
62
- function parseCreationOptions(options) {
56
+ export function parseCreationOptions(options) {
63
57
  return {
64
58
  ...options,
65
- challenge: (0, _1.decodeBase64Url)(options.challenge),
59
+ challenge: decodeBase64Url(options.challenge),
66
60
  excludeCredentials: options.excludeCredentials?.map(mapPublicKeyCredentialDescriptor),
67
61
  user: {
68
- id: (0, _1.decodeBase64Url)(options.user.id),
62
+ id: decodeBase64Url(options.user.id),
69
63
  displayName: options.user.displayName,
70
64
  name: options.user.name,
71
65
  },
@@ -94,14 +88,14 @@ function isAuthenticatorAssertionResponse(resp) {
94
88
  * @param cred The credential response to convert
95
89
  * @returns Corresponding serializable JSON object that the CubeSigner back end expects
96
90
  */
97
- function credentialToJSON(cred) {
91
+ export function credentialToJSON(cred) {
98
92
  if (isAuthenticatorAttestationResponse(cred.response)) {
99
93
  return {
100
94
  id: cred.id,
101
95
  clientExtensionResults: cred.getClientExtensionResults(),
102
96
  response: {
103
- clientDataJSON: (0, _1.encodeToBase64Url)(cred.response.clientDataJSON),
104
- attestationObject: (0, _1.encodeToBase64Url)(cred.response.attestationObject),
97
+ clientDataJSON: encodeToBase64Url(cred.response.clientDataJSON),
98
+ attestationObject: encodeToBase64Url(cred.response.attestationObject),
105
99
  },
106
100
  };
107
101
  }
@@ -110,9 +104,9 @@ function credentialToJSON(cred) {
110
104
  id: cred.id,
111
105
  clientExtensionResults: cred.getClientExtensionResults(),
112
106
  response: {
113
- clientDataJSON: (0, _1.encodeToBase64Url)(cred.response.clientDataJSON),
114
- authenticatorData: (0, _1.encodeToBase64Url)(cred.response.authenticatorData),
115
- signature: (0, _1.encodeToBase64Url)(cred.response.signature),
107
+ clientDataJSON: encodeToBase64Url(cred.response.clientDataJSON),
108
+ authenticatorData: encodeToBase64Url(cred.response.authenticatorData),
109
+ signature: encodeToBase64Url(cred.response.signature),
116
110
  },
117
111
  };
118
112
  }
@@ -121,7 +115,7 @@ function credentialToJSON(cred) {
121
115
  /**
122
116
  * Helper class for answering a passkey login challenge.
123
117
  */
124
- class PasskeyLoginChallenge {
118
+ export class PasskeyLoginChallenge {
125
119
  /**
126
120
  * Internal, called by {@link ApiClient.passkeyLoginInit}.
127
121
  *
@@ -161,12 +155,11 @@ class PasskeyLoginChallenge {
161
155
  * @returns New session
162
156
  */
163
157
  async answer(cred) {
164
- return await _1.ApiClient.passkeyLoginComplete(__classPrivateFieldGet(this, _PasskeyLoginChallenge_env, "f"), {
158
+ return await ApiClient.passkeyLoginComplete(__classPrivateFieldGet(this, _PasskeyLoginChallenge_env, "f"), {
165
159
  challenge_id: this.challenge.challenge_id,
166
160
  credential: credentialToJSON(cred),
167
161
  });
168
162
  }
169
163
  }
170
- exports.PasskeyLoginChallenge = PasskeyLoginChallenge;
171
164
  _PasskeyLoginChallenge_env = new WeakMap();
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc2tleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNza2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQXdDQSxrREFXQztBQVNELG9EQWFDO0FBK0JELDRDQXlCQztBQWpJRCx3QkFTVztBQUVYOzs7R0FHRztBQUNILFNBQVMsTUFBTSxDQUFJLEdBQWE7SUFDOUIsT0FBTyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxnQ0FBZ0MsQ0FDdkMsSUFBOEM7SUFFOUMsT0FBTztRQUNMLEVBQUUsRUFBRSxJQUFBLGtCQUFlLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7S0FDcEMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsT0FBcUQ7SUFFckQsT0FBTztRQUNMLEdBQUcsT0FBTztRQUNWLFNBQVMsRUFBRSxJQUFBLGtCQUFlLEVBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUM3QyxVQUFVLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDdEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQzFCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGdDQUFnQyxDQUFDO0tBQ2xGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLE9BQXNEO0lBRXRELE9BQU87UUFDTCxHQUFJLE9B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QUFDLENBQUM7UUFDM0QsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBMkIsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBeUI7UUFDcEMsT0FBTyxNQUFNLFlBQVMsQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBQSxJQUFJLGtDQUFLLEVBQUU7WUFDckQsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWTtZQUN6QyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1NBQ25DLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXBERCxzREFvREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcGlDbGllbnQsXG4gIGRlY29kZUJhc2U2NFVybCxcbiAgZW5jb2RlVG9CYXNlNjRVcmwsXG4gIHR5cGUgTXVsdGlSZWdpb25FbnYsXG4gIHR5cGUgRW52SW50ZXJmYWNlLFxuICB0eXBlIFBhc3NrZXlBc3NlcnRDaGFsbGVuZ2UsXG4gIHR5cGUgc2NoZW1hcyxcbiAgdHlwZSBTZXNzaW9uRGF0YSxcbn0gZnJvbSBcIi5cIjtcblxuLyoqXG4gKiBAcGFyYW0gdmFsIFRoZSB2YWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCwgcmV0dXJucyB1bmRlZmluZWQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSB2YWx1ZVxuICovXG5mdW5jdGlvbiBub051bGw8VD4odmFsOiBUIHwgbnVsbCk6IFQgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdmFsID09PSBudWxsID8gdW5kZWZpbmVkIDogdmFsO1xufVxuXG4vKipcbiAqIEBwYXJhbSBjcmVkIENyZWRlbnRpYWwgZGVzY3JpcHRvciwgYXMgcmV0dXJuZWQgYnkgdGhlIEN1YmVTaWduZXIgYmFjayBlbmRcbiAqIEByZXR1cm5zIFRoZSBjcmVkZW50aWFsIGNvbnZlcnRlZCB0byB7QGxpbmsgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3J9XG4gKi9cbmZ1bmN0aW9uIG1hcFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yKFxuICBjcmVkOiBzY2hlbWFzW1wiUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcIl0sXG4pOiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGRlY29kZUJhc2U2NFVybChjcmVkLmlkKSxcbiAgICB0eXBlOiBjcmVkLnR5cGUsXG4gICAgdHJhbnNwb3J0czogbm9OdWxsKGNyZWQudHJhbnNwb3J0cyksXG4gIH07XG59XG5cbi8qKlxuICogTWFudWFsIGltcGxlbWVudGF0aW9uIG9mIFtQdWJsaWNLZXlDcmVkZW50aWFsLnBhcnNlUmVxdWVzdE9wdGlvbnNGcm9tSlNPTl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1B1YmxpY0tleUNyZWRlbnRpYWwvcGFyc2VSZXF1ZXN0T3B0aW9uc0Zyb21KU09OX3N0YXRpYylcbiAqIChpbXBsZW1lbnRlZCBoZXJlIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGl0KVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBjcmVkZW50aWFsIHJlcXVlc3Qgb3B0aW9ucyBhcyByZXR1cm5lZCBieSB0aGUgQ3ViZVNpZ25lciBiYWNrIGVuZFxuICogQHJldHVybnMgUGFyc2VkIGNyZWRlbnRpYWwgcmVxdWVzdCBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJlcXVlc3RPcHRpb25zKFxuICBvcHRpb25zOiBzY2hlbWFzW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdLFxuKTogUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNoYWxsZW5nZTogZGVjb2RlQmFzZTY0VXJsKG9wdGlvbnMuY2hhbGxlbmdlKSxcbiAgICBleHRlbnNpb25zOiBub051bGwob3B0aW9ucy5leHRlbnNpb25zKSxcbiAgICBycElkOiBub051bGwob3B0aW9ucy5ycElkKSxcbiAgICB0aW1lb3V0OiBub051bGwob3B0aW9ucy50aW1lb3V0KSxcbiAgICBhbGxvd0NyZWRlbnRpYWxzOiBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHM/Lm1hcChtYXBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciksXG4gIH07XG59XG5cbi8qKlxuICogTWFudWFsIGltcGxlbWVudGF0aW9uIG9mIFtQdWJsaWNLZXlDcmVkZW50aWFsLnBhcnNlQ3JlYXRpb25PcHRpb25zRnJvbUpTT05dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9QdWJsaWNLZXlDcmVkZW50aWFsL3BhcnNlQ3JlYXRpb25PcHRpb25zRnJvbUpTT05fc3RhdGljKVxuICogKGltcGxlbWVudGVkIGhlcmUgYmVjYXVzZSBub3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgaXQpXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGNyZWRlbnRpYWwgY3JlYXRpb24gb3B0aW9ucyBhcyByZXR1cm5lZCBieSB0aGUgQ3ViZVNpZ25lciBiYWNrIGVuZFxuICogQHJldHVybnMgUGFyc2VkIGNyZWRlbnRpYWwgY3JlYXRpb24gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDcmVhdGlvbk9wdGlvbnMoXG4gIG9wdGlvbnM6IHNjaGVtYXNbXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdLFxuKTogUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyB7XG4gIHJldHVybiB7XG4gICAgLi4uKG9wdGlvbnMgYXMgdW5rbm93biBhcyBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zKSxcbiAgICBjaGFsbGVuZ2U6IGRlY29kZUJhc2U2NFVybChvcHRpb25zLmNoYWxsZW5nZSksXG4gICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBvcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscz8ubWFwKG1hcFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yKSxcbiAgICB1c2VyOiB7XG4gICAgICBpZDogZGVjb2RlQmFzZTY0VXJsKG9wdGlvbnMudXNlci5pZCksXG4gICAgICBkaXNwbGF5TmFtZTogb3B0aW9ucy51c2VyLmRpc3BsYXlOYW1lLFxuICAgICAgbmFtZTogb3B0aW9ucy51c2VyLm5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBUeXBlIG5hcnJvd2luZyBmcm9tIHtAbGluayBBdXRoZW50aWNhdG9yUmVzcG9uc2V9IHRvIHtAbGluayBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZX1cbiAqXG4gKiBAcGFyYW0gcmVzcCBUaGUgdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEge0BsaW5rIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlfVxuICovXG5mdW5jdGlvbiBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKFxuICByZXNwOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UsXG4pOiByZXNwIGlzIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIHtcbiAgcmV0dXJuICEhKHJlc3AgYXMgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpLmF0dGVzdGF0aW9uT2JqZWN0O1xufVxuXG4vKipcbiAqIFR5cGUgbmFycm93aW5nIGZyb20ge0BsaW5rIEF1dGhlbnRpY2F0b3JSZXNwb25zZX0gdG8ge0BsaW5rIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZX1cbiAqXG4gKiBAcGFyYW0gcmVzcCBUaGUgdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEge0BsaW5rIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZX1cbiAqL1xuZnVuY3Rpb24gaXNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoXG4gIHJlc3A6IEF1dGhlbnRpY2F0b3JSZXNwb25zZSxcbik6IHJlc3AgaXMgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlIHtcbiAgY29uc3QgYXNBc3NlcnRpb24gPSByZXNwIGFzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTtcbiAgcmV0dXJuICEhYXNBc3NlcnRpb24uYXV0aGVudGljYXRvckRhdGEgJiYgISFhc0Fzc2VydGlvbi5zaWduYXR1cmU7XG59XG5cbi8qKlxuICogQHBhcmFtIGNyZWQgVGhlIGNyZWRlbnRpYWwgcmVzcG9uc2UgdG8gY29udmVydFxuICogQHJldHVybnMgQ29ycmVzcG9uZGluZyBzZXJpYWxpemFibGUgSlNPTiBvYmplY3QgdGhhdCB0aGUgQ3ViZVNpZ25lciBiYWNrIGVuZCBleHBlY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVkZW50aWFsVG9KU09OKGNyZWQ6IFB1YmxpY0tleUNyZWRlbnRpYWwpOiBzY2hlbWFzW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXSB7XG4gIGlmIChpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKGNyZWQucmVzcG9uc2UpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjcmVkLmlkLFxuICAgICAgY2xpZW50RXh0ZW5zaW9uUmVzdWx0czogY3JlZC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICByZXNwb25zZToge1xuICAgICAgICBjbGllbnREYXRhSlNPTjogZW5jb2RlVG9CYXNlNjRVcmwoY3JlZC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksXG4gICAgICAgIGF0dGVzdGF0aW9uT2JqZWN0OiBlbmNvZGVUb0Jhc2U2NFVybChjcmVkLnJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0KSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGlmIChpc0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShjcmVkLnJlc3BvbnNlKSkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogY3JlZC5pZCxcbiAgICAgIGNsaWVudEV4dGVuc2lvblJlc3VsdHM6IGNyZWQuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgY2xpZW50RGF0YUpTT046IGVuY29kZVRvQmFzZTY0VXJsKGNyZWQucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLFxuICAgICAgICBhdXRoZW50aWNhdG9yRGF0YTogZW5jb2RlVG9CYXNlNjRVcmwoY3JlZC5yZXNwb25zZS5hdXRoZW50aWNhdG9yRGF0YSksXG4gICAgICAgIHNpZ25hdHVyZTogZW5jb2RlVG9CYXNlNjRVcmwoY3JlZC5yZXNwb25zZS5zaWduYXR1cmUpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHB1YmxpYyBrZXkgY3JlZGVudGlhbCByZXNwb25zZVwiKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIGFuc3dlcmluZyBhIHBhc3NrZXkgbG9naW4gY2hhbGxlbmdlLlxuICovXG5leHBvcnQgY2xhc3MgUGFzc2tleUxvZ2luQ2hhbGxlbmdlIHtcbiAgcmVhZG9ubHkgI2VudjogRW52SW50ZXJmYWNlIHwgTXVsdGlSZWdpb25FbnY7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZTogT21pdDxQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlLCBcIm9wdGlvbnNcIj47XG4gIHJlYWRvbmx5IG9wdGlvbnM6IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucztcblxuICAvKipcbiAgICogSW50ZXJuYWwsIGNhbGxlZCBieSB7QGxpbmsgQXBpQ2xpZW50LnBhc3NrZXlMb2dpbkluaXR9LlxuICAgKlxuICAgKiBAcGFyYW0gZW52IFRhcmdldCBDdWJlU2lnbmVyIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSBjaGFsbGVuZ2UgVGhlIGNoYWxsZW5nZSB0byBhbnN3ZXJcbiAgICogQHBhcmFtIHB1cnBvc2UgT3B0aW9uYWwgZGVzY3JpcHRpdmUgcHVycG9zZSBvZiB0aGUgbmV3IHNlc3Npb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVudjogRW52SW50ZXJmYWNlIHwgTXVsdGlSZWdpb25FbnYsXG4gICAgY2hhbGxlbmdlOiBQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlLFxuICAgIHJlYWRvbmx5IHB1cnBvc2U6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI2VudiA9IGVudjtcbiAgICB0aGlzLmNoYWxsZW5nZSA9IGNoYWxsZW5nZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBwYXJzZVJlcXVlc3RPcHRpb25zKGNoYWxsZW5nZS5vcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbnN3ZXJzIHRoaXMgY2hhbGxlbmdlIGJ5IHVzaW5nIHRoZSBgQ3JlZGVudGlhbHNDb250YWluZXJgIEFQSSB0byBnZXQgYSBjcmVkZW50aWFsXG4gICAqIGJhc2VkIG9uIHRoZSB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsIHJlcXVlc3Qgb3B0aW9ucyBmcm9tIHRoaXMgY2hhbGxlbmdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBOZXcgc2Vzc2lvbi5cbiAgICovXG4gIGFzeW5jIGdldENyZWRlbnRpYWxBbmRBbnN3ZXIoKTogUHJvbWlzZTxTZXNzaW9uRGF0YT4ge1xuICAgIGNvbnN0IGNyZWQgPSBhd2FpdCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KHsgcHVibGljS2V5OiB0aGlzLm9wdGlvbnMgfSk7XG4gICAgaWYgKGNyZWQgPT09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIkNyZWRlbnRpYWwgbm90IGZvdW5kXCIpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmFuc3dlcihjcmVkIGFzIFB1YmxpY0tleUNyZWRlbnRpYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuc3dlcnMgdGhpcyBjaGFsbGVuZ2UgdXNpbmcgYSBnaXZlbiBjcmVkZW50aWFsIGBjcmVkYC5cbiAgICogVG8gb2J0YWluIHRoaXMgY3JlZGVudGlhbCwgZm9yIGV4YW1wbGUsIGNhbGxcbiAgICpcbiAgICogYGBgXG4gICAqIGNvbnN0IGNyZWQgPSBhd2FpdCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KHsgcHVibGljS2V5OiB0aGlzLm9wdGlvbnMgfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gY3JlZCBDcmVkZW50aWFsIGNyZWF0ZWQgYnkgY2FsbGluZyB0aGUgYENyZWRlbnRpYWxDb250YWluZXJgJ3MgYGdldGAgbWV0aG9kXG4gICAqICAgICAgICAgICAgIGJhc2VkIG9uIHRoZSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgcmVxdWVzdCBvcHRpb25zIGZyb20gdGhpcyBjaGFsbGVuZ2UuXG4gICAqIEByZXR1cm5zIE5ldyBzZXNzaW9uXG4gICAqL1xuICBhc3luYyBhbnN3ZXIoY3JlZDogUHVibGljS2V5Q3JlZGVudGlhbCk6IFByb21pc2U8U2Vzc2lvbkRhdGE+IHtcbiAgICByZXR1cm4gYXdhaXQgQXBpQ2xpZW50LnBhc3NrZXlMb2dpbkNvbXBsZXRlKHRoaXMuI2Vudiwge1xuICAgICAgY2hhbGxlbmdlX2lkOiB0aGlzLmNoYWxsZW5nZS5jaGFsbGVuZ2VfaWQsXG4gICAgICBjcmVkZW50aWFsOiBjcmVkZW50aWFsVG9KU09OKGNyZWQpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc2tleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNza2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLGlCQUFpQixHQU1sQixNQUFNLFlBQVksQ0FBQztBQUVwQjs7O0dBR0c7QUFDSCxTQUFTLE1BQU0sQ0FBSSxHQUFhO0lBQzlCLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsZ0NBQWdDLENBQ3ZDLElBQThDO0lBRTlDLE9BQU87UUFDTCxFQUFFLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxPQUFxRDtJQUVyRCxPQUFPO1FBQ0wsR0FBRyxPQUFPO1FBQ1YsU0FBUyxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQzdDLFVBQVUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDMUIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ2hDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0NBQWdDLENBQUM7S0FDbEYsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE9BQXNEO0lBRXRELE9BQU87UUFD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LE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUEyQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUF5QjtRQUNwQyxPQUFPLE1BQU0sU0FBUyxDQUFDLG9CQUFvQixDQUFDLHVCQUFBLElBQUksa0NBQUssRUFBRTtZQUNyRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZO1lBQ3pDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7U0FDbkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBpQ2xpZW50LFxuICBkZWNvZGVCYXNlNjRVcmwsXG4gIGVuY29kZVRvQmFzZTY0VXJsLFxuICB0eXBlIE11bHRpUmVnaW9uRW52LFxuICB0eXBlIEVudkludGVyZmFjZSxcbiAgdHlwZSBQYXNza2V5QXNzZXJ0Q2hhbGxlbmdlLFxuICB0eXBlIHNjaGVtYXMsXG4gIHR5cGUgU2Vzc2lvbkRhdGEsXG59IGZyb20gXCIuL2luZGV4LnRzXCI7XG5cbi8qKlxuICogQHBhcmFtIHZhbCBUaGUgdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIElmIHRoZSB2YWx1ZSBpcyBgbnVsbGAsIHJldHVybnMgdW5kZWZpbmVkLCBvdGhlcndpc2UgcmV0dXJucyB0aGUgdmFsdWVcbiAqL1xuZnVuY3Rpb24gbm9OdWxsPFQ+KHZhbDogVCB8IG51bGwpOiBUIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHZhbDtcbn1cblxuLyoqXG4gKiBAcGFyYW0gY3JlZCBDcmVkZW50aWFsIGRlc2NyaXB0b3IsIGFzIHJldHVybmVkIGJ5IHRoZSBDdWJlU2lnbmVyIGJhY2sgZW5kXG4gKiBAcmV0dXJucyBUaGUgY3JlZGVudGlhbCBjb252ZXJ0ZWQgdG8ge0BsaW5rIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yfVxuICovXG5mdW5jdGlvbiBtYXBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcihcbiAgY3JlZDogc2NoZW1hc1tcIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXCJdLFxuKTogUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3Ige1xuICByZXR1cm4ge1xuICAgIGlkOiBkZWNvZGVCYXNlNjRVcmwoY3JlZC5pZCksXG4gICAgdHlwZTogY3JlZC50eXBlLFxuICAgIHRyYW5zcG9ydHM6IG5vTnVsbChjcmVkLnRyYW5zcG9ydHMpLFxuICB9O1xufVxuXG4vKipcbiAqIE1hbnVhbCBpbXBsZW1lbnRhdGlvbiBvZiBbUHVibGljS2V5Q3JlZGVudGlhbC5wYXJzZVJlcXVlc3RPcHRpb25zRnJvbUpTT05dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9QdWJsaWNLZXlDcmVkZW50aWFsL3BhcnNlUmVxdWVzdE9wdGlvbnNGcm9tSlNPTl9zdGF0aWMpXG4gKiAoaW1wbGVtZW50ZWQgaGVyZSBiZWNhdXNlIG5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCBpdClcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgY3JlZGVudGlhbCByZXF1ZXN0IG9wdGlvbnMgYXMgcmV0dXJuZWQgYnkgdGhlIEN1YmVTaWduZXIgYmFjayBlbmRcbiAqIEByZXR1cm5zIFBhcnNlZCBjcmVkZW50aWFsIHJlcXVlc3Qgb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXF1ZXN0T3B0aW9ucyhcbiAgb3B0aW9uczogc2NoZW1hc1tcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXSxcbik6IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyB7XG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjaGFsbGVuZ2U6IGRlY29kZUJhc2U2NFVybChvcHRpb25zLmNoYWxsZW5nZSksXG4gICAgZXh0ZW5zaW9uczogbm9OdWxsKG9wdGlvbnMuZXh0ZW5zaW9ucyksXG4gICAgcnBJZDogbm9OdWxsKG9wdGlvbnMucnBJZCksXG4gICAgdGltZW91dDogbm9OdWxsKG9wdGlvbnMudGltZW91dCksXG4gICAgYWxsb3dDcmVkZW50aWFsczogb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzPy5tYXAobWFwUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IpLFxuICB9O1xufVxuXG4vKipcbiAqIE1hbnVhbCBpbXBsZW1lbnRhdGlvbiBvZiBbUHVibGljS2V5Q3JlZGVudGlhbC5wYXJzZUNyZWF0aW9uT3B0aW9uc0Zyb21KU09OXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUHVibGljS2V5Q3JlZGVudGlhbC9wYXJzZUNyZWF0aW9uT3B0aW9uc0Zyb21KU09OX3N0YXRpYylcbiAqIChpbXBsZW1lbnRlZCBoZXJlIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGl0KVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBjcmVkZW50aWFsIGNyZWF0aW9uIG9wdGlvbnMgYXMgcmV0dXJuZWQgYnkgdGhlIEN1YmVTaWduZXIgYmFjayBlbmRcbiAqIEByZXR1cm5zIFBhcnNlZCBjcmVkZW50aWFsIGNyZWF0aW9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ3JlYXRpb25PcHRpb25zKFxuICBvcHRpb25zOiBzY2hlbWFzW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXSxcbik6IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIC4uLihvcHRpb25zIGFzIHVua25vd24gYXMgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyksXG4gICAgY2hhbGxlbmdlOiBkZWNvZGVCYXNlNjRVcmwob3B0aW9ucy5jaGFsbGVuZ2UpLFxuICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogb3B0aW9ucy5leGNsdWRlQ3JlZGVudGlhbHM/Lm1hcChtYXBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciksXG4gICAgdXNlcjoge1xuICAgICAgaWQ6IGRlY29kZUJhc2U2NFVybChvcHRpb25zLnVzZXIuaWQpLFxuICAgICAgZGlzcGxheU5hbWU6IG9wdGlvbnMudXNlci5kaXNwbGF5TmFtZSxcbiAgICAgIG5hbWU6IG9wdGlvbnMudXNlci5uYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogVHlwZSBuYXJyb3dpbmcgZnJvbSB7QGxpbmsgQXV0aGVudGljYXRvclJlc3BvbnNlfSB0byB7QGxpbmsgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2V9XG4gKlxuICogQHBhcmFtIHJlc3AgVGhlIHZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIHtAbGluayBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZX1cbiAqL1xuZnVuY3Rpb24gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShcbiAgcmVzcDogQXV0aGVudGljYXRvclJlc3BvbnNlLFxuKTogcmVzcCBpcyBBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSB7XG4gIHJldHVybiAhIShyZXNwIGFzIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKS5hdHRlc3RhdGlvbk9iamVjdDtcbn1cblxuLyoqXG4gKiBUeXBlIG5hcnJvd2luZyBmcm9tIHtAbGluayBBdXRoZW50aWNhdG9yUmVzcG9uc2V9IHRvIHtAbGluayBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2V9XG4gKlxuICogQHBhcmFtIHJlc3AgVGhlIHZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIHtAbGluayBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2V9XG4gKi9cbmZ1bmN0aW9uIGlzQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFxuICByZXNwOiBBdXRoZW50aWNhdG9yUmVzcG9uc2UsXG4pOiByZXNwIGlzIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSB7XG4gIGNvbnN0IGFzQXNzZXJ0aW9uID0gcmVzcCBhcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7XG4gIHJldHVybiAhIWFzQXNzZXJ0aW9uLmF1dGhlbnRpY2F0b3JEYXRhICYmICEhYXNBc3NlcnRpb24uc2lnbmF0dXJlO1xufVxuXG4vKipcbiAqIEBwYXJhbSBjcmVkIFRoZSBjcmVkZW50aWFsIHJlc3BvbnNlIHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIENvcnJlc3BvbmRpbmcgc2VyaWFsaXphYmxlIEpTT04gb2JqZWN0IHRoYXQgdGhlIEN1YmVTaWduZXIgYmFjayBlbmQgZXhwZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlZGVudGlhbFRvSlNPTihjcmVkOiBQdWJsaWNLZXlDcmVkZW50aWFsKTogc2NoZW1hc1tcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl0ge1xuICBpZiAoaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZShjcmVkLnJlc3BvbnNlKSkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogY3JlZC5pZCxcbiAgICAgIGNsaWVudEV4dGVuc2lvblJlc3VsdHM6IGNyZWQuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgY2xpZW50RGF0YUpTT046IGVuY29kZVRvQmFzZTY0VXJsKGNyZWQucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLFxuICAgICAgICBhdHRlc3RhdGlvbk9iamVjdDogZW5jb2RlVG9CYXNlNjRVcmwoY3JlZC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpZiAoaXNBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoY3JlZC5yZXNwb25zZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNyZWQuaWQsXG4gICAgICBjbGllbnRFeHRlbnNpb25SZXN1bHRzOiBjcmVkLmdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgIGNsaWVudERhdGFKU09OOiBlbmNvZGVUb0Jhc2U2NFVybChjcmVkLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSxcbiAgICAgICAgYXV0aGVudGljYXRvckRhdGE6IGVuY29kZVRvQmFzZTY0VXJsKGNyZWQucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEpLFxuICAgICAgICBzaWduYXR1cmU6IGVuY29kZVRvQmFzZTY0VXJsKGNyZWQucmVzcG9uc2Uuc2lnbmF0dXJlKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBwdWJsaWMga2V5IGNyZWRlbnRpYWwgcmVzcG9uc2VcIik7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBhbnN3ZXJpbmcgYSBwYXNza2V5IGxvZ2luIGNoYWxsZW5nZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhc3NrZXlMb2dpbkNoYWxsZW5nZSB7XG4gIHJlYWRvbmx5ICNlbnY6IEVudkludGVyZmFjZSB8IE11bHRpUmVnaW9uRW52O1xuICByZWFkb25seSBjaGFsbGVuZ2U6IE9taXQ8UGFzc2tleUFzc2VydENoYWxsZW5nZSwgXCJvcHRpb25zXCI+O1xuICByZWFkb25seSBvcHRpb25zOiBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEludGVybmFsLCBjYWxsZWQgYnkge0BsaW5rIEFwaUNsaWVudC5wYXNza2V5TG9naW5Jbml0fS5cbiAgICpcbiAgICogQHBhcmFtIGVudiBUYXJnZXQgQ3ViZVNpZ25lciBlbnZpcm9ubWVudFxuICAgKiBAcGFyYW0gY2hhbGxlbmdlIFRoZSBjaGFsbGVuZ2UgdG8gYW5zd2VyXG4gICAqIEBwYXJhbSBwdXJwb3NlIE9wdGlvbmFsIGRlc2NyaXB0aXZlIHB1cnBvc2Ugb2YgdGhlIG5ldyBzZXNzaW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBlbnY6IEVudkludGVyZmFjZSB8IE11bHRpUmVnaW9uRW52LFxuICAgIGNoYWxsZW5nZTogUGFzc2tleUFzc2VydENoYWxsZW5nZSxcbiAgICByZWFkb25seSBwdXJwb3NlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICB0aGlzLiNlbnYgPSBlbnY7XG4gICAgdGhpcy5jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7XG4gICAgdGhpcy5vcHRpb25zID0gcGFyc2VSZXF1ZXN0T3B0aW9ucyhjaGFsbGVuZ2Uub3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQW5zd2VycyB0aGlzIGNoYWxsZW5nZSBieSB1c2luZyB0aGUgYENyZWRlbnRpYWxzQ29udGFpbmVyYCBBUEkgdG8gZ2V0IGEgY3JlZGVudGlhbFxuICAgKiBiYXNlZCBvbiB0aGUgdGhlIHB1YmxpYyBrZXkgY3JlZGVudGlhbCByZXF1ZXN0IG9wdGlvbnMgZnJvbSB0aGlzIGNoYWxsZW5nZS5cbiAgICpcbiAgICogQHJldHVybnMgTmV3IHNlc3Npb24uXG4gICAqL1xuICBhc3luYyBnZXRDcmVkZW50aWFsQW5kQW5zd2VyKCk6IFByb21pc2U8U2Vzc2lvbkRhdGE+IHtcbiAgICBjb25zdCBjcmVkID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCh7IHB1YmxpY0tleTogdGhpcy5vcHRpb25zIH0pO1xuICAgIGlmIChjcmVkID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJDcmVkZW50aWFsIG5vdCBmb3VuZFwiKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hbnN3ZXIoY3JlZCBhcyBQdWJsaWNLZXlDcmVkZW50aWFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbnN3ZXJzIHRoaXMgY2hhbGxlbmdlIHVzaW5nIGEgZ2l2ZW4gY3JlZGVudGlhbCBgY3JlZGAuXG4gICAqIFRvIG9idGFpbiB0aGlzIGNyZWRlbnRpYWwsIGZvciBleGFtcGxlLCBjYWxsXG4gICAqXG4gICAqIGBgYFxuICAgKiBjb25zdCBjcmVkID0gYXdhaXQgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCh7IHB1YmxpY0tleTogdGhpcy5vcHRpb25zIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGNyZWQgQ3JlZGVudGlhbCBjcmVhdGVkIGJ5IGNhbGxpbmcgdGhlIGBDcmVkZW50aWFsQ29udGFpbmVyYCdzIGBnZXRgIG1ldGhvZFxuICAgKiAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsIHJlcXVlc3Qgb3B0aW9ucyBmcm9tIHRoaXMgY2hhbGxlbmdlLlxuICAgKiBAcmV0dXJucyBOZXcgc2Vzc2lvblxuICAgKi9cbiAgYXN5bmMgYW5zd2VyKGNyZWQ6IFB1YmxpY0tleUNyZWRlbnRpYWwpOiBQcm9taXNlPFNlc3Npb25EYXRhPiB7XG4gICAgcmV0dXJuIGF3YWl0IEFwaUNsaWVudC5wYXNza2V5TG9naW5Db21wbGV0ZSh0aGlzLiNlbnYsIHtcbiAgICAgIGNoYWxsZW5nZV9pZDogdGhpcy5jaGFsbGVuZ2UuY2hhbGxlbmdlX2lkLFxuICAgICAgY3JlZGVudGlhbDogY3JlZGVudGlhbFRvSlNPTihjcmVkKSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import type { ApiClient, C2FResponse, CubeSignerResponse, EditPolicy, Empty, InvokeC2FResponse, JsonValue, KeyPolicy, KeyPolicyRule, MfaReceipts, PolicyAttachedToId, PolicyType, RolePolicy, RolePolicyRule, UpdatePolicyRequest, WasmRule, AceAttribute, PolicyAction, Ace, PolicyInfo } from ".";
1
+ import type { ApiClient, C2FResponse, CubeSignerResponse, EditPolicy, Empty, InvokeC2FResponse, JsonValue, KeyPolicy, KeyPolicyRule, MfaReceipts, PolicyAttachedToId, PolicyType, RolePolicy, RolePolicyRule, UpdatePolicyRequest, WasmRule, AceAttribute, PolicyAction, Ace, PolicyInfo } from "./index.ts";
2
2
  /**
3
3
  * Named policy rule type.
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/policy.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
2
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
@@ -11,10 +10,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
11
10
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
11
  };
13
12
  var _NamedPolicyRules_apiClient, _NamedPolicyRules_data, _C2FInvocation_data;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.PolicyInvocation = exports.NamedWasmPolicy = exports.C2FInvocation = exports.NamedPolicyRules = exports.C2FFunction = exports.NamedRolePolicy = exports.NamedKeyPolicy = exports.NamedPolicy = exports.uploadWasmPolicy = void 0;
16
- exports.uploadWasmFunction = uploadWasmFunction;
17
- const _1 = require(".");
13
+ import { loadSubtleCrypto, encodeToHex, decodeFromHex } from "./index.js";
18
14
  /**
19
15
  * Upload the given Wasm Confidential Cloud Function.
20
16
  *
@@ -24,11 +20,11 @@ const _1 = require(".");
24
20
  * @throws if uploading the policy fails.
25
21
  * @internal
26
22
  */
27
- async function uploadWasmFunction(apiClient, policy) {
23
+ export async function uploadWasmFunction(apiClient, policy) {
28
24
  // get the SHA-256 hash of the function to get the upload url.
29
- const subtle = await (0, _1.loadSubtleCrypto)();
25
+ const subtle = await loadSubtleCrypto();
30
26
  const hashBytes = await subtle.digest("SHA-256", policy);
31
- const hash = (0, _1.encodeToHex)(new Uint8Array(hashBytes));
27
+ const hash = encodeToHex(new Uint8Array(hashBytes));
32
28
  // get the upload URL
33
29
  const { signed_url } = await apiClient.wasmPolicyUpload({ hash });
34
30
  // upload the wasm object
@@ -50,11 +46,11 @@ async function uploadWasmFunction(apiClient, policy) {
50
46
  * @throws if uploading the policy fails.
51
47
  * @internal
52
48
  */
53
- exports.uploadWasmPolicy = uploadWasmFunction;
49
+ export const uploadWasmPolicy = uploadWasmFunction;
54
50
  /**
55
51
  * Abstract class for shared methods between key, role and Wasm policies.
56
52
  */
57
- class NamedPolicy {
53
+ export class NamedPolicy {
58
54
  /**
59
55
  * Helper method for creating a named policy from a policy info.
60
56
  *
@@ -275,11 +271,10 @@ class NamedPolicy {
275
271
  return this.data;
276
272
  }
277
273
  }
278
- exports.NamedPolicy = NamedPolicy;
279
274
  /**
280
275
  * A representation of a named key policy.
281
276
  */
282
- class NamedKeyPolicy extends NamedPolicy {
277
+ export class NamedKeyPolicy extends NamedPolicy {
283
278
  /**
284
279
  * Update the policy with new rules.
285
280
  *
@@ -305,11 +300,10 @@ class NamedKeyPolicy extends NamedPolicy {
305
300
  this.data = data;
306
301
  }
307
302
  }
308
- exports.NamedKeyPolicy = NamedKeyPolicy;
309
303
  /**
310
304
  * A representation of a named role policy.
311
305
  */
312
- class NamedRolePolicy extends NamedPolicy {
306
+ export class NamedRolePolicy extends NamedPolicy {
313
307
  /**
314
308
  * Update the policy with new rules.
315
309
  *
@@ -335,14 +329,13 @@ class NamedRolePolicy extends NamedPolicy {
335
329
  this.data = data;
336
330
  }
337
331
  }
338
- exports.NamedRolePolicy = NamedRolePolicy;
339
332
  /**
340
333
  * A representation of a Confidential Cloud Function (C2F).
341
334
  *
342
335
  * This class extends NamedPolicy because C2F functions can be attached
343
336
  * to keys and roles like a named policy.
344
337
  */
345
- class C2FFunction extends NamedPolicy {
338
+ export class C2FFunction extends NamedPolicy {
346
339
  /**
347
340
  * Update this C2F function with a new Wasm function.
348
341
  *
@@ -376,7 +369,7 @@ class C2FFunction extends NamedPolicy {
376
369
  request,
377
370
  role_id: roleId,
378
371
  });
379
- return new exports.PolicyInvocation(resp);
372
+ return new PolicyInvocation(resp);
380
373
  }
381
374
  // --------------------------------------------------------------------------
382
375
  // -- INTERNAL --------------------------------------------------------------
@@ -403,11 +396,10 @@ class C2FFunction extends NamedPolicy {
403
396
  this.data = data;
404
397
  }
405
398
  }
406
- exports.C2FFunction = C2FFunction;
407
399
  /**
408
400
  * A specific version of a named policy.
409
401
  */
410
- class NamedPolicyRules {
402
+ export class NamedPolicyRules {
411
403
  /**
412
404
  * @returns The ID of the policy.
413
405
  *
@@ -466,12 +458,11 @@ class NamedPolicyRules {
466
458
  return __classPrivateFieldGet(this, _NamedPolicyRules_data, "f");
467
459
  }
468
460
  }
469
- exports.NamedPolicyRules = NamedPolicyRules;
470
461
  _NamedPolicyRules_apiClient = new WeakMap(), _NamedPolicyRules_data = new WeakMap();
471
462
  /**
472
463
  * The result of invoking a Confidential Cloud Function.
473
464
  */
474
- class C2FInvocation {
465
+ export class C2FInvocation {
475
466
  /** @returns The policy response itself. */
476
467
  get response() {
477
468
  return __classPrivateFieldGet(this, _C2FInvocation_data, "f").response;
@@ -483,7 +474,7 @@ class C2FInvocation {
483
474
  * @returns The standard output stream.
484
475
  */
485
476
  get stdoutBytes() {
486
- return (0, _1.decodeFromHex)(__classPrivateFieldGet(this, _C2FInvocation_data, "f").stdout);
477
+ return decodeFromHex(__classPrivateFieldGet(this, _C2FInvocation_data, "f").stdout);
487
478
  }
488
479
  /**
489
480
  * The standard error stream as raw bytes. Usually a UTF-8 encoded string, use
@@ -492,7 +483,7 @@ class C2FInvocation {
492
483
  * @returns The standard error stream.
493
484
  */
494
485
  get stderrBytes() {
495
- return (0, _1.decodeFromHex)(__classPrivateFieldGet(this, _C2FInvocation_data, "f").stderr);
486
+ return decodeFromHex(__classPrivateFieldGet(this, _C2FInvocation_data, "f").stderr);
496
487
  }
497
488
  /**
498
489
  * The standard output stream as a Buffer. Usually a UTF-8 encoded string.
@@ -525,10 +516,9 @@ class C2FInvocation {
525
516
  __classPrivateFieldSet(this, _C2FInvocation_data, data, "f");
526
517
  }
527
518
  }
528
- exports.C2FInvocation = C2FInvocation;
529
519
  _C2FInvocation_data = new WeakMap();
530
520
  /** A representation of a Wasm policy. */
531
- exports.NamedWasmPolicy = C2FFunction;
521
+ export const NamedWasmPolicy = C2FFunction;
532
522
  /** The result of invoking a named WASM policy. */
533
- exports.PolicyInvocation = C2FInvocation;
534
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFtR0EsZ0RBdUJDO0FBbkdELHdCQUFpRTtBQW1FakU7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLFNBQW9CLEVBQ3BCLE1BQWtCO0lBRWxCLDhEQUE4RDtJQUM5RCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsbUJBQWdCLEdBQUUsQ0FBQztJQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUEsY0FBVyxFQUFDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFcEQscUJBQXFCO0lBQ3JCLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFbEUseUJBQXlCO0lBQ3pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLFVBQVUsRUFBRTtRQUNuQyxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxNQUFNO0tBQ2IsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQXNCLFdBQVc7SUFJL0I7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFFB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RlJlc3BvbnNlLFxuICBDdWJlU2lnbmVyUmVzcG9uc2UsXG4gIEVkaXRQb2xpY3ksXG4gIEVtcHR5LFxuICBJbnZva2VDMkZSZXNwb25zZSxcbiAgSnNvblZhbHVlLFxuICBLZXlQb2xpY3ksXG4gIEtleVBvbGljeVJ1bGUsXG4gIE1mYVJlY2VpcHRzLFxuICBQb2xpY3lBdHRhY2hlZFRvSWQsXG4gIFBvbGljeVR5cGUsXG4gIFJvbGVQb2xpY3ksXG4gIFJvbGVQb2xpY3lSdWxlLFxuICBVcGRhdGVQb2xpY3lSZXF1ZXN0LFxuICBXYXNtUnVsZSxcbiAgQWNlQXR0cmlidXRlLFxuICBQb2xpY3lBY3Rpb24sXG4gIEFjZSxcbiAgUG9saWN5SW5mbyxcbn0gZnJvbSBcIi5cIjtcblxuaW1wb3J0IHsgbG9hZFN1YnRsZUNyeXB0bywgZW5jb2RlVG9IZXgsIGRlY29kZUZyb21IZXggfSBmcm9tIFwiLlwiO1xuXG4vKipcbiAqIE5hbWVkIHBvbGljeSBydWxlIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIFBvbGljeVJ1bGUgPSBLZXlQb2xpY3lSdWxlIHwgUm9sZVBvbGljeVJ1bGUgfCBXYXNtUnVsZTtcblxuLyoqXG4gKiBBIGhlbHBlciB0eXBlIGZvciB7QGxpbmsgUG9saWN5SW5mb30gd2l0aCBhIG1vcmUgZGV0YWlsZWQgYGFjbGAgdHlwZS5cbiAqL1xudHlwZSBOYW1lZFBvbGljeUluZm8gPSBQb2xpY3lJbmZvICYge1xuICBhY2w/OiBQb2xpY3lBY2w7XG59O1xuXG4vKipcbiAqIFRoZSBwb2xpY3kgaW5mbyBmb3IgYSBuYW1lZCBrZXkgcG9saWN5LlxuICovXG5leHBvcnQgdHlwZSBLZXlQb2xpY3lJbmZvID0gTmFtZWRQb2xpY3lJbmZvICYge1xuICBwb2xpY3lfdHlwZTogXCJLZXlcIjtcbn07XG5cbi8qKlxuICogVGhlIHBvbGljeSBpbmZvIGZvciBhIG5hbWVkIHJvbGUgcG9saWN5LlxuICovXG5leHBvcnQgdHlwZSBSb2xlUG9saWN5SW5mbyA9IE5hbWVkUG9saWN5SW5mbyAmIHtcbiAgcG9saWN5X3R5cGU6IFwiUm9sZVwiO1xufTtcblxuLyoqXG4gKiBUaGUgcG9saWN5IGluZm8gZm9yIGEgbmFtZWQgd2FzbSBwb2xpY3kuXG4gKi9cbmV4cG9ydCB0eXBlIFdhc21Qb2xpY3lJbmZvID0gTmFtZWRQb2xpY3lJbmZvICYge1xuICBwb2xpY3lfdHlwZTogXCJXYXNtXCI7XG59O1xuXG4vKipcbiAqIFRoZSBwb2xpY3kgaW5mbyBmb3IgYSBDb25maWRlbnRpYWwgQ2xvdWQgRnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEMyRkluZm8gPSBXYXNtUG9saWN5SW5mbztcblxuLyoqXG4gKiBBIGhlbHBlciB0eXBlIGZvciB2YWxpZCBuYW1lZCBwb2xpY3kgdmVyc2lvbiBzdHJpbmdzLlxuICovXG5leHBvcnQgdHlwZSBWZXJzaW9uID0gYHYke251bWJlcn1gIHwgYGxhdGVzdGA7XG5cbi8qKiBBIHBvbGljeSBhY2Nlc3MgY29udHJvbCBlbnRyeS4gKi9cbmV4cG9ydCB0eXBlIFBvbGljeUFjZSA9IEFjZTxQb2xpY3lBY3Rpb24sIFBvbGljeUN0eD47XG5cbi8qKiBBIHBvbGljeSBhY2Nlc3MgY29udHJvbCBsaXN0LiAqL1xuZXhwb3J0IHR5cGUgUG9saWN5QWNsID0gUG9saWN5QWNlW107XG5cbi8qKiBBZGRpdGlvbmFsIGNvbnRleHRzIHdoZW4gdXNpbmcgcG9saWNpZXMuICovXG5leHBvcnQgdHlwZSBQb2xpY3lDdHggPSB7XG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2VzIChrZXlzLCByb2xlcywgYW5kIGtleS1pbi1yb2xlcykgdGhhdCB0aGUgYWNjZXNzIGNvbnRyb2wgZW50cnlcbiAgICogYXBwbGllcyB0by5cbiAgICovXG4gIHJlc291cmNlczogQWNlQXR0cmlidXRlPFBvbGljeVJlc291cmNlPjtcbn07XG5cbi8qKiBBIHJlc291cmNlIGEgcG9saWN5IGlzIGludm9rZWQgd2l0aCBvciBhdHRhY2hlZCB0by4gKi9cbmV4cG9ydCB0eXBlIFBvbGljeVJlc291cmNlID1cbiAgLyoqIEEga2V5IG9yIHJvbGUgaWQuICovXG4gIHwgc3RyaW5nXG4gIC8qKiBLZXlzIGF0dGFjaGVkIHRvIHJvbGVzLiAqL1xuICB8IHsga2V5X2lkczogXCIqXCIgfCBzdHJpbmdbXTsgcm9sZV9pZHM6IFwiKlwiIHwgc3RyaW5nW10gfTtcblxuLyoqXG4gKiBVcGxvYWQgdGhlIGdpdmVuIFdhc20gQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICogQHBhcmFtIHBvbGljeSBUaGUgV2FzbSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBXYXNtIGZ1bmN0aW9uIG9iamVjdCBoYXNoIHRvIHVzZSBmb3IgY3JlYXRpbmcvdXBkYXRpbmcgQzJGIHBvbGljaWVzLlxuICogQHRocm93cyBpZiB1cGxvYWRpbmcgdGhlIHBvbGljeSBmYWlscy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBsb2FkV2FzbUZ1bmN0aW9uKFxuICBhcGlDbGllbnQ6IEFwaUNsaWVudCxcbiAgcG9saWN5OiBVaW50OEFycmF5LFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gZ2V0IHRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgdXBsb2FkIHVybC5cbiAgY29uc3Qgc3VidGxlID0gYXdhaXQgbG9hZFN1YnRsZUNyeXB0bygpO1xuICBjb25zdCBoYXNoQnl0ZXMgPSBhd2FpdCBzdWJ0bGUuZGlnZXN0KFwiU0hBLTI1NlwiLCBwb2xpY3kpO1xuICBjb25zdCBoYXNoID0gZW5jb2RlVG9IZXgobmV3IFVpbnQ4QXJyYXkoaGFzaEJ5dGVzKSk7XG5cbiAgLy8gZ2V0IHRoZSB1cGxvYWQgVVJMXG4gIGNvbnN0IHsgc2lnbmVkX3VybCB9ID0gYXdhaXQgYXBpQ2xpZW50Lndhc21Qb2xpY3lVcGxvYWQoeyBoYXNoIH0pO1xuXG4gIC8vIHVwbG9hZCB0aGUgd2FzbSBvYmplY3RcbiAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHNpZ25lZF91cmwsIHtcbiAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgYm9keTogcG9saWN5LFxuICB9KTtcblxuICBpZiAoIXJlc3Aub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byB1cGxvYWQgZnVuY3Rpb24gd2l0aCBzdGF0dXM6ICR7cmVzcC5zdGF0dXN9OiAke3Jlc3Auc3RhdHVzVGV4dH1gKTtcbiAgfVxuXG4gIHJldHVybiBoYXNoO1xufVxuXG4vKipcbiAqIFVwbG9hZCB0aGUgZ2l2ZW4gV2FzbSBwb2xpY3kuXG4gKlxuICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gKiBAcGFyYW0gcG9saWN5IFRoZSBXYXNtIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIFdhc20gZnVuY3Rpb24gb2JqZWN0IGhhc2ggdG8gdXNlIGZvciBjcmVhdGluZy91cGRhdGluZyBDMkYgcG9saWNpZXMuXG4gKiBAdGhyb3dzIGlmIHVwbG9hZGluZyB0aGUgcG9saWN5IGZhaWxzLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCB1cGxvYWRXYXNtUG9saWN5ID0gdXBsb2FkV2FzbUZ1bmN0aW9uO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBzaGFyZWQgbWV0aG9kcyBiZXR3ZWVuIGtleSwgcm9sZSBhbmQgV2FzbSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5hbWVkUG9saWN5IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaUNsaWVudDogQXBpQ2xpZW50O1xuICBwcm90ZWN0ZWQgZGF0YTogTmFtZWRQb2xpY3lJbmZvO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIGZvciBjcmVhdGluZyBhIG5hbWVkIHBvbGljeSBmcm9tIGEgcG9saWN5IGluZm8uXG4gICAqXG4gICAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIGFwaSBjbGllbnQgdG8gdXNlLlxuICAgKiBAcGFyYW0gaW5mbyBUaGUgcG9saWN5IGluZm8uXG4gICAqIEByZXR1cm5zIFRoZSBuYW1lZCBwb2xpY3kgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gaW5mby5cbiAgICovXG4gIHN0YXRpYyBmcm9tSW5mbyhhcGlDbGllbnQ6IEFwaUNsaWVudCwgaW5mbzogUG9saWN5SW5mbyk6IE5hbWVkUG9saWN5IHtcbiAgICBzd2l0Y2ggKGluZm8ucG9saWN5X3R5cGUpIHtcbiAgICAgIGNhc2UgXCJLZXlcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBOYW1lZEtleVBvbGljeShhcGlDbGllbnQsIGluZm8gYXMgS2V5UG9saWN5SW5mbyk7XG4gICAgICBjYXNlIFwiUm9sZVwiOlxuICAgICAgICByZXR1cm4gbmV3IE5hbWVkUm9sZVBvbGljeShhcGlDbGllbnQsIGluZm8gYXMgUm9sZVBvbGljeUluZm8pO1xuICAgICAgY2FzZSBcIldhc21cIjpcbiAgICAgICAgcmV0dXJuIG5ldyBDMkZGdW5jdGlvbihhcGlDbGllbnQsIGluZm8gYXMgQzJGSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIFRoZSBwb2xpY3kgaWQgKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5wb2xpY3lfaWQ7XG4gIH1cblxuICAvKiogQHJldHVybnMgVGhlIHBvbGljeSB0eXBlICovXG4gIGdldCBwb2xpY3lUeXBlKCk6IFBvbGljeVR5cGUge1xuICAgIHJldHVybiB0aGlzLmRhdGEucG9saWN5X3R5cGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgcG9saWN5IHZlcnNpb24gdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBUaGUgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgcG9saWN5LlxuICAgKi9cbiAgYXN5bmMgdmVyc2lvbih2ZXJzaW9uOiBWZXJzaW9uKTogUHJvbWlzZTxOYW1lZFBvbGljeVJ1bGVzPiB7XG4gICAgbGV0IHZlcnNpb25JbmZvO1xuXG4gICAgaWYgKHZlcnNpb24gPT0gYHYke3RoaXMuZGF0YS52ZXJzaW9ufWApIHtcbiAgICAgIHZlcnNpb25JbmZvID0gdGhpcy5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB2ZXJzaW9uSW5mbyA9IChhd2FpdCB0aGlzLmFwaUNsaWVudC5wb2xpY3lHZXQodGhpcy5pZCwgdmVyc2lvbikpIGFzIE5hbWVkUG9saWN5SW5mbztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE5hbWVkUG9saWN5UnVsZXModGhpcy5hcGlDbGllbnQsIHZlcnNpb25JbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgcG9saWN5LlxuICAgKi9cbiAgYXN5bmMgbGF0ZXN0KCk6IFByb21pc2U8TmFtZWRQb2xpY3lSdWxlcz4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKFwibGF0ZXN0XCIpO1xuICAgIHJldHVybiBuZXcgTmFtZWRQb2xpY3lSdWxlcyh0aGlzLmFwaUNsaWVudCwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYW5kIHJldHVybiB0aGUgY3VycmVudCBuYW1lIG9mIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY3kgbmFtZS5cbiAgICovXG4gIGFzeW5jIG5hbWUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgbmV3IG5hbWUgZm9yIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuZXcgcG9saWN5IG5hbWUuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBzZXROYW1lKG5hbWU6IHN0cmluZywgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBuYW1lIH0sIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgb3duZXIgb2YgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHVzZXIgaWQgb2YgdGhlIHBvbGljeSBvd25lci5cbiAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICovXG4gIGFzeW5jIG93bmVyKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5vd25lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBuZXcgb3duZXIgZm9yIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEBwYXJhbSBvd25lciBUaGUgbmV3IG93bmVyIG9mIHRoZSBwb2xpY3kuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBzZXRPd25lcihvd25lcjogc3RyaW5nLCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZSh7IG93bmVyIH0sIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuZCByZXR1cm4gdGhlIG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcG9saWN5IG1ldGFkYXRhLlxuICAgKi9cbiAgYXN5bmMgbWV0YWRhdGEoKTogUHJvbWlzZTxKc29uVmFsdWU+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLm1ldGFkYXRhIGFzIEpzb25WYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgbmV3IG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgbmFtZWQgcG9saWN5IChvdmVyd3JpdGluZyB0aGUgZXhpc3RpbmcgdmFsdWUpLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0YWRhdGEgVGhlIG5ldyBtZXRhZGF0YSBmb3IgdGhlIG5hbWVkIHBvbGljeS5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIHNldE1ldGFkYXRhKG1ldGFkYXRhOiBKc29uVmFsdWUsIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIGF3YWl0IHRoaXMudXBkYXRlKHsgbWV0YWRhdGEgfSwgbWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYW5kIHJldHVybiB0aGUgZWRpdCBwb2xpY3kgZm9yIHRoZSBuYW1lZCBwb2xpY3kuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBlZGl0IHBvbGljeSBmb3IgdGhpcyBuYW1lZCBwb2xpY3kuXG4gICAqL1xuICBhc3luYyBlZGl0UG9saWN5KCk6IFByb21pc2U8RWRpdFBvbGljeSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEuZWRpdF9wb2xpY3k7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgbmV3IGVkaXQgcG9saWN5IGZvciB0aGUgbmFtZWQgcG9saWN5LlxuICAgKlxuICAgKiBAcGFyYW0gZWRpdFBvbGljeSBUaGUgbmV3IGVkaXQgcG9saWN5LlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0RWRpdFBvbGljeShlZGl0UG9saWN5OiBFZGl0UG9saWN5LCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZSh7IGVkaXRfcG9saWN5OiBlZGl0UG9saWN5IH0sIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuZCByZXR1cm4gdGhlIGFjY2VzcyBjb250cm9sIGVudHJpZXMgZm9yIHRoZSBuYW1lZCBwb2xpY3kuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhY2Nlc3MgY29udHJvbCBlbnRyaWVzIGZvciB0aGlzIG5hbWVkIHBvbGljeS5cbiAgICovXG4gIGFzeW5jIGFjbCgpOiBQcm9taXNlPFBvbGljeUFjbCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEuYWNsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgbmV3IGFjY2VzcyBjb250cm9sIGVudHJpZXMgZm9yIHRoZSBuYW1lZCBwb2xpY3kgKG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZyBlbnRyaWVzKS5cbiAgICpcbiAgICogQHBhcmFtIGFjbCBUaGUgYWNjZXNzIGNvbnRyb2wgZW50cmllcyB0byBzZXQuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBzZXRBY2woYWNsOiBQb2xpY3lBY2wsIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIGF3YWl0IHRoaXMudXBkYXRlKHsgYWNsIH0sIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGEgbGlzdCBvZiBhbGwga2V5cywgcm9sZXMsIGFuZCBrZXktaW4tcm9sZXMgdGhhdCBhbGwgdmVyc2lvbnMgb2YgdGhpcyBwb2xpY3lcbiAgICogYXJlIGF0dGFjaGVkIHRvLlxuICAgKi9cbiAgYXN5bmMgYWxsQXR0YWNoZWQoKTogUHJvbWlzZTxQb2xpY3lBdHRhY2hlZFRvSWRbXT4ge1xuICAgIC8vIHRoZXJlIGlzIG5vIHNpbmdsZS1jYWxsIHdheSB0byBhY2hpZXZlIHRoaXMuIFNvIGluc3RlYWQsIHdlXG4gICAgLy8gMS4gR2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgcG9saWN5XG4gICAgLy8gMi4gRm9yIGFsbCB2ZXJzaW9ucyBgdjBgIHRvIGBsYXRlc3RgLCBmZXRjaCB0aGUgcG9saWN5IGluZm9cbiAgICAvLyAzLiBKb2luIGFsbCBwb2xpY3kgYGF0dGFjaGVkX3RvYCBhcnJheXNcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaChcImxhdGVzdFwiKTtcblxuICAgIGNvbnN0IGxhdGVzdCA9IGRhdGEudmVyc2lvbjtcbiAgICBjb25zdCB2ZXJzaW9ucyA9IEFycmF5LmZyb20oQXJyYXkobGF0ZXN0ICsgMSkua2V5cygpKTtcbiAgICBjb25zdCBiYXRjaFNpemUgPSAxMDtcbiAgICBsZXQgYWxsQXR0YWNoZWQ6IFBvbGljeUF0dGFjaGVkVG9JZFtdID0gW107XG5cbiAgICBmb3IgKGxldCBiYXRjaCA9IDA7IGJhdGNoIDwgdmVyc2lvbnMubGVuZ3RoOyBiYXRjaCArPSBiYXRjaFNpemUpIHtcbiAgICAgIGNvbnN0IHJzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHZlcnNpb25zLnNsaWNlKGJhdGNoLCBiYXRjaCArIGJhdGNoU2l6ZSkubWFwKCh2ZXJzaW9uKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYXBpQ2xpZW50LnBvbGljeUdldCh0aGlzLmlkLCBgdiR7dmVyc2lvbn1gKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgYWxsQXR0YWNoZWQgPSBhbGxBdHRhY2hlZC5jb25jYXQocnMuZmxhdE1hcCgocG9saWN5KSA9PiBwb2xpY3kuYXR0YWNoZWRfdG8pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsQXR0YWNoZWQuY29uY2F0KGRhdGEuYXR0YWNoZWRfdG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGlzIHBvbGljeS5cbiAgICpcbiAgICogVGhpcyBjYW4gZmFpbCBpZiB0aGUgcG9saWN5IGlzIHN0aWxsIGF0dGFjaGVkIHRvIGFueSBrZXksIHJvbGUsIG9yIGtleSBpbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHJldHVybnMgQSByZXNwb25zZSB3aGljaCBjYW4gYmUgdXNlZCB0byBhcHByb3ZlIE1GQSBpZiBuZWVkZWRcbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyk6IFByb21pc2U8Q3ViZVNpZ25lclJlc3BvbnNlPEVtcHR5Pj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmFwaUNsaWVudC5wb2xpY3lEZWxldGUodGhpcy5pZCwgbWZhUmVjZWlwdCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLSBJTlRFUk5BTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBKU09OIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBzZXJ2ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGFwaUNsaWVudDogQXBpQ2xpZW50LCBkYXRhOiBOYW1lZFBvbGljeUluZm8pIHtcbiAgICB0aGlzLmFwaUNsaWVudCA9IGFwaUNsaWVudDtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgSlNPTiByZXF1ZXN0IHRvIHNlbmQgdG8gdGhlIEFQSSBzZXJ2ZXIuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBwb2xpY3kgaW5mb3JtYXRpb24uXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgdXBkYXRlKFxuICAgIHJlcXVlc3Q6IFVwZGF0ZVBvbGljeVJlcXVlc3QsXG4gICAgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzLFxuICApOiBQcm9taXNlPE5hbWVkUG9saWN5SW5mbz4ge1xuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmFwaUNsaWVudC5wb2xpY3lVcGRhdGUodGhpcy5pZCwgcmVxdWVzdCwgbWZhUmVjZWlwdCk7XG4gICAgdGhpcy5kYXRhID0gcmVzcC5kYXRhKCkgYXMgTmFtZWRQb2xpY3lJbmZvO1xuICAgIHJldHVybiB0aGlzLmRhdGE7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIHBvbGljeSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIHZlcnNpb24gb2YgdGhlIHBvbGljeSB0byBmZXRjaC4gRGVmYXVsdHMgdG8gXCJsYXRlc3RcIi5cbiAgICogQHJldHVybnMgVGhlIHBvbGljeSBpbmZvcm1hdGlvbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgZmV0Y2godmVyc2lvbjogVmVyc2lvbiA9IFwibGF0ZXN0XCIpOiBQcm9taXNlPE5hbWVkUG9saWN5SW5mbz4ge1xuICAgIHRoaXMuZGF0YSA9IChhd2FpdCB0aGlzLmFwaUNsaWVudC5wb2xpY3lHZXQodGhpcy5pZCwgdmVyc2lvbikpIGFzIE5hbWVkUG9saWN5SW5mbztcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG59XG5cbi8qKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhIG5hbWVkIGtleSBwb2xpY3kuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lZEtleVBvbGljeSBleHRlbmRzIE5hbWVkUG9saWN5IHtcbiAgb3ZlcnJpZGUgZGF0YTogS2V5UG9saWN5SW5mbztcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBwb2xpY3kgd2l0aCBuZXcgcnVsZXMuXG4gICAqXG4gICAqIEBwYXJhbSBydWxlcyBUaGUgbmV3IHJ1bGVzIHRvIHVwZGF0ZSB0aGUgcG9saWN5IHdpdGguXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBzZXRSdWxlcyhydWxlczogS2V5UG9saWN5LCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZSh7IHJ1bGVzIH0sIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0gSU5URVJOQUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgSlNPTiByZXNwb25zZSBmcm9tIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwaUNsaWVudDogQXBpQ2xpZW50LCBkYXRhOiBLZXlQb2xpY3lJbmZvKSB7XG4gICAgc3VwZXIoYXBpQ2xpZW50LCBkYXRhKTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG59XG5cbi8qKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhIG5hbWVkIHJvbGUgcG9saWN5LlxuICovXG5leHBvcnQgY2xhc3MgTmFtZWRSb2xlUG9saWN5IGV4dGVuZHMgTmFtZWRQb2xpY3kge1xuICBvdmVycmlkZSBkYXRhOiBSb2xlUG9saWN5SW5mbztcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBwb2xpY3kgd2l0aCBuZXcgcnVsZXMuXG4gICAqXG4gICAqIEBwYXJhbSBydWxlcyBUaGUgbmV3IHJ1bGVzIHRvIHVwZGF0ZSB0aGUgcG9saWN5IHdpdGguXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBzZXRSdWxlcyhydWxlczogUm9sZVBvbGljeSwgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBydWxlcyB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tIElOVEVSTkFMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAgICogQHBhcmFtIGRhdGEgVGhlIEpTT04gcmVzcG9uc2UgZnJvbSB0aGUgQVBJIHNlcnZlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcGlDbGllbnQ6IEFwaUNsaWVudCwgZGF0YTogUm9sZVBvbGljeUluZm8pIHtcbiAgICBzdXBlcihhcGlDbGllbnQsIGRhdGEpO1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlcHJlc2VudGF0aW9uIG9mIGEgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uIChDMkYpLlxuICpcbiAqIFRoaXMgY2xhc3MgZXh0ZW5kcyBOYW1lZFBvbGljeSBiZWNhdXNlIEMyRiBmdW5jdGlvbnMgY2FuIGJlIGF0dGFjaGVkXG4gKiB0byBrZXlzIGFuZCByb2xlcyBsaWtlIGEgbmFtZWQgcG9saWN5LlxuICovXG5leHBvcnQgY2xhc3MgQzJGRnVuY3Rpb24gZXh0ZW5kcyBOYW1lZFBvbGljeSB7XG4gIG92ZXJyaWRlIGRhdGE6IEMyRkluZm87XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGlzIEMyRiBmdW5jdGlvbiB3aXRoIGEgbmV3IFdhc20gZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwb2xpY3kgVGhlIG5ldyBXYXNtIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiB1cGxvYWRpbmcgdGhlIGZ1bmN0aW9uIGZhaWxzLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgYXN5bmMgc2V0V2FzbUZ1bmN0aW9uKHBvbGljeTogVWludDhBcnJheSwgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgLy8gdXBsb2FkIHRoZSBwb2xpY3kgb2JqZWN0XG4gICAgY29uc3QgaGFzaCA9IGF3YWl0IHVwbG9hZFdhc21GdW5jdGlvbih0aGlzLmFwaUNsaWVudCwgcG9saWN5KTtcblxuICAgIC8vIHVwZGF0ZSB0aGlzIHBvbGljeSB3aXRoIHRoZSBuZXcgcG9saWN5IHZlcnNpb24uXG4gICAgY29uc3QgYm9keTogVXBkYXRlUG9saWN5UmVxdWVzdCA9IHsgcnVsZXM6IFt7IGhhc2ggfV0gfTtcbiAgICB0aGlzLmRhdGEgPSAoYXdhaXQgdGhpcy51cGRhdGUoYm9keSwgbWZhUmVjZWlwdCkpIGFzIEMyRkluZm87XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIHRoaXMgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5SWQgVGhlIG9wdGlvbmFsIGtleSBpZCB0aGF0IHRoZSBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgd2l0aC5cbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIHRvIGludm9rZS4gRGVmYXVsdHMgdG8gXCJsYXRlc3RcIi5cbiAgICogQHBhcmFtIHJlcXVlc3QgVGhlIG9wdGlvbmFsIHNpZ24gcmVxdWVzdCBib2R5IHRoYXQgd2lsbCBiZSBzZW50IHRvIHRoZSBmdW5jdGlvbi5cbiAgICogQHBhcmFtIHJvbGVJZCBUaGUgb3B0aW9uYWwgcm9sZSBpZCB0aGF0IHRoZSBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgYnkuXG4gICAqIElmIGB1bmRlZmluZWRgLCB0aGUgcG9saWN5IHdpbGwgYmUgaW52b2tlZCBieSB0aGUgdXNlciBzZXNzaW9uLlxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIGludm9raW5nIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIGFzeW5jIGludm9rZShcbiAgICBrZXlJZD86IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBWZXJzaW9uID0gXCJsYXRlc3RcIixcbiAgICByZXF1ZXN0PzogSnNvblZhbHVlLFxuICAgIHJvbGVJZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxDMkZJbnZvY2F0aW9uPiB7XG4gICAgLy8gVE9ETyBJZGVhbGx5LCBgdmVyc2lvbmAgc2hvdWxkIGJlIHRoZSBmaXJzdCBwYXJhbWV0ZXIuIEJ1dCBmb3IgYmFja3dhcmRzXG4gICAgLy8gY29tcGF0aWJpbGl0eSwgd2Uga2VlcCBga2V5SWRgIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgZm9yIG5vdy5cbiAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5hcGlDbGllbnQucG9saWN5SW52b2tlKHRoaXMuaWQsIHZlcnNpb24sIHtcbiAgICAgIGtleV9pZDoga2V5SWQsXG4gICAgICByZXF1ZXN0LFxuICAgICAgcm9sZV9pZDogcm9sZUlkLFxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgUG9saWN5SW52b2NhdGlvbihyZXNwKTtcbiAgfVxuXG4gIC8vIEJhY2t3YXJkcyBjb21wYWJpbGl0eSB3aXRoIE5hbWVkIFdhc20gUG9saWN5IG5hbWVzXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHBvbGljeSB3aXRoIHRoZSBuZXcgV2FzbSBwb2xpY3kuXG4gICAqXG4gICAqIEBwYXJhbSBwb2xpY3kgVGhlIG5ldyBXYXNtIHBvbGljeSBvYmplY3QuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIHVwbG9hZGluZyB0aGUgcG9saWN5IG9iamVjdCBmYWlscy5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIHNldFdhc21Qb2xpY3kgPSB0aGlzLnNldFdhc21GdW5jdGlvbjtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLSBJTlRFUk5BTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBKU09OIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBzZXJ2ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBpQ2xpZW50OiBBcGlDbGllbnQsIGRhdGE6IEMyRkluZm8pIHtcbiAgICBzdXBlcihhcGlDbGllbnQsIGRhdGEpO1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHNwZWNpZmljIHZlcnNpb24gb2YgYSBuYW1lZCBwb2xpY3kuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lZFBvbGljeVJ1bGVzIHtcbiAgLyoqIFRoZSBDdWJlU2lnbmVyIGluc3RhbmNlIHRoYXQgdGhpcyBwb2xpY3kgaXMgYXNzb2NpYXRlZCB3aXRoICovXG4gIHJlYWRvbmx5ICNhcGlDbGllbnQ6IEFwaUNsaWVudDtcbiAgI2RhdGE6IE5hbWVkUG9saWN5SW5mbztcblxuICAvKipcbiAgICogQHJldHVybnMgVGhlIElEIG9mIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEBleGFtcGxlIE5hbWVkUG9saWN5I2E0YTQ1Y2MyLTA2NDItNGM5OC1iNmJkLTBkYTM0N2Q2MDhhNFxuICAgKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2RhdGEucG9saWN5X2lkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kgdGhpcyBvYmplY3QgY29udGFpbnMuXG4gICAqL1xuICBnZXQgdmVyc2lvbigpOiBWZXJzaW9uIHtcbiAgICByZXR1cm4gYHYke3RoaXMuI2RhdGEudmVyc2lvbn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY3kgcnVsZXMuXG4gICAqXG4gICAqIEBleGFtcGxlIFsgXCJBc3NlcnRFcmMyMFR4XCIgXVxuICAgKi9cbiAgZ2V0IHJ1bGVzKCk6IFBvbGljeVJ1bGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuI2RhdGEucnVsZXMgYXMgUG9saWN5UnVsZVtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGEgbGlzdCBvZiBhbGwga2V5cywgcm9sZXMsIGFuZCBrZXktaW4tcm9sZXMgdGhpcyB2ZXJzaW9uIG9mIHRoZSBwb2xpY3lcbiAgICogICAgICAgICAgaXMgYXR0YWNoZWQgdG8uXG4gICAqL1xuICBhc3luYyBhbGxBdHRhY2hlZCgpOiBQcm9taXNlPFBvbGljeUF0dGFjaGVkVG9JZFtdPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5hdHRhY2hlZF90bztcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tIElOVEVSTkFMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAgICogQHBhcmFtIGRhdGEgVGhlIEpTT04gcmVzcG9uc2UgZnJvbSB0aGUgQVBJIHNlcnZlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcGlDbGllbnQ6IEFwaUNsaWVudCwgZGF0YTogTmFtZWRQb2xpY3lJbmZvKSB7XG4gICAgdGhpcy4jYXBpQ2xpZW50ID0gYXBpQ2xpZW50O1xuICAgIHRoaXMuI2RhdGEgPSBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBwb2xpY3kgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY3kgaW5mb3JtYXRpb24uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaCgpOiBQcm9taXNlPE5hbWVkUG9saWN5SW5mbz4ge1xuICAgIHRoaXMuI2RhdGEgPSAoYXdhaXQgdGhpcy4jYXBpQ2xpZW50LnBvbGljeUdldCh0aGlzLmlkLCB0aGlzLnZlcnNpb24pKSBhcyBOYW1lZFBvbGljeUluZm87XG4gICAgcmV0dXJuIHRoaXMuI2RhdGE7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIGludm9raW5nIGEgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQzJGSW52b2NhdGlvbiB7XG4gIHJlYWRvbmx5ICNkYXRhOiBJbnZva2VDMkZSZXNwb25zZTtcblxuICAvKiogQHJldHVybnMgVGhlIHBvbGljeSByZXNwb25zZSBpdHNlbGYuICovXG4gIGdldCByZXNwb25zZSgpOiBDMkZSZXNwb25zZSB7XG4gICAgcmV0dXJuIHRoaXMuI2RhdGEucmVzcG9uc2U7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIG91dHB1dCBzdHJlYW0gYXMgcmF3IGJ5dGVzLiBVc3VhbGx5IGEgVVRGLTggZW5jb2RlZCBzdHJpbmcsXG4gICAqIHVzZSB7QGxpbmsgVGV4dERlY29kZXJ9IHRvIGRlY29kZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHN0YW5kYXJkIG91dHB1dCBzdHJlYW0uXG4gICAqL1xuICBnZXQgc3Rkb3V0Qnl0ZXMoKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGRlY29kZUZyb21IZXgodGhpcy4jZGF0YS5zdGRvdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0gYXMgcmF3IGJ5dGVzLiBVc3VhbGx5IGEgVVRGLTggZW5jb2RlZCBzdHJpbmcsIHVzZVxuICAgKiB7QGxpbmsgVGV4dERlY29kZXJ9IHRvIGRlY29kZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS5cbiAgICovXG4gIGdldCBzdGRlcnJCeXRlcygpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gZGVjb2RlRnJvbUhleCh0aGlzLiNkYXRhLnN0ZGVycik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIG91dHB1dCBzdHJlYW0gYXMgYSBCdWZmZXIuIFVzdWFsbHkgYSBVVEYtOCBlbmNvZGVkIHN0cmluZy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHN0YW5kYXJkIG91dHB1dCBzdHJlYW0uXG4gICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgc3Rkb3V0Qnl0ZXN9IGluc3RlYWQgZm9yIGJyb3dzZXIgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIGdldCBzdGRvdXQoKTogQnVmZmVyIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIEJ1ZmZlciByZXR1cm4gdHlwZSBwcmVzZXJ2ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuc3Rkb3V0Qnl0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0gYXMgYSBCdWZmZXIuIFVzdWFsbHkgYSBVVEYtOCBlbmNvZGVkIHN0cmluZy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBzdGRlcnJCeXRlc30gaW5zdGVhZCBmb3IgYnJvd3NlciBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgZ2V0IHN0ZGVycigpOiBCdWZmZXIge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gQnVmZmVyIHJldHVybiB0eXBlIHByZXNlcnZlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5zdGRlcnJCeXRlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBKU09OIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBzZXJ2ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0b3IoZGF0YTogSW52b2tlQzJGUmVzcG9uc2UpIHtcbiAgICB0aGlzLiNkYXRhID0gZGF0YTtcbiAgfVxufVxuXG4vLyBCYWNrd2FyZHMgY29tcGFiaWxpdHkgd2l0aCBOYW1lZCBXYXNtIFBvbGljeSBuYW1lc1xuXG4vKiogQSByZXByZXNlbnRhdGlvbiBvZiBhIFdhc20gcG9saWN5LiAqL1xuZXhwb3J0IHR5cGUgTmFtZWRXYXNtUG9saWN5ID0gQzJGRnVuY3Rpb247XG4vKiogQSByZXByZXNlbnRhdGlvbiBvZiBhIFdhc20gcG9saWN5LiAqL1xuZXhwb3J0IGNvbnN0IE5hbWVkV2FzbVBvbGljeSA9IEMyRkZ1bmN0aW9uO1xuXG4vKiogVGhlIHJlc3VsdCBvZiBpbnZva2luZyBhIG5hbWVkIFdBU00gcG9saWN5LiAqL1xuZXhwb3J0IHR5cGUgUG9saWN5SW52b2NhdGlvbiA9IEMyRkludm9jYXRpb247XG4vKiogVGhlIHJlc3VsdCBvZiBpbnZva2luZyBhIG5hbWVkIFdBU00gcG9saWN5LiAqL1xuZXhwb3J0IGNvbnN0IFBvbGljeUludm9jYXRpb24gPSBDMkZJbnZvY2F0aW9uO1xuIl19
523
+ export const PolicyInvocation = C2FInvocation;
524
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUF1QkEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFtRTFFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsU0FBb0IsRUFDcEIsTUFBa0I7SUFFbEIsOERBQThEO0lBQzlELE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztJQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBELHFCQUFxQjtJQUNyQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWxFLHlCQUF5QjtJQUN6QixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxVQUFVLEVBQUU7UUFDbkMsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsTUFBTTtLQUNiLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0FBRW5EOztHQUVHO0FBQ0gs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ICBDMkZSZXNwb25zZSxcbiAgQ3ViZVNpZ25lclJlc3BvbnNlLFxuICBFZGl0UG9saWN5LFxuICBFbXB0eSxcbiAgSW52b2tlQzJGUmVzcG9uc2UsXG4gIEpzb25WYWx1ZSxcbiAgS2V5UG9saWN5LFxuICBLZXlQb2xpY3lSdWxlLFxuICBNZmFSZWNlaXB0cyxcbiAgUG9saWN5QXR0YWNoZWRUb0lkLFxuICBQb2xpY3lUeXBlLFxuICBSb2xlUG9saWN5LFxuICBSb2xlUG9saWN5UnVsZSxcbiAgVXBkYXRlUG9saWN5UmVxdWVzdCxcbiAgV2FzbVJ1bGUsXG4gIEFjZUF0dHJpYnV0ZSxcbiAgUG9saWN5QWN0aW9uLFxuICBBY2UsXG4gIFBvbGljeUluZm8sXG59IGZyb20gXCIuL2luZGV4LnRzXCI7XG5cbmltcG9ydCB7IGxvYWRTdWJ0bGVDcnlwdG8sIGVuY29kZVRvSGV4LCBkZWNvZGVGcm9tSGV4IH0gZnJvbSBcIi4vaW5kZXgudHNcIjtcblxuLyoqXG4gKiBOYW1lZCBwb2xpY3kgcnVsZSB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBQb2xpY3lSdWxlID0gS2V5UG9saWN5UnVsZSB8IFJvbGVQb2xpY3lSdWxlIHwgV2FzbVJ1bGU7XG5cbi8qKlxuICogQSBoZWxwZXIgdHlwZSBmb3Ige0BsaW5rIFBvbGljeUluZm99IHdpdGggYSBtb3JlIGRldGFpbGVkIGBhY2xgIHR5cGUuXG4gKi9cbnR5cGUgTmFtZWRQb2xpY3lJbmZvID0gUG9saWN5SW5mbyAmIHtcbiAgYWNsPzogUG9saWN5QWNsO1xufTtcblxuLyoqXG4gKiBUaGUgcG9saWN5IGluZm8gZm9yIGEgbmFtZWQga2V5IHBvbGljeS5cbiAqL1xuZXhwb3J0IHR5cGUgS2V5UG9saWN5SW5mbyA9IE5hbWVkUG9saWN5SW5mbyAmIHtcbiAgcG9saWN5X3R5cGU6IFwiS2V5XCI7XG59O1xuXG4vKipcbiAqIFRoZSBwb2xpY3kgaW5mbyBmb3IgYSBuYW1lZCByb2xlIHBvbGljeS5cbiAqL1xuZXhwb3J0IHR5cGUgUm9sZVBvbGljeUluZm8gPSBOYW1lZFBvbGljeUluZm8gJiB7XG4gIHBvbGljeV90eXBlOiBcIlJvbGVcIjtcbn07XG5cbi8qKlxuICogVGhlIHBvbGljeSBpbmZvIGZvciBhIG5hbWVkIHdhc20gcG9saWN5LlxuICovXG5leHBvcnQgdHlwZSBXYXNtUG9saWN5SW5mbyA9IE5hbWVkUG9saWN5SW5mbyAmIHtcbiAgcG9saWN5X3R5cGU6IFwiV2FzbVwiO1xufTtcblxuLyoqXG4gKiBUaGUgcG9saWN5IGluZm8gZm9yIGEgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBDMkZJbmZvID0gV2FzbVBvbGljeUluZm87XG5cbi8qKlxuICogQSBoZWxwZXIgdHlwZSBmb3IgdmFsaWQgbmFtZWQgcG9saWN5IHZlcnNpb24gc3RyaW5ncy5cbiAqL1xuZXhwb3J0IHR5cGUgVmVyc2lvbiA9IGB2JHtudW1iZXJ9YCB8IGBsYXRlc3RgO1xuXG4vKiogQSBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgZW50cnkuICovXG5leHBvcnQgdHlwZSBQb2xpY3lBY2UgPSBBY2U8UG9saWN5QWN0aW9uLCBQb2xpY3lDdHg+O1xuXG4vKiogQSBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgbGlzdC4gKi9cbmV4cG9ydCB0eXBlIFBvbGljeUFjbCA9IFBvbGljeUFjZVtdO1xuXG4vKiogQWRkaXRpb25hbCBjb250ZXh0cyB3aGVuIHVzaW5nIHBvbGljaWVzLiAqL1xuZXhwb3J0IHR5cGUgUG9saWN5Q3R4ID0ge1xuICAvKipcbiAgICogVGhlIHJlc291cmNlcyAoa2V5cywgcm9sZXMsIGFuZCBrZXktaW4tcm9sZXMpIHRoYXQgdGhlIGFjY2VzcyBjb250cm9sIGVudHJ5XG4gICAqIGFwcGxpZXMgdG8uXG4gICAqL1xuICByZXNvdXJjZXM6IEFjZUF0dHJpYnV0ZTxQb2xpY3lSZXNvdXJjZT47XG59O1xuXG4vKiogQSByZXNvdXJjZSBhIHBvbGljeSBpcyBpbnZva2VkIHdpdGggb3IgYXR0YWNoZWQgdG8uICovXG5leHBvcnQgdHlwZSBQb2xpY3lSZXNvdXJjZSA9XG4gIC8qKiBBIGtleSBvciByb2xlIGlkLiAqL1xuICB8IHN0cmluZ1xuICAvKiogS2V5cyBhdHRhY2hlZCB0byByb2xlcy4gKi9cbiAgfCB7IGtleV9pZHM6IFwiKlwiIHwgc3RyaW5nW107IHJvbGVfaWRzOiBcIipcIiB8IHN0cmluZ1tdIH07XG5cbi8qKlxuICogVXBsb2FkIHRoZSBnaXZlbiBXYXNtIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAqIEBwYXJhbSBwb2xpY3kgVGhlIFdhc20gZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgV2FzbSBmdW5jdGlvbiBvYmplY3QgaGFzaCB0byB1c2UgZm9yIGNyZWF0aW5nL3VwZGF0aW5nIEMyRiBwb2xpY2llcy5cbiAqIEB0aHJvd3MgaWYgdXBsb2FkaW5nIHRoZSBwb2xpY3kgZmFpbHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwbG9hZFdhc21GdW5jdGlvbihcbiAgYXBpQ2xpZW50OiBBcGlDbGllbnQsXG4gIHBvbGljeTogVWludDhBcnJheSxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIGdldCB0aGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHVwbG9hZCB1cmwuXG4gIGNvbnN0IHN1YnRsZSA9IGF3YWl0IGxvYWRTdWJ0bGVDcnlwdG8oKTtcbiAgY29uc3QgaGFzaEJ5dGVzID0gYXdhaXQgc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIiwgcG9saWN5KTtcbiAgY29uc3QgaGFzaCA9IGVuY29kZVRvSGV4KG5ldyBVaW50OEFycmF5KGhhc2hCeXRlcykpO1xuXG4gIC8vIGdldCB0aGUgdXBsb2FkIFVSTFxuICBjb25zdCB7IHNpZ25lZF91cmwgfSA9IGF3YWl0IGFwaUNsaWVudC53YXNtUG9saWN5VXBsb2FkKHsgaGFzaCB9KTtcblxuICAvLyB1cGxvYWQgdGhlIHdhc20gb2JqZWN0XG4gIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaChzaWduZWRfdXJsLCB7XG4gICAgbWV0aG9kOiBcIlBVVFwiLFxuICAgIGJvZHk6IHBvbGljeSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gdXBsb2FkIGZ1bmN0aW9uIHdpdGggc3RhdHVzOiAke3Jlc3Auc3RhdHVzfTogJHtyZXNwLnN0YXR1c1RleHR9YCk7XG4gIH1cblxuICByZXR1cm4gaGFzaDtcbn1cblxuLyoqXG4gKiBVcGxvYWQgdGhlIGdpdmVuIFdhc20gcG9saWN5LlxuICpcbiAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICogQHBhcmFtIHBvbGljeSBUaGUgV2FzbSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBXYXNtIGZ1bmN0aW9uIG9iamVjdCBoYXNoIHRvIHVzZSBmb3IgY3JlYXRpbmcvdXBkYXRpbmcgQzJGIHBvbGljaWVzLlxuICogQHRocm93cyBpZiB1cGxvYWRpbmcgdGhlIHBvbGljeSBmYWlscy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgdXBsb2FkV2FzbVBvbGljeSA9IHVwbG9hZFdhc21GdW5jdGlvbjtcblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBmb3Igc2hhcmVkIG1ldGhvZHMgYmV0d2VlbiBrZXksIHJvbGUgYW5kIFdhc20gcG9saWNpZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOYW1lZFBvbGljeSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlDbGllbnQ6IEFwaUNsaWVudDtcbiAgcHJvdGVjdGVkIGRhdGE6IE5hbWVkUG9saWN5SW5mbztcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBuYW1lZCBwb2xpY3kgZnJvbSBhIHBvbGljeSBpbmZvLlxuICAgKlxuICAgKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBhcGkgY2xpZW50IHRvIHVzZS5cbiAgICogQHBhcmFtIGluZm8gVGhlIHBvbGljeSBpbmZvLlxuICAgKiBAcmV0dXJucyBUaGUgbmFtZWQgcG9saWN5IG9iamVjdCBmb3IgdGhlIGdpdmVuIGluZm8uXG4gICAqL1xuICBzdGF0aWMgZnJvbUluZm8oYXBpQ2xpZW50OiBBcGlDbGllbnQsIGluZm86IFBvbGljeUluZm8pOiBOYW1lZFBvbGljeSB7XG4gICAgc3dpdGNoIChpbmZvLnBvbGljeV90eXBlKSB7XG4gICAgICBjYXNlIFwiS2V5XCI6XG4gICAgICAgIHJldHVybiBuZXcgTmFtZWRLZXlQb2xpY3koYXBpQ2xpZW50LCBpbmZvIGFzIEtleVBvbGljeUluZm8pO1xuICAgICAgY2FzZSBcIlJvbGVcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBOYW1lZFJvbGVQb2xpY3koYXBpQ2xpZW50LCBpbmZvIGFzIFJvbGVQb2xpY3lJbmZvKTtcbiAgICAgIGNhc2UgXCJXYXNtXCI6XG4gICAgICAgIHJldHVybiBuZXcgQzJGRnVuY3Rpb24oYXBpQ2xpZW50LCBpbmZvIGFzIEMyRkluZm8pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyBUaGUgcG9saWN5IGlkICovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGEucG9saWN5X2lkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIFRoZSBwb2xpY3kgdHlwZSAqL1xuICBnZXQgcG9saWN5VHlwZSgpOiBQb2xpY3lUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnBvbGljeV90eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIHBvbGljeSB2ZXJzaW9uIHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIHBvbGljeS5cbiAgICovXG4gIGFzeW5jIHZlcnNpb24odmVyc2lvbjogVmVyc2lvbik6IFByb21pc2U8TmFtZWRQb2xpY3lSdWxlcz4ge1xuICAgIGxldCB2ZXJzaW9uSW5mbztcblxuICAgIGlmICh2ZXJzaW9uID09IGB2JHt0aGlzLmRhdGEudmVyc2lvbn1gKSB7XG4gICAgICB2ZXJzaW9uSW5mbyA9IHRoaXMuZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmVyc2lvbkluZm8gPSAoYXdhaXQgdGhpcy5hcGlDbGllbnQucG9saWN5R2V0KHRoaXMuaWQsIHZlcnNpb24pKSBhcyBOYW1lZFBvbGljeUluZm87XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBOYW1lZFBvbGljeVJ1bGVzKHRoaXMuYXBpQ2xpZW50LCB2ZXJzaW9uSW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHBvbGljeS5cbiAgICovXG4gIGFzeW5jIGxhdGVzdCgpOiBQcm9taXNlPE5hbWVkUG9saWN5UnVsZXM+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaChcImxhdGVzdFwiKTtcbiAgICByZXR1cm4gbmV3IE5hbWVkUG9saWN5UnVsZXModGhpcy5hcGlDbGllbnQsIGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgbmFtZSBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcG9saWN5IG5hbWUuXG4gICAqL1xuICBhc3luYyBuYW1lKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIG5ldyBuYW1lIGZvciB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmV3IHBvbGljeSBuYW1lLlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0TmFtZShuYW1lOiBzdHJpbmcsIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIGF3YWl0IHRoaXMudXBkYXRlKHsgbmFtZSB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbmQgcmV0dXJuIHRoZSBjdXJyZW50IG93bmVyIG9mIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB1c2VyIGlkIG9mIHRoZSBwb2xpY3kgb3duZXIuXG4gICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAqL1xuICBhc3luYyBvd25lcigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEub3duZXI7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgbmV3IG93bmVyIGZvciB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcGFyYW0gb3duZXIgVGhlIG5ldyBvd25lciBvZiB0aGUgcG9saWN5LlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0T3duZXIob3duZXI6IHN0cmluZywgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBvd25lciB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbmQgcmV0dXJuIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHBvbGljeSBtZXRhZGF0YS5cbiAgICovXG4gIGFzeW5jIG1ldGFkYXRhKCk6IFByb21pc2U8SnNvblZhbHVlPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5tZXRhZGF0YSBhcyBKc29uVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIG5ldyBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIG5hbWVkIHBvbGljeSAob3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nIHZhbHVlKS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGFkYXRhIFRoZSBuZXcgbWV0YWRhdGEgZm9yIHRoZSBuYW1lZCBwb2xpY3kuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBzZXRNZXRhZGF0YShtZXRhZGF0YTogSnNvblZhbHVlLCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZSh7IG1ldGFkYXRhIH0sIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuZCByZXR1cm4gdGhlIGVkaXQgcG9saWN5IGZvciB0aGUgbmFtZWQgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZWRpdCBwb2xpY3kgZm9yIHRoaXMgbmFtZWQgcG9saWN5LlxuICAgKi9cbiAgYXN5bmMgZWRpdFBvbGljeSgpOiBQcm9taXNlPEVkaXRQb2xpY3kgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLmVkaXRfcG9saWN5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIG5ldyBlZGl0IHBvbGljeSBmb3IgdGhlIG5hbWVkIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIGVkaXRQb2xpY3kgVGhlIG5ldyBlZGl0IHBvbGljeS5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIHNldEVkaXRQb2xpY3koZWRpdFBvbGljeTogRWRpdFBvbGljeSwgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBlZGl0X3BvbGljeTogZWRpdFBvbGljeSB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbmQgcmV0dXJuIHRoZSBhY2Nlc3MgY29udHJvbCBlbnRyaWVzIGZvciB0aGUgbmFtZWQgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYWNjZXNzIGNvbnRyb2wgZW50cmllcyBmb3IgdGhpcyBuYW1lZCBwb2xpY3kuXG4gICAqL1xuICBhc3luYyBhY2woKTogUHJvbWlzZTxQb2xpY3lBY2wgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLmFjbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIG5ldyBhY2Nlc3MgY29udHJvbCBlbnRyaWVzIGZvciB0aGUgbmFtZWQgcG9saWN5IChvdmVyd3JpdGluZyB0aGUgZXhpc3RpbmcgZW50cmllcykuXG4gICAqXG4gICAqIEBwYXJhbSBhY2wgVGhlIGFjY2VzcyBjb250cm9sIGVudHJpZXMgdG8gc2V0LlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0QWNsKGFjbDogUG9saWN5QWNsLCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZSh7IGFjbCB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGtleXMsIHJvbGVzLCBhbmQga2V5LWluLXJvbGVzIHRoYXQgYWxsIHZlcnNpb25zIG9mIHRoaXMgcG9saWN5XG4gICAqIGFyZSBhdHRhY2hlZCB0by5cbiAgICovXG4gIGFzeW5jIGFsbEF0dGFjaGVkKCk6IFByb21pc2U8UG9saWN5QXR0YWNoZWRUb0lkW10+IHtcbiAgICAvLyB0aGVyZSBpcyBubyBzaW5nbGUtY2FsbCB3YXkgdG8gYWNoaWV2ZSB0aGlzLiBTbyBpbnN0ZWFkLCB3ZVxuICAgIC8vIDEuIEdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHBvbGljeVxuICAgIC8vIDIuIEZvciBhbGwgdmVyc2lvbnMgYHYwYCB0byBgbGF0ZXN0YCwgZmV0Y2ggdGhlIHBvbGljeSBpbmZvXG4gICAgLy8gMy4gSm9pbiBhbGwgcG9saWN5IGBhdHRhY2hlZF90b2AgYXJyYXlzXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goXCJsYXRlc3RcIik7XG5cbiAgICBjb25zdCBsYXRlc3QgPSBkYXRhLnZlcnNpb247XG4gICAgY29uc3QgdmVyc2lvbnMgPSBBcnJheS5mcm9tKEFycmF5KGxhdGVzdCArIDEpLmtleXMoKSk7XG4gICAgY29uc3QgYmF0Y2hTaXplID0gMTA7XG4gICAgbGV0IGFsbEF0dGFjaGVkOiBQb2xpY3lBdHRhY2hlZFRvSWRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgYmF0Y2ggPSAwOyBiYXRjaCA8IHZlcnNpb25zLmxlbmd0aDsgYmF0Y2ggKz0gYmF0Y2hTaXplKSB7XG4gICAgICBjb25zdCBycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICB2ZXJzaW9ucy5zbGljZShiYXRjaCwgYmF0Y2ggKyBiYXRjaFNpemUpLm1hcCgodmVyc2lvbikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmFwaUNsaWVudC5wb2xpY3lHZXQodGhpcy5pZCwgYHYke3ZlcnNpb259YCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIGFsbEF0dGFjaGVkID0gYWxsQXR0YWNoZWQuY29uY2F0KHJzLmZsYXRNYXAoKHBvbGljeSkgPT4gcG9saWN5LmF0dGFjaGVkX3RvKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbEF0dGFjaGVkLmNvbmNhdChkYXRhLmF0dGFjaGVkX3RvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhpcyBwb2xpY3kuXG4gICAqXG4gICAqIFRoaXMgY2FuIGZhaWwgaWYgdGhlIHBvbGljeSBpcyBzdGlsbCBhdHRhY2hlZCB0byBhbnkga2V5LCByb2xlLCBvciBrZXkgaW4gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEByZXR1cm5zIEEgcmVzcG9uc2Ugd2hpY2ggY2FuIGJlIHVzZWQgdG8gYXBwcm92ZSBNRkEgaWYgbmVlZGVkXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIGRlbGV0ZShtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpOiBQcm9taXNlPEN1YmVTaWduZXJSZXNwb25zZTxFbXB0eT4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hcGlDbGllbnQucG9saWN5RGVsZXRlKHRoaXMuaWQsIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0gSU5URVJOQUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgSlNPTiByZXNwb25zZSBmcm9tIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihhcGlDbGllbnQ6IEFwaUNsaWVudCwgZGF0YTogTmFtZWRQb2xpY3lJbmZvKSB7XG4gICAgdGhpcy5hcGlDbGllbnQgPSBhcGlDbGllbnQ7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgVGhlIEpTT04gcmVxdWVzdCB0byBzZW5kIHRvIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgcG9saWN5IGluZm9ybWF0aW9uLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHVwZGF0ZShcbiAgICByZXF1ZXN0OiBVcGRhdGVQb2xpY3lSZXF1ZXN0LFxuICAgIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyxcbiAgKTogUHJvbWlzZTxOYW1lZFBvbGljeUluZm8+IHtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5hcGlDbGllbnQucG9saWN5VXBkYXRlKHRoaXMuaWQsIHJlcXVlc3QsIG1mYVJlY2VpcHQpO1xuICAgIHRoaXMuZGF0YSA9IHJlc3AuZGF0YSgpIGFzIE5hbWVkUG9saWN5SW5mbztcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBwb2xpY3kgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kgdG8gZmV0Y2guIERlZmF1bHRzIHRvIFwibGF0ZXN0XCIuXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY3kgaW5mb3JtYXRpb24uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoKHZlcnNpb246IFZlcnNpb24gPSBcImxhdGVzdFwiKTogUHJvbWlzZTxOYW1lZFBvbGljeUluZm8+IHtcbiAgICB0aGlzLmRhdGEgPSAoYXdhaXQgdGhpcy5hcGlDbGllbnQucG9saWN5R2V0KHRoaXMuaWQsIHZlcnNpb24pKSBhcyBOYW1lZFBvbGljeUluZm87XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBuYW1lZCBrZXkgcG9saWN5LlxuICovXG5leHBvcnQgY2xhc3MgTmFtZWRLZXlQb2xpY3kgZXh0ZW5kcyBOYW1lZFBvbGljeSB7XG4gIG92ZXJyaWRlIGRhdGE6IEtleVBvbGljeUluZm87XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcG9saWN5IHdpdGggbmV3IHJ1bGVzLlxuICAgKlxuICAgKiBAcGFyYW0gcnVsZXMgVGhlIG5ldyBydWxlcyB0byB1cGRhdGUgdGhlIHBvbGljeSB3aXRoLlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0UnVsZXMocnVsZXM6IEtleVBvbGljeSwgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBydWxlcyB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tIElOVEVSTkFMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAgICogQHBhcmFtIGRhdGEgVGhlIEpTT04gcmVzcG9uc2UgZnJvbSB0aGUgQVBJIHNlcnZlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcGlDbGllbnQ6IEFwaUNsaWVudCwgZGF0YTogS2V5UG9saWN5SW5mbykge1xuICAgIHN1cGVyKGFwaUNsaWVudCwgZGF0YSk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBuYW1lZCByb2xlIHBvbGljeS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVkUm9sZVBvbGljeSBleHRlbmRzIE5hbWVkUG9saWN5IHtcbiAgb3ZlcnJpZGUgZGF0YTogUm9sZVBvbGljeUluZm87XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcG9saWN5IHdpdGggbmV3IHJ1bGVzLlxuICAgKlxuICAgKiBAcGFyYW0gcnVsZXMgVGhlIG5ldyBydWxlcyB0byB1cGRhdGUgdGhlIHBvbGljeSB3aXRoLlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0UnVsZXMocnVsZXM6IFJvbGVQb2xpY3ksIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIGF3YWl0IHRoaXMudXBkYXRlKHsgcnVsZXMgfSwgbWZhUmVjZWlwdCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLSBJTlRFUk5BTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBKU09OIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBzZXJ2ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBpQ2xpZW50OiBBcGlDbGllbnQsIGRhdGE6IFJvbGVQb2xpY3lJbmZvKSB7XG4gICAgc3VwZXIoYXBpQ2xpZW50LCBkYXRhKTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG59XG5cbi8qKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbiAoQzJGKS5cbiAqXG4gKiBUaGlzIGNsYXNzIGV4dGVuZHMgTmFtZWRQb2xpY3kgYmVjYXVzZSBDMkYgZnVuY3Rpb25zIGNhbiBiZSBhdHRhY2hlZFxuICogdG8ga2V5cyBhbmQgcm9sZXMgbGlrZSBhIG5hbWVkIHBvbGljeS5cbiAqL1xuZXhwb3J0IGNsYXNzIEMyRkZ1bmN0aW9uIGV4dGVuZHMgTmFtZWRQb2xpY3kge1xuICBvdmVycmlkZSBkYXRhOiBDMkZJbmZvO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhpcyBDMkYgZnVuY3Rpb24gd2l0aCBhIG5ldyBXYXNtIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcG9saWN5IFRoZSBuZXcgV2FzbSBmdW5jdGlvbi5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgdXBsb2FkaW5nIHRoZSBmdW5jdGlvbiBmYWlscy5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIGFzeW5jIHNldFdhc21GdW5jdGlvbihwb2xpY3k6IFVpbnQ4QXJyYXksIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIC8vIHVwbG9hZCB0aGUgcG9saWN5IG9iamVjdFxuICAgIGNvbnN0IGhhc2ggPSBhd2FpdCB1cGxvYWRXYXNtRnVuY3Rpb24odGhpcy5hcGlDbGllbnQsIHBvbGljeSk7XG5cbiAgICAvLyB1cGRhdGUgdGhpcyBwb2xpY3kgd2l0aCB0aGUgbmV3IHBvbGljeSB2ZXJzaW9uLlxuICAgIGNvbnN0IGJvZHk6IFVwZGF0ZVBvbGljeVJlcXVlc3QgPSB7IHJ1bGVzOiBbeyBoYXNoIH1dIH07XG4gICAgdGhpcy5kYXRhID0gKGF3YWl0IHRoaXMudXBkYXRlKGJvZHksIG1mYVJlY2VpcHQpKSBhcyBDMkZJbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZSB0aGlzIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGtleUlkIFRoZSBvcHRpb25hbCBrZXkgaWQgdGhhdCB0aGUgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIHdpdGguXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiB0byBpbnZva2UuIERlZmF1bHRzIHRvIFwibGF0ZXN0XCIuXG4gICAqIEBwYXJhbSByZXF1ZXN0IFRoZSBvcHRpb25hbCBzaWduIHJlcXVlc3QgYm9keSB0aGF0IHdpbGwgYmUgc2VudCB0byB0aGUgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSByb2xlSWQgVGhlIG9wdGlvbmFsIHJvbGUgaWQgdGhhdCB0aGUgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIGJ5LlxuICAgKiBJZiBgdW5kZWZpbmVkYCwgdGhlIHBvbGljeSB3aWxsIGJlIGludm9rZWQgYnkgdGhlIHVzZXIgc2Vzc2lvbi5cbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICBhc3luYyBpbnZva2UoXG4gICAga2V5SWQ/OiBzdHJpbmcsXG4gICAgdmVyc2lvbjogVmVyc2lvbiA9IFwibGF0ZXN0XCIsXG4gICAgcmVxdWVzdD86IEpzb25WYWx1ZSxcbiAgICByb2xlSWQ/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8QzJGSW52b2NhdGlvbj4ge1xuICAgIC8vIFRPRE8gSWRlYWxseSwgYHZlcnNpb25gIHNob3VsZCBiZSB0aGUgZmlyc3QgcGFyYW1ldGVyLiBCdXQgZm9yIGJhY2t3YXJkc1xuICAgIC8vIGNvbXBhdGliaWxpdHksIHdlIGtlZXAgYGtleUlkYCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIGZvciBub3cuXG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuYXBpQ2xpZW50LnBvbGljeUludm9rZSh0aGlzLmlkLCB2ZXJzaW9uLCB7XG4gICAgICBrZXlfaWQ6IGtleUlkLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIHJvbGVfaWQ6IHJvbGVJZCxcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFBvbGljeUludm9jYXRpb24ocmVzcCk7XG4gIH1cblxuICAvLyBCYWNrd2FyZHMgY29tcGFiaWxpdHkgd2l0aCBOYW1lZCBXYXNtIFBvbGljeSBuYW1lc1xuICAvKipcbiAgICogVXBkYXRlIHRoZSBwb2xpY3kgd2l0aCB0aGUgbmV3IFdhc20gcG9saWN5LlxuICAgKlxuICAgKiBAcGFyYW0gcG9saWN5IFRoZSBuZXcgV2FzbSBwb2xpY3kgb2JqZWN0LlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiB1cGxvYWRpbmcgdGhlIHBvbGljeSBvYmplY3QgZmFpbHMuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWQuXG4gICAqL1xuICBzZXRXYXNtUG9saWN5ID0gdGhpcy5zZXRXYXNtRnVuY3Rpb247XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0gSU5URVJOQUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgSlNPTiByZXNwb25zZSBmcm9tIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwaUNsaWVudDogQXBpQ2xpZW50LCBkYXRhOiBDMkZJbmZvKSB7XG4gICAgc3VwZXIoYXBpQ2xpZW50LCBkYXRhKTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG59XG5cbi8qKlxuICogQSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgbmFtZWQgcG9saWN5LlxuICovXG5leHBvcnQgY2xhc3MgTmFtZWRQb2xpY3lSdWxlcyB7XG4gIC8qKiBUaGUgQ3ViZVNpZ25lciBpbnN0YW5jZSB0aGF0IHRoaXMgcG9saWN5IGlzIGFzc29jaWF0ZWQgd2l0aCAqL1xuICByZWFkb25seSAjYXBpQ2xpZW50OiBBcGlDbGllbnQ7XG4gICNkYXRhOiBOYW1lZFBvbGljeUluZm87XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSBJRCBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAZXhhbXBsZSBOYW1lZFBvbGljeSNhNGE0NWNjMi0wNjQyLTRjOTgtYjZiZC0wZGEzNDdkNjA4YTRcbiAgICovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNkYXRhLnBvbGljeV9pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgdmVyc2lvbiBvZiB0aGUgcG9saWN5IHRoaXMgb2JqZWN0IGNvbnRhaW5zLlxuICAgKi9cbiAgZ2V0IHZlcnNpb24oKTogVmVyc2lvbiB7XG4gICAgcmV0dXJuIGB2JHt0aGlzLiNkYXRhLnZlcnNpb259YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgcG9saWN5IHJ1bGVzLlxuICAgKlxuICAgKiBAZXhhbXBsZSBbIFwiQXNzZXJ0RXJjMjBUeFwiIF1cbiAgICovXG4gIGdldCBydWxlcygpOiBQb2xpY3lSdWxlW10ge1xuICAgIHJldHVybiB0aGlzLiNkYXRhLnJ1bGVzIGFzIFBvbGljeVJ1bGVbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGtleXMsIHJvbGVzLCBhbmQga2V5LWluLXJvbGVzIHRoaXMgdmVyc2lvbiBvZiB0aGUgcG9saWN5XG4gICAqICAgICAgICAgIGlzIGF0dGFjaGVkIHRvLlxuICAgKi9cbiAgYXN5bmMgYWxsQXR0YWNoZWQoKTogUHJvbWlzZTxQb2xpY3lBdHRhY2hlZFRvSWRbXT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEuYXR0YWNoZWRfdG87XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLSBJTlRFUk5BTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBKU09OIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBzZXJ2ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBpQ2xpZW50OiBBcGlDbGllbnQsIGRhdGE6IE5hbWVkUG9saWN5SW5mbykge1xuICAgIHRoaXMuI2FwaUNsaWVudCA9IGFwaUNsaWVudDtcbiAgICB0aGlzLiNkYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgcG9saWN5IGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcG9saWN5IGluZm9ybWF0aW9uLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2goKTogUHJvbWlzZTxOYW1lZFBvbGljeUluZm8+IHtcbiAgICB0aGlzLiNkYXRhID0gKGF3YWl0IHRoaXMuI2FwaUNsaWVudC5wb2xpY3lHZXQodGhpcy5pZCwgdGhpcy52ZXJzaW9uKSkgYXMgTmFtZWRQb2xpY3lJbmZvO1xuICAgIHJldHVybiB0aGlzLiNkYXRhO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiBpbnZva2luZyBhIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEMyRkludm9jYXRpb24ge1xuICByZWFkb25seSAjZGF0YTogSW52b2tlQzJGUmVzcG9uc2U7XG5cbiAgLyoqIEByZXR1cm5zIFRoZSBwb2xpY3kgcmVzcG9uc2UgaXRzZWxmLiAqL1xuICBnZXQgcmVzcG9uc2UoKTogQzJGUmVzcG9uc2Uge1xuICAgIHJldHVybiB0aGlzLiNkYXRhLnJlc3BvbnNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtIGFzIHJhdyBieXRlcy4gVXN1YWxseSBhIFVURi04IGVuY29kZWQgc3RyaW5nLFxuICAgKiB1c2Uge0BsaW5rIFRleHREZWNvZGVyfSB0byBkZWNvZGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLlxuICAgKi9cbiAgZ2V0IHN0ZG91dEJ5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBkZWNvZGVGcm9tSGV4KHRoaXMuI2RhdGEuc3Rkb3V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtIGFzIHJhdyBieXRlcy4gVXN1YWxseSBhIFVURi04IGVuY29kZWQgc3RyaW5nLCB1c2VcbiAgICoge0BsaW5rIFRleHREZWNvZGVyfSB0byBkZWNvZGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0uXG4gICAqL1xuICBnZXQgc3RkZXJyQnl0ZXMoKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGRlY29kZUZyb21IZXgodGhpcy4jZGF0YS5zdGRlcnIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtIGFzIGEgQnVmZmVyLiBVc3VhbGx5IGEgVVRGLTggZW5jb2RlZCBzdHJpbmcuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLlxuICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIHN0ZG91dEJ5dGVzfSBpbnN0ZWFkIGZvciBicm93c2VyIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICBnZXQgc3Rkb3V0KCk6IEJ1ZmZlciB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBCdWZmZXIgcmV0dXJuIHR5cGUgcHJlc2VydmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLnN0ZG91dEJ5dGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtIGFzIGEgQnVmZmVyLiBVc3VhbGx5IGEgVVRGLTggZW5jb2RlZCBzdHJpbmcuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0uXG4gICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgc3RkZXJyQnl0ZXN9IGluc3RlYWQgZm9yIGJyb3dzZXIgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIGdldCBzdGRlcnIoKTogQnVmZmVyIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIEJ1ZmZlciByZXR1cm4gdHlwZSBwcmVzZXJ2ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuc3RkZXJyQnl0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgSlNPTiByZXNwb25zZSBmcm9tIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKGRhdGE6IEludm9rZUMyRlJlc3BvbnNlKSB7XG4gICAgdGhpcy4jZGF0YSA9IGRhdGE7XG4gIH1cbn1cblxuLy8gQmFja3dhcmRzIGNvbXBhYmlsaXR5IHdpdGggTmFtZWQgV2FzbSBQb2xpY3kgbmFtZXNcblxuLyoqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBXYXNtIHBvbGljeS4gKi9cbmV4cG9ydCB0eXBlIE5hbWVkV2FzbVBvbGljeSA9IEMyRkZ1bmN0aW9uO1xuLyoqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBXYXNtIHBvbGljeS4gKi9cbmV4cG9ydCBjb25zdCBOYW1lZFdhc21Qb2xpY3kgPSBDMkZGdW5jdGlvbjtcblxuLyoqIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBuYW1lZCBXQVNNIHBvbGljeS4gKi9cbmV4cG9ydCB0eXBlIFBvbGljeUludm9jYXRpb24gPSBDMkZJbnZvY2F0aW9uO1xuLyoqIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBuYW1lZCBXQVNNIHBvbGljeS4gKi9cbmV4cG9ydCBjb25zdCBQb2xpY3lJbnZvY2F0aW9uID0gQzJGSW52b2NhdGlvbjtcbiJdfQ==