@bitgo-beta/sdk-coin-sui 3.0.3-beta.20 → 3.0.3-beta.2000

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 (207) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +7 -2
  4. package/dist/src/lib/compareTransactionBlocks.d.ts +8 -0
  5. package/dist/src/lib/compareTransactionBlocks.d.ts.map +1 -0
  6. package/dist/src/lib/compareTransactionBlocks.js +12 -0
  7. package/dist/src/lib/constants.d.ts +10 -2
  8. package/dist/src/lib/constants.d.ts.map +1 -1
  9. package/dist/src/lib/constants.js +19 -2
  10. package/dist/src/lib/customTransaction.d.ts +57 -0
  11. package/dist/src/lib/customTransaction.d.ts.map +1 -0
  12. package/dist/src/lib/customTransaction.js +159 -0
  13. package/dist/src/lib/customTransactionBuilder.d.ts +46 -0
  14. package/dist/src/lib/customTransactionBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/customTransactionBuilder.js +117 -0
  16. package/dist/src/lib/iface.d.ts +96 -10
  17. package/dist/src/lib/iface.d.ts.map +1 -1
  18. package/dist/src/lib/iface.js +47 -5
  19. package/dist/src/lib/index.d.ts +8 -0
  20. package/dist/src/lib/index.d.ts.map +1 -1
  21. package/dist/src/lib/index.js +40 -10
  22. package/dist/src/lib/keyPair.js +24 -10
  23. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +64 -11
  24. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -1
  25. package/dist/src/lib/mystenlab/builder/Inputs.js +63 -19
  26. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +88 -355
  27. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -1
  28. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +65 -48
  29. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +152 -77
  30. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -1
  31. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +54 -44
  32. package/dist/src/lib/mystenlab/builder/Transactions.d.ts +133 -188
  33. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -1
  34. package/dist/src/lib/mystenlab/builder/Transactions.js +52 -53
  35. package/dist/src/lib/mystenlab/builder/bcs.d.ts +1 -1
  36. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -1
  37. package/dist/src/lib/mystenlab/builder/bcs.js +2 -2
  38. package/dist/src/lib/mystenlab/builder/index.js +6 -2
  39. package/dist/src/lib/mystenlab/builder/serializer.js +6 -8
  40. package/dist/src/lib/mystenlab/builder/utils.d.ts +1 -1
  41. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -1
  42. package/dist/src/lib/mystenlab/builder/utils.js +4 -4
  43. package/dist/src/lib/mystenlab/cryptography/hash.js +3 -4
  44. package/dist/src/lib/mystenlab/framework/framework.d.ts +6 -6
  45. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -1
  46. package/dist/src/lib/mystenlab/framework/framework.js +22 -25
  47. package/dist/src/lib/mystenlab/framework/index.js +6 -2
  48. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts +2 -0
  49. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts.map +1 -1
  50. package/dist/src/lib/mystenlab/framework/sui-system-state.js +6 -3
  51. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +2 -2
  52. package/dist/src/lib/mystenlab/types/coin.d.ts +17 -15
  53. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -1
  54. package/dist/src/lib/mystenlab/types/coin.js +20 -19
  55. package/dist/src/lib/mystenlab/types/common.d.ts +8 -8
  56. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -1
  57. package/dist/src/lib/mystenlab/types/common.js +22 -22
  58. package/dist/src/lib/mystenlab/types/events.d.ts +15 -15
  59. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -1
  60. package/dist/src/lib/mystenlab/types/events.js +17 -17
  61. package/dist/src/lib/mystenlab/types/index.js +6 -2
  62. package/dist/src/lib/mystenlab/types/normalized.d.ts +21 -21
  63. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -1
  64. package/dist/src/lib/mystenlab/types/normalized.js +41 -41
  65. package/dist/src/lib/mystenlab/types/objects.d.ts +100 -100
  66. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -1
  67. package/dist/src/lib/mystenlab/types/objects.js +96 -106
  68. package/dist/src/lib/mystenlab/types/option.d.ts +1 -1
  69. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -1
  70. package/dist/src/lib/mystenlab/types/option.js +2 -3
  71. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +55 -29
  72. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -1
  73. package/dist/src/lib/mystenlab/types/sui-bcs.js +30 -6
  74. package/dist/src/lib/mystenlab/types/transactions.d.ts +641 -641
  75. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -1
  76. package/dist/src/lib/mystenlab/types/transactions.js +178 -194
  77. package/dist/src/lib/mystenlab/types/validator.d.ts +17 -17
  78. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -1
  79. package/dist/src/lib/mystenlab/types/validator.js +124 -124
  80. package/dist/src/lib/resources/walrusConfig.d.ts +22 -0
  81. package/dist/src/lib/resources/walrusConfig.d.ts.map +1 -0
  82. package/dist/src/lib/resources/walrusConfig.js +37 -0
  83. package/dist/src/lib/rpcClient.d.ts +5 -0
  84. package/dist/src/lib/rpcClient.d.ts.map +1 -0
  85. package/dist/src/lib/rpcClient.js +74 -0
  86. package/dist/src/lib/stakingBuilder.d.ts +13 -3
  87. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  88. package/dist/src/lib/stakingBuilder.js +83 -28
  89. package/dist/src/lib/stakingTransaction.d.ts +1 -1
  90. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  91. package/dist/src/lib/stakingTransaction.js +44 -29
  92. package/dist/src/lib/tokenTransferBuilder.d.ts +93 -0
  93. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  94. package/dist/src/lib/tokenTransferBuilder.js +266 -0
  95. package/dist/src/lib/tokenTransferTransaction.d.ts +59 -0
  96. package/dist/src/lib/tokenTransferTransaction.d.ts.map +1 -0
  97. package/dist/src/lib/tokenTransferTransaction.js +272 -0
  98. package/dist/src/lib/transaction.d.ts +23 -4
  99. package/dist/src/lib/transaction.d.ts.map +1 -1
  100. package/dist/src/lib/transaction.js +162 -18
  101. package/dist/src/lib/transactionBuilder.d.ts +13 -4
  102. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  103. package/dist/src/lib/transactionBuilder.js +34 -4
  104. package/dist/src/lib/transactionBuilderFactory.d.ts +14 -2
  105. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  106. package/dist/src/lib/transactionBuilderFactory.js +42 -1
  107. package/dist/src/lib/transferBuilder.d.ts +58 -1
  108. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  109. package/dist/src/lib/transferBuilder.js +310 -24
  110. package/dist/src/lib/transferTransaction.d.ts +7 -1
  111. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  112. package/dist/src/lib/transferTransaction.js +129 -12
  113. package/dist/src/lib/unstakingBuilder.d.ts +8 -1
  114. package/dist/src/lib/unstakingBuilder.d.ts.map +1 -1
  115. package/dist/src/lib/unstakingBuilder.js +99 -20
  116. package/dist/src/lib/unstakingTransaction.d.ts +26 -2
  117. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -1
  118. package/dist/src/lib/unstakingTransaction.js +162 -23
  119. package/dist/src/lib/utils.d.ts +36 -5
  120. package/dist/src/lib/utils.d.ts.map +1 -1
  121. package/dist/src/lib/utils.js +369 -26
  122. package/dist/src/lib/walrusStakingBuilder.d.ts +77 -0
  123. package/dist/src/lib/walrusStakingBuilder.d.ts.map +1 -0
  124. package/dist/src/lib/walrusStakingBuilder.js +276 -0
  125. package/dist/src/lib/walrusStakingTransaction.d.ts +52 -0
  126. package/dist/src/lib/walrusStakingTransaction.d.ts.map +1 -0
  127. package/dist/src/lib/walrusStakingTransaction.js +289 -0
  128. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts +36 -0
  129. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts.map +1 -0
  130. package/dist/src/lib/walrusWithdrawStakeBuilder.js +177 -0
  131. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts +21 -0
  132. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts.map +1 -0
  133. package/dist/src/lib/walrusWithdrawStakeTransaction.js +190 -0
  134. package/dist/src/register.d.ts.map +1 -1
  135. package/dist/src/register.js +5 -1
  136. package/dist/src/sui.d.ts +58 -8
  137. package/dist/src/sui.d.ts.map +1 -1
  138. package/dist/src/sui.js +536 -37
  139. package/dist/src/suiToken.d.ts +22 -0
  140. package/dist/src/suiToken.d.ts.map +1 -0
  141. package/dist/src/suiToken.js +61 -0
  142. package/dist/src/tsui.js +1 -1
  143. package/dist/test/integration/index.d.ts +1 -0
  144. package/dist/test/integration/index.d.ts.map +1 -0
  145. package/dist/test/integration/index.js +1 -0
  146. package/dist/test/local_fullnode/RpcClient.d.ts +60 -0
  147. package/dist/test/local_fullnode/RpcClient.d.ts.map +1 -0
  148. package/dist/test/local_fullnode/RpcClient.js +111 -0
  149. package/dist/test/local_fullnode/faucet.d.ts +6 -0
  150. package/dist/test/local_fullnode/faucet.d.ts.map +1 -0
  151. package/dist/test/local_fullnode/faucet.js +17 -0
  152. package/dist/test/local_fullnode/transactions.d.ts +2 -0
  153. package/dist/test/local_fullnode/transactions.d.ts.map +1 -0
  154. package/dist/test/local_fullnode/transactions.js +190 -0
  155. package/dist/test/resources/sui.d.ts +458 -0
  156. package/dist/test/resources/sui.d.ts.map +1 -0
  157. package/dist/test/resources/sui.js +632 -0
  158. package/dist/test/unit/compareTransactionBlocks.d.ts +2 -0
  159. package/dist/test/unit/compareTransactionBlocks.d.ts.map +1 -0
  160. package/dist/test/unit/compareTransactionBlocks.js +64 -0
  161. package/dist/test/unit/getBuilderFactory.d.ts +3 -0
  162. package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
  163. package/dist/test/unit/getBuilderFactory.js +10 -0
  164. package/dist/test/unit/keyPair.d.ts +2 -0
  165. package/dist/test/unit/keyPair.d.ts.map +1 -0
  166. package/dist/test/unit/keyPair.js +72 -0
  167. package/dist/test/unit/sui.d.ts +2 -0
  168. package/dist/test/unit/sui.d.ts.map +1 -0
  169. package/dist/test/unit/sui.js +2747 -0
  170. package/dist/test/unit/suiToken.d.ts +2 -0
  171. package/dist/test/unit/suiToken.d.ts.map +1 -0
  172. package/dist/test/unit/suiToken.js +39 -0
  173. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts +2 -0
  174. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
  175. package/dist/test/unit/transactionBuilder/customTransactionBuilder.js +106 -0
  176. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts +2 -0
  177. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  178. package/dist/test/unit/transactionBuilder/stakingBuilder.js +294 -0
  179. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  180. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  181. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +431 -0
  182. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  183. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  184. package/dist/test/unit/transactionBuilder/transactionBuilder.js +639 -0
  185. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  186. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  187. package/dist/test/unit/transactionBuilder/transferBuilder.js +1181 -0
  188. package/dist/test/unit/transactionBuilder/unstakingBuilder.d.ts +2 -0
  189. package/dist/test/unit/transactionBuilder/unstakingBuilder.d.ts.map +1 -0
  190. package/dist/test/unit/transactionBuilder/unstakingBuilder.js +115 -0
  191. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.d.ts +2 -0
  192. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.d.ts.map +1 -0
  193. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.js +289 -0
  194. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.d.ts +2 -0
  195. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.d.ts.map +1 -0
  196. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.js +250 -0
  197. package/dist/test/unit/transferTransaction.d.ts +2 -0
  198. package/dist/test/unit/transferTransaction.d.ts.map +1 -0
  199. package/dist/test/unit/transferTransaction.js +94 -0
  200. package/dist/test/unit/utils.d.ts +2 -0
  201. package/dist/test/unit/utils.d.ts.map +1 -0
  202. package/dist/test/unit/utils.js +186 -0
  203. package/dist/tsconfig.tsbuildinfo +1 -0
  204. package/package.json +19 -12
  205. package/.eslintignore +0 -6
  206. package/.mocharc.yml +0 -8
  207. package/CHANGELOG.md +0 -171
@@ -1,22 +1,50 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMutableSharedObjectInput = exports.isSharedObjectInput = exports.getSharedObjectInput = exports.getIdFromCallArg = exports.Inputs = exports.BuilderCallArg = exports.ObjectCallArg = exports.PureCallArg = void 0;
3
+ exports.Inputs = exports.BuilderCallArg = exports.BalanceWithdrawalCallArg = exports.ObjectCallArg = exports.PureCallArg = void 0;
4
+ exports.getIdFromCallArg = getIdFromCallArg;
5
+ exports.getSharedObjectInput = getSharedObjectInput;
6
+ exports.isSharedObjectInput = isSharedObjectInput;
7
+ exports.isMutableSharedObjectInput = isMutableSharedObjectInput;
4
8
  const superstruct_1 = require("superstruct");
5
9
  const types_1 = require("../types");
6
10
  const bcs_1 = require("./bcs");
7
- const ObjectArg = superstruct_1.union([
8
- superstruct_1.object({ ImmOrOwned: types_1.SuiObjectRef }),
9
- superstruct_1.object({
10
- Shared: superstruct_1.object({
11
- objectId: superstruct_1.string(),
12
- initialSharedVersion: superstruct_1.union([superstruct_1.integer(), superstruct_1.string()]),
13
- mutable: superstruct_1.boolean(),
11
+ const ObjectArg = (0, superstruct_1.union)([
12
+ (0, superstruct_1.object)({ ImmOrOwned: types_1.SuiObjectRef }),
13
+ (0, superstruct_1.object)({
14
+ Shared: (0, superstruct_1.object)({
15
+ objectId: (0, superstruct_1.string)(),
16
+ initialSharedVersion: (0, superstruct_1.union)([(0, superstruct_1.integer)(), (0, superstruct_1.string)()]),
17
+ mutable: (0, superstruct_1.boolean)(),
14
18
  }),
15
19
  }),
16
20
  ]);
17
- exports.PureCallArg = superstruct_1.object({ Pure: superstruct_1.array(superstruct_1.integer()) });
18
- exports.ObjectCallArg = superstruct_1.object({ Object: ObjectArg });
19
- exports.BuilderCallArg = superstruct_1.union([exports.PureCallArg, exports.ObjectCallArg]);
21
+ // @mysten/bcs v0.7 decodes U64 as string; bigint/number are used at build time.
22
+ const bigintOrInteger = (0, superstruct_1.define)('bigintOrInteger', (value) => {
23
+ if (typeof value === 'bigint')
24
+ return true;
25
+ if (typeof value === 'number')
26
+ return Number.isInteger(value);
27
+ if (typeof value === 'string') {
28
+ try {
29
+ BigInt(value);
30
+ return true;
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
36
+ return false;
37
+ });
38
+ exports.PureCallArg = (0, superstruct_1.object)({ Pure: (0, superstruct_1.array)((0, superstruct_1.integer)()) });
39
+ exports.ObjectCallArg = (0, superstruct_1.object)({ Object: ObjectArg });
40
+ exports.BalanceWithdrawalCallArg = (0, superstruct_1.object)({
41
+ BalanceWithdrawal: (0, superstruct_1.object)({
42
+ reservation: (0, superstruct_1.object)({ MaxAmountU64: bigintOrInteger }),
43
+ typeArg: (0, superstruct_1.object)({ Balance: (0, superstruct_1.object)() }),
44
+ withdrawFrom: (0, superstruct_1.object)(),
45
+ }),
46
+ });
47
+ exports.BuilderCallArg = (0, superstruct_1.union)([exports.PureCallArg, exports.ObjectCallArg, exports.BalanceWithdrawalCallArg]);
20
48
  exports.Inputs = {
21
49
  Pure(data, type) {
22
50
  return {
@@ -29,28 +57,44 @@ exports.Inputs = {
29
57
  SharedObjectRef(ref) {
30
58
  return { Object: { Shared: ref } };
31
59
  },
60
+ /**
61
+ * Create a BalanceWithdrawal CallArg that withdraws `amount` from the sender's
62
+ * address balance at execution time. Use with `0x2::coin::redeem_funds` to
63
+ * convert the withdrawal into a `Coin<T>` object.
64
+ *
65
+ * @param amount - amount in base units (MIST for SUI)
66
+ * @param type_ - the TypeTag of the coin (defaults to SUI)
67
+ */
68
+ BalanceWithdrawal(amount, type_) {
69
+ return {
70
+ BalanceWithdrawal: {
71
+ reservation: { MaxAmountU64: amount.toString() },
72
+ typeArg: { Balance: type_ },
73
+ withdrawFrom: { Sender: null },
74
+ },
75
+ };
76
+ },
32
77
  };
33
78
  function getIdFromCallArg(arg) {
34
79
  if (typeof arg === 'string') {
35
- return types_1.normalizeSuiAddress(arg);
80
+ return (0, types_1.normalizeSuiAddress)(arg);
81
+ }
82
+ if ('BalanceWithdrawal' in arg) {
83
+ // BalanceWithdrawal inputs have no object ID; they cannot be deduplicated by ID
84
+ return '';
36
85
  }
37
86
  if ('ImmOrOwned' in arg.Object) {
38
87
  return arg.Object.ImmOrOwned.objectId;
39
88
  }
40
89
  return arg.Object.Shared.objectId;
41
90
  }
42
- exports.getIdFromCallArg = getIdFromCallArg;
43
91
  function getSharedObjectInput(arg) {
44
92
  return typeof arg === 'object' && 'Object' in arg && 'Shared' in arg.Object ? arg.Object.Shared : undefined;
45
93
  }
46
- exports.getSharedObjectInput = getSharedObjectInput;
47
94
  function isSharedObjectInput(arg) {
48
95
  return !!getSharedObjectInput(arg);
49
96
  }
50
- exports.isSharedObjectInput = isSharedObjectInput;
51
97
  function isMutableSharedObjectInput(arg) {
52
- var _a, _b;
53
- return (_b = (_a = getSharedObjectInput(arg)) === null || _a === void 0 ? void 0 : _a.mutable) !== null && _b !== void 0 ? _b : false;
98
+ return getSharedObjectInput(arg)?.mutable ?? false;
54
99
  }
55
- exports.isMutableSharedObjectInput = isMutableSharedObjectInput;
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9teXN0ZW5sYWIvYnVpbGRlci9JbnB1dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQW9GO0FBQ3BGLG9DQUF3RjtBQUN4RiwrQkFBZ0M7QUFFaEMsTUFBTSxTQUFTLEdBQUcsbUJBQUssQ0FBQztJQUN0QixvQkFBTSxDQUFDLEVBQUUsVUFBVSxFQUFFLG9CQUFZLEVBQUUsQ0FBQztJQUNwQyxvQkFBTSxDQUFDO1FBQ0wsTUFBTSxFQUFFLG9CQUFNLENBQUM7WUFDYixRQUFRLEVBQUUsb0JBQU0sRUFBRTtZQUNsQixvQkFBb0IsRUFBRSxtQkFBSyxDQUFDLENBQUMscUJBQU8sRUFBRSxFQUFFLG9CQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sRUFBRSxxQkFBTyxFQUFFO1NBQ25CLENBQUM7S0FDSCxDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBRVUsUUFBQSxXQUFXLEdBQUcsb0JBQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBSyxDQUFDLHFCQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRCxRQUFBLGFBQWEsR0FBRyxvQkFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFJOUMsUUFBQSxjQUFjLEdBQUcsbUJBQUssQ0FBQyxDQUFDLG1CQUFXLEVBQUUscUJBQWEsQ0FBQyxDQUFDLENBQUM7QUFHckQsUUFBQSxNQUFNLEdBQUc7SUFDcEIsSUFBSSxDQUFDLElBQWEsRUFBRSxJQUFhO1FBQy9CLE9BQU87WUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQU8sQ0FBQyxHQUFHLENBQUMsSUFBSyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3pGLENBQUM7SUFDSixDQUFDO0lBQ0QsU0FBUyxDQUFDLEdBQWlCO1FBQ3pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsZUFBZSxDQUFDLEdBQW9CO1FBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0YsQ0FBQztBQUVGLFNBQWdCLGdCQUFnQixDQUFDLEdBQTZCO0lBQzVELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1FBQzNCLE9BQU8sMkJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDakM7SUFDRCxJQUFJLFlBQVksSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO1FBQzlCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO0tBQ3ZDO0lBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDcEMsQ0FBQztBQVJELDRDQVFDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsR0FBbUI7SUFDdEQsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLEdBQUcsSUFBSSxRQUFRLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM5RyxDQUFDO0FBRkQsb0RBRUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxHQUFtQjtJQUNyRCxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRkQsa0RBRUM7QUFFRCxTQUFnQiwwQkFBMEIsQ0FBQyxHQUFtQjs7SUFDNUQsT0FBTyxNQUFBLE1BQUEsb0JBQW9CLENBQUMsR0FBRyxDQUFDLDBDQUFFLE9BQU8sbUNBQUksS0FBSyxDQUFDO0FBQ3JELENBQUM7QUFGRCxnRUFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFycmF5LCBib29sZWFuLCBJbmZlciwgaW50ZWdlciwgb2JqZWN0LCBzdHJpbmcsIHVuaW9uIH0gZnJvbSAnc3VwZXJzdHJ1Y3QnO1xuaW1wb3J0IHsgbm9ybWFsaXplU3VpQWRkcmVzcywgT2JqZWN0SWQsIFNoYXJlZE9iamVjdFJlZiwgU3VpT2JqZWN0UmVmIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRlciB9IGZyb20gJy4vYmNzJztcblxuY29uc3QgT2JqZWN0QXJnID0gdW5pb24oW1xuICBvYmplY3QoeyBJbW1Pck93bmVkOiBTdWlPYmplY3RSZWYgfSksXG4gIG9iamVjdCh7XG4gICAgU2hhcmVkOiBvYmplY3Qoe1xuICAgICAgb2JqZWN0SWQ6IHN0cmluZygpLFxuICAgICAgaW5pdGlhbFNoYXJlZFZlcnNpb246IHVuaW9uKFtpbnRlZ2VyKCksIHN0cmluZygpXSksXG4gICAgICBtdXRhYmxlOiBib29sZWFuKCksXG4gICAgfSksXG4gIH0pLFxuXSk7XG5cbmV4cG9ydCBjb25zdCBQdXJlQ2FsbEFyZyA9IG9iamVjdCh7IFB1cmU6IGFycmF5KGludGVnZXIoKSkgfSk7XG5leHBvcnQgY29uc3QgT2JqZWN0Q2FsbEFyZyA9IG9iamVjdCh7IE9iamVjdDogT2JqZWN0QXJnIH0pO1xuZXhwb3J0IHR5cGUgUHVyZUNhbGxBcmcgPSBJbmZlcjx0eXBlb2YgUHVyZUNhbGxBcmc+O1xuZXhwb3J0IHR5cGUgT2JqZWN0Q2FsbEFyZyA9IEluZmVyPHR5cGVvZiBPYmplY3RDYWxsQXJnPjtcblxuZXhwb3J0IGNvbnN0IEJ1aWxkZXJDYWxsQXJnID0gdW5pb24oW1B1cmVDYWxsQXJnLCBPYmplY3RDYWxsQXJnXSk7XG5leHBvcnQgdHlwZSBCdWlsZGVyQ2FsbEFyZyA9IEluZmVyPHR5cGVvZiBCdWlsZGVyQ2FsbEFyZz47XG5cbmV4cG9ydCBjb25zdCBJbnB1dHMgPSB7XG4gIFB1cmUoZGF0YTogdW5rbm93biwgdHlwZT86IHN0cmluZyk6IFB1cmVDYWxsQXJnIHtcbiAgICByZXR1cm4ge1xuICAgICAgUHVyZTogQXJyYXkuZnJvbShkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSA/IGRhdGEgOiBidWlsZGVyLnNlcih0eXBlISwgZGF0YSkudG9CeXRlcygpKSxcbiAgICB9O1xuICB9LFxuICBPYmplY3RSZWYocmVmOiBTdWlPYmplY3RSZWYpOiBPYmplY3RDYWxsQXJnIHtcbiAgICByZXR1cm4geyBPYmplY3Q6IHsgSW1tT3JPd25lZDogcmVmIH0gfTtcbiAgfSxcbiAgU2hhcmVkT2JqZWN0UmVmKHJlZjogU2hhcmVkT2JqZWN0UmVmKTogT2JqZWN0Q2FsbEFyZyB7XG4gICAgcmV0dXJuIHsgT2JqZWN0OiB7IFNoYXJlZDogcmVmIH0gfTtcbiAgfSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJZEZyb21DYWxsQXJnKGFyZzogT2JqZWN0SWQgfCBPYmplY3RDYWxsQXJnKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBub3JtYWxpemVTdWlBZGRyZXNzKGFyZyk7XG4gIH1cbiAgaWYgKCdJbW1Pck93bmVkJyBpbiBhcmcuT2JqZWN0KSB7XG4gICAgcmV0dXJuIGFyZy5PYmplY3QuSW1tT3JPd25lZC5vYmplY3RJZDtcbiAgfVxuICByZXR1cm4gYXJnLk9iamVjdC5TaGFyZWQub2JqZWN0SWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFyZWRPYmplY3RJbnB1dChhcmc6IEJ1aWxkZXJDYWxsQXJnKTogU2hhcmVkT2JqZWN0UmVmIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmICdPYmplY3QnIGluIGFyZyAmJiAnU2hhcmVkJyBpbiBhcmcuT2JqZWN0ID8gYXJnLk9iamVjdC5TaGFyZWQgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlZE9iamVjdElucHV0KGFyZzogQnVpbGRlckNhbGxBcmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhZ2V0U2hhcmVkT2JqZWN0SW5wdXQoYXJnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTXV0YWJsZVNoYXJlZE9iamVjdElucHV0KGFyZzogQnVpbGRlckNhbGxBcmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldFNoYXJlZE9iamVjdElucHV0KGFyZyk/Lm11dGFibGUgPz8gZmFsc2U7XG59XG4iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9teXN0ZW5sYWIvYnVpbGRlci9JbnB1dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNkVBLDRDQVlDO0FBRUQsb0RBRUM7QUFFRCxrREFFQztBQUVELGdFQUVDO0FBckdELDZDQUE0RjtBQUM1RixvQ0FBaUc7QUFDakcsK0JBQWdDO0FBRWhDLE1BQU0sU0FBUyxHQUFHLElBQUEsbUJBQUssRUFBQztJQUN0QixJQUFBLG9CQUFNLEVBQUMsRUFBRSxVQUFVLEVBQUUsb0JBQVksRUFBRSxDQUFDO0lBQ3BDLElBQUEsb0JBQU0sRUFBQztRQUNMLE1BQU0sRUFBRSxJQUFBLG9CQUFNLEVBQUM7WUFDYixRQUFRLEVBQUUsSUFBQSxvQkFBTSxHQUFFO1lBQ2xCLG9CQUFvQixFQUFFLElBQUEsbUJBQUssRUFBQyxDQUFDLElBQUEscUJBQU8sR0FBRSxFQUFFLElBQUEsb0JBQU0sR0FBRSxDQUFDLENBQUM7WUFDbEQsT0FBTyxFQUFFLElBQUEscUJBQU8sR0FBRTtTQUNuQixDQUFDO0tBQ0gsQ0FBQztDQUNILENBQUMsQ0FBQztBQUVILGdGQUFnRjtBQUNoRixNQUFNLGVBQWUsR0FBRyxJQUFBLG9CQUFNLEVBQTJCLGlCQUFpQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDcEYsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FB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Q0FBQyxTQUFTLENBQUM7QUFDOUcsQ0FBQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLEdBQW1CO0lBQ3JELE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxTQUFnQiwwQkFBMEIsQ0FBQyxHQUFtQjtJQUM1RCxPQUFPLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFycmF5LCBib29sZWFuLCBkZWZpbmUsIEluZmVyLCBpbnRlZ2VyLCBvYmplY3QsIHN0cmluZywgdW5pb24gfSBmcm9tICdzdXBlcnN0cnVjdCc7XG5pbXBvcnQgeyBub3JtYWxpemVTdWlBZGRyZXNzLCBPYmplY3RJZCwgU2hhcmVkT2JqZWN0UmVmLCBTdWlPYmplY3RSZWYsIFR5cGVUYWcgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBidWlsZGVyIH0gZnJvbSAnLi9iY3MnO1xuXG5jb25zdCBPYmplY3RBcmcgPSB1bmlvbihbXG4gIG9iamVjdCh7IEltbU9yT3duZWQ6IFN1aU9iamVjdFJlZiB9KSxcbiAgb2JqZWN0KHtcbiAgICBTaGFyZWQ6IG9iamVjdCh7XG4gICAgICBvYmplY3RJZDogc3RyaW5nKCksXG4gICAgICBpbml0aWFsU2hhcmVkVmVyc2lvbjogdW5pb24oW2ludGVnZXIoKSwgc3RyaW5nKCldKSxcbiAgICAgIG11dGFibGU6IGJvb2xlYW4oKSxcbiAgICB9KSxcbiAgfSksXG5dKTtcblxuLy8gQG15c3Rlbi9iY3MgdjAuNyBkZWNvZGVzIFU2NCBhcyBzdHJpbmc7IGJpZ2ludC9udW1iZXIgYXJlIHVzZWQgYXQgYnVpbGQgdGltZS5cbmNvbnN0IGJpZ2ludE9ySW50ZWdlciA9IGRlZmluZTxiaWdpbnQgfCBudW1iZXIgfCBzdHJpbmc+KCdiaWdpbnRPckludGVnZXInLCAodmFsdWUpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcpIHJldHVybiB0cnVlO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIE51bWJlci5pc0ludGVnZXIodmFsdWUpO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHRyeSB7XG4gICAgICBCaWdJbnQodmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn0pO1xuXG5leHBvcnQgY29uc3QgUHVyZUNhbGxBcmcgPSBvYmplY3QoeyBQdXJlOiBhcnJheShpbnRlZ2VyKCkpIH0pO1xuZXhwb3J0IGNvbnN0IE9iamVjdENhbGxBcmcgPSBvYmplY3QoeyBPYmplY3Q6IE9iamVjdEFyZyB9KTtcbmV4cG9ydCBjb25zdCBCYWxhbmNlV2l0aGRyYXdhbENhbGxBcmcgPSBvYmplY3Qoe1xuICBCYWxhbmNlV2l0aGRyYXdhbDogb2JqZWN0KHtcbiAgICByZXNlcnZhdGlvbjogb2JqZWN0KHsgTWF4QW1vdW50VTY0OiBiaWdpbnRPckludGVnZXIgfSksXG4gICAgdHlwZUFyZzogb2JqZWN0KHsgQmFsYW5jZTogb2JqZWN0KCkgfSksXG4gICAgd2l0aGRyYXdGcm9tOiBvYmplY3QoKSxcbiAgfSksXG59KTtcbmV4cG9ydCB0eXBlIFB1cmVDYWxsQXJnID0gSW5mZXI8dHlwZW9mIFB1cmVDYWxsQXJnPjtcbmV4cG9ydCB0eXBlIE9iamVjdENhbGxBcmcgPSBJbmZlcjx0eXBlb2YgT2JqZWN0Q2FsbEFyZz47XG5leHBvcnQgdHlwZSBCYWxhbmNlV2l0aGRyYXdhbENhbGxBcmcgPSBJbmZlcjx0eXBlb2YgQmFsYW5jZVdpdGhkcmF3YWxDYWxsQXJnPjtcblxuZXhwb3J0IGNvbnN0IEJ1aWxkZXJDYWxsQXJnID0gdW5pb24oW1B1cmVDYWxsQXJnLCBPYmplY3RDYWxsQXJnLCBCYWxhbmNlV2l0aGRyYXdhbENhbGxBcmddKTtcbmV4cG9ydCB0eXBlIEJ1aWxkZXJDYWxsQXJnID0gSW5mZXI8dHlwZW9mIEJ1aWxkZXJDYWxsQXJnPjtcblxuZXhwb3J0IGNvbnN0IElucHV0cyA9IHtcbiAgUHVyZShkYXRhOiB1bmtub3duLCB0eXBlPzogc3RyaW5nKTogUHVyZUNhbGxBcmcge1xuICAgIHJldHVybiB7XG4gICAgICBQdXJlOiBBcnJheS5mcm9tKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5ID8gZGF0YSA6IGJ1aWxkZXIuc2VyKHR5cGUhLCBkYXRhKS50b0J5dGVzKCkpLFxuICAgIH07XG4gIH0sXG4gIE9iamVjdFJlZihyZWY6IFN1aU9iamVjdFJlZik6IE9iamVjdENhbGxBcmcge1xuICAgIHJldHVybiB7IE9iamVjdDogeyBJbW1Pck93bmVkOiByZWYgfSB9O1xuICB9LFxuICBTaGFyZWRPYmplY3RSZWYocmVmOiBTaGFyZWRPYmplY3RSZWYpOiBPYmplY3RDYWxsQXJnIHtcbiAgICByZXR1cm4geyBPYmplY3Q6IHsgU2hhcmVkOiByZWYgfSB9O1xuICB9LFxuICAvKipcbiAgICogQ3JlYXRlIGEgQmFsYW5jZVdpdGhkcmF3YWwgQ2FsbEFyZyB0aGF0IHdpdGhkcmF3cyBgYW1vdW50YCBmcm9tIHRoZSBzZW5kZXInc1xuICAgKiBhZGRyZXNzIGJhbGFuY2UgYXQgZXhlY3V0aW9uIHRpbWUuIFVzZSB3aXRoIGAweDI6OmNvaW46OnJlZGVlbV9mdW5kc2AgdG9cbiAgICogY29udmVydCB0aGUgd2l0aGRyYXdhbCBpbnRvIGEgYENvaW48VD5gIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGFtb3VudCAtIGFtb3VudCBpbiBiYXNlIHVuaXRzIChNSVNUIGZvciBTVUkpXG4gICAqIEBwYXJhbSB0eXBlXyAtIHRoZSBUeXBlVGFnIG9mIHRoZSBjb2luIChkZWZhdWx0cyB0byBTVUkpXG4gICAqL1xuICBCYWxhbmNlV2l0aGRyYXdhbChhbW91bnQ6IGJpZ2ludCB8IG51bWJlciwgdHlwZV86IFR5cGVUYWcpOiBCYWxhbmNlV2l0aGRyYXdhbENhbGxBcmcge1xuICAgIHJldHVybiB7XG4gICAgICBCYWxhbmNlV2l0aGRyYXdhbDoge1xuICAgICAgICByZXNlcnZhdGlvbjogeyBNYXhBbW91bnRVNjQ6IGFtb3VudC50b1N0cmluZygpIH0sXG4gICAgICAgIHR5cGVBcmc6IHsgQmFsYW5jZTogdHlwZV8gfSxcbiAgICAgICAgd2l0aGRyYXdGcm9tOiB7IFNlbmRlcjogbnVsbCB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldElkRnJvbUNhbGxBcmcoYXJnOiBPYmplY3RJZCB8IE9iamVjdENhbGxBcmcgfCBCYWxhbmNlV2l0aGRyYXdhbENhbGxBcmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplU3VpQWRkcmVzcyhhcmcpO1xuICB9XG4gIGlmICgnQmFsYW5jZVdpdGhkcmF3YWwnIGluIGFyZykge1xuICAgIC8vIEJhbGFuY2VXaXRoZHJhd2FsIGlucHV0cyBoYXZlIG5vIG9iamVjdCBJRDsgdGhleSBjYW5ub3QgYmUgZGVkdXBsaWNhdGVkIGJ5IElEXG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmICgnSW1tT3JPd25lZCcgaW4gYXJnLk9iamVjdCkge1xuICAgIHJldHVybiBhcmcuT2JqZWN0LkltbU9yT3duZWQub2JqZWN0SWQ7XG4gIH1cbiAgcmV0dXJuIGFyZy5PYmplY3QuU2hhcmVkLm9iamVjdElkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hhcmVkT2JqZWN0SW5wdXQoYXJnOiBCdWlsZGVyQ2FsbEFyZyk6IFNoYXJlZE9iamVjdFJlZiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiAnT2JqZWN0JyBpbiBhcmcgJiYgJ1NoYXJlZCcgaW4gYXJnLk9iamVjdCA/IGFyZy5PYmplY3QuU2hhcmVkIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTaGFyZWRPYmplY3RJbnB1dChhcmc6IEJ1aWxkZXJDYWxsQXJnKTogYm9vbGVhbiB7XG4gIHJldHVybiAhIWdldFNoYXJlZE9iamVjdElucHV0KGFyZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc011dGFibGVTaGFyZWRPYmplY3RJbnB1dChhcmc6IEJ1aWxkZXJDYWxsQXJnKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRTaGFyZWRPYmplY3RJbnB1dChhcmcpPy5tdXRhYmxlID8/IGZhbHNlO1xufVxuIl19