@bitgo-beta/sdk-coin-sui 3.0.3-beta.9 → 3.0.3-beta.900

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 (144) hide show
  1. package/.mocharc.yml +1 -2
  2. package/CHANGELOG.md +874 -0
  3. package/dist/src/index.d.ts +1 -0
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +7 -2
  6. package/dist/src/lib/compareTransactionBlocks.d.ts +8 -0
  7. package/dist/src/lib/compareTransactionBlocks.d.ts.map +1 -0
  8. package/dist/src/lib/compareTransactionBlocks.js +12 -0
  9. package/dist/src/lib/constants.d.ts +10 -2
  10. package/dist/src/lib/constants.d.ts.map +1 -1
  11. package/dist/src/lib/constants.js +19 -2
  12. package/dist/src/lib/customTransaction.d.ts +57 -0
  13. package/dist/src/lib/customTransaction.d.ts.map +1 -0
  14. package/dist/src/lib/customTransaction.js +159 -0
  15. package/dist/src/lib/customTransactionBuilder.d.ts +46 -0
  16. package/dist/src/lib/customTransactionBuilder.d.ts.map +1 -0
  17. package/dist/src/lib/customTransactionBuilder.js +117 -0
  18. package/dist/src/lib/iface.d.ts +77 -10
  19. package/dist/src/lib/iface.d.ts.map +1 -1
  20. package/dist/src/lib/iface.js +40 -5
  21. package/dist/src/lib/index.d.ts +8 -0
  22. package/dist/src/lib/index.d.ts.map +1 -1
  23. package/dist/src/lib/index.js +40 -10
  24. package/dist/src/lib/keyPair.js +24 -10
  25. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +9 -9
  26. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -1
  27. package/dist/src/lib/mystenlab/builder/Inputs.js +18 -19
  28. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +40 -354
  29. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -1
  30. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +43 -48
  31. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +74 -74
  32. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -1
  33. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +41 -44
  34. package/dist/src/lib/mystenlab/builder/Transactions.d.ts +133 -188
  35. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -1
  36. package/dist/src/lib/mystenlab/builder/Transactions.js +52 -53
  37. package/dist/src/lib/mystenlab/builder/bcs.d.ts +1 -1
  38. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -1
  39. package/dist/src/lib/mystenlab/builder/bcs.js +2 -2
  40. package/dist/src/lib/mystenlab/builder/index.js +6 -2
  41. package/dist/src/lib/mystenlab/builder/serializer.js +6 -8
  42. package/dist/src/lib/mystenlab/builder/utils.d.ts +1 -1
  43. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -1
  44. package/dist/src/lib/mystenlab/builder/utils.js +4 -4
  45. package/dist/src/lib/mystenlab/cryptography/hash.js +3 -4
  46. package/dist/src/lib/mystenlab/framework/framework.d.ts +6 -6
  47. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -1
  48. package/dist/src/lib/mystenlab/framework/framework.js +22 -25
  49. package/dist/src/lib/mystenlab/framework/index.js +6 -2
  50. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts +2 -0
  51. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts.map +1 -1
  52. package/dist/src/lib/mystenlab/framework/sui-system-state.js +6 -3
  53. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +2 -2
  54. package/dist/src/lib/mystenlab/types/coin.d.ts +14 -14
  55. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -1
  56. package/dist/src/lib/mystenlab/types/coin.js +19 -19
  57. package/dist/src/lib/mystenlab/types/common.d.ts +8 -8
  58. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -1
  59. package/dist/src/lib/mystenlab/types/common.js +22 -22
  60. package/dist/src/lib/mystenlab/types/events.d.ts +14 -14
  61. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -1
  62. package/dist/src/lib/mystenlab/types/events.js +17 -17
  63. package/dist/src/lib/mystenlab/types/index.js +6 -2
  64. package/dist/src/lib/mystenlab/types/normalized.d.ts +21 -21
  65. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -1
  66. package/dist/src/lib/mystenlab/types/normalized.js +41 -41
  67. package/dist/src/lib/mystenlab/types/objects.d.ts +100 -100
  68. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -1
  69. package/dist/src/lib/mystenlab/types/objects.js +96 -106
  70. package/dist/src/lib/mystenlab/types/option.d.ts +1 -1
  71. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -1
  72. package/dist/src/lib/mystenlab/types/option.js +2 -3
  73. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +8 -8
  74. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -1
  75. package/dist/src/lib/mystenlab/types/sui-bcs.js +5 -5
  76. package/dist/src/lib/mystenlab/types/transactions.d.ts +641 -641
  77. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -1
  78. package/dist/src/lib/mystenlab/types/transactions.js +178 -194
  79. package/dist/src/lib/mystenlab/types/validator.d.ts +13 -13
  80. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -1
  81. package/dist/src/lib/mystenlab/types/validator.js +124 -124
  82. package/dist/src/lib/resources/walrusConfig.d.ts +22 -0
  83. package/dist/src/lib/resources/walrusConfig.d.ts.map +1 -0
  84. package/dist/src/lib/resources/walrusConfig.js +37 -0
  85. package/dist/src/lib/rpcClient.d.ts +5 -0
  86. package/dist/src/lib/rpcClient.d.ts.map +1 -0
  87. package/dist/src/lib/rpcClient.js +74 -0
  88. package/dist/src/lib/stakingBuilder.d.ts +3 -3
  89. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  90. package/dist/src/lib/stakingBuilder.js +47 -28
  91. package/dist/src/lib/stakingTransaction.d.ts +1 -1
  92. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  93. package/dist/src/lib/stakingTransaction.js +34 -26
  94. package/dist/src/lib/tokenTransferBuilder.d.ts +38 -0
  95. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  96. package/dist/src/lib/tokenTransferBuilder.js +132 -0
  97. package/dist/src/lib/tokenTransferTransaction.d.ts +57 -0
  98. package/dist/src/lib/tokenTransferTransaction.d.ts.map +1 -0
  99. package/dist/src/lib/tokenTransferTransaction.js +250 -0
  100. package/dist/src/lib/transaction.d.ts +12 -4
  101. package/dist/src/lib/transaction.d.ts.map +1 -1
  102. package/dist/src/lib/transaction.js +91 -18
  103. package/dist/src/lib/transactionBuilder.d.ts +2 -3
  104. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  105. package/dist/src/lib/transactionBuilder.js +4 -4
  106. package/dist/src/lib/transactionBuilderFactory.d.ts +14 -2
  107. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  108. package/dist/src/lib/transactionBuilderFactory.js +42 -1
  109. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  110. package/dist/src/lib/transferBuilder.js +21 -5
  111. package/dist/src/lib/transferTransaction.d.ts +1 -1
  112. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  113. package/dist/src/lib/transferTransaction.js +31 -8
  114. package/dist/src/lib/unstakingBuilder.d.ts +8 -1
  115. package/dist/src/lib/unstakingBuilder.d.ts.map +1 -1
  116. package/dist/src/lib/unstakingBuilder.js +99 -20
  117. package/dist/src/lib/unstakingTransaction.d.ts +26 -2
  118. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -1
  119. package/dist/src/lib/unstakingTransaction.js +162 -23
  120. package/dist/src/lib/utils.d.ts +27 -5
  121. package/dist/src/lib/utils.d.ts.map +1 -1
  122. package/dist/src/lib/utils.js +297 -25
  123. package/dist/src/lib/walrusStakingBuilder.d.ts +66 -0
  124. package/dist/src/lib/walrusStakingBuilder.d.ts.map +1 -0
  125. package/dist/src/lib/walrusStakingBuilder.js +200 -0
  126. package/dist/src/lib/walrusStakingTransaction.d.ts +52 -0
  127. package/dist/src/lib/walrusStakingTransaction.d.ts.map +1 -0
  128. package/dist/src/lib/walrusStakingTransaction.js +269 -0
  129. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts +36 -0
  130. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts.map +1 -0
  131. package/dist/src/lib/walrusWithdrawStakeBuilder.js +173 -0
  132. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts +21 -0
  133. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts.map +1 -0
  134. package/dist/src/lib/walrusWithdrawStakeTransaction.js +190 -0
  135. package/dist/src/register.d.ts.map +1 -1
  136. package/dist/src/register.js +5 -1
  137. package/dist/src/sui.d.ts +46 -8
  138. package/dist/src/sui.d.ts.map +1 -1
  139. package/dist/src/sui.js +479 -32
  140. package/dist/src/suiToken.d.ts +22 -0
  141. package/dist/src/suiToken.d.ts.map +1 -0
  142. package/dist/src/suiToken.js +61 -0
  143. package/dist/src/tsui.js +1 -1
  144. package/package.json +14 -10
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,19 +15,30 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
11
15
  }) : function(o, v) {
12
16
  o["default"] = v;
13
17
  });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
21
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
22
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
37
  };
24
38
  Object.defineProperty(exports, "__esModule", { value: true });
25
39
  exports.Transaction = void 0;
26
40
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
41
+ const iface_1 = require("./iface");
27
42
  const utils_1 = __importStar(require("./utils"));
28
43
  const types_1 = require("./mystenlab/types");
29
44
  const constants_1 = require("./constants");
@@ -47,7 +62,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
47
62
  /** @inheritDoc **/
48
63
  get id() {
49
64
  const dataBytes = this.getDataBytes();
50
- const hash = hash_1.hashTypedData('TransactionData', dataBytes);
65
+ const hash = (0, hash_1.hashTypedData)('TransactionData', dataBytes);
51
66
  this._id = bs58_1.default.encode(hash);
52
67
  return this._id;
53
68
  }
@@ -112,7 +127,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
112
127
  get signablePayload() {
113
128
  const dataBytes = this.getDataBytes();
114
129
  const intentMessage = this.messageWithIntent(utils_1.IntentScope.TransactionData, dataBytes);
115
- return buffer_1.Buffer.from(blake2b_1.default(32).update(intentMessage).digest('binary'));
130
+ return buffer_1.Buffer.from((0, blake2b_1.default)(32).update(intentMessage).digest('binary'));
116
131
  }
117
132
  messageWithIntent(scope, message) {
118
133
  const intent = this.intentWithScope(scope);
@@ -126,31 +141,59 @@ class Transaction extends sdk_core_1.BaseTransaction {
126
141
  }
127
142
  serialize() {
128
143
  const dataBytes = this.getDataBytes();
129
- this._id = bs58_1.default.encode(hash_1.hashTypedData('TransactionData', dataBytes));
130
- return bcs_1.toB64(dataBytes);
144
+ this._id = bs58_1.default.encode((0, hash_1.hashTypedData)('TransactionData', dataBytes));
145
+ return (0, bcs_1.toB64)(dataBytes);
131
146
  }
132
147
  static deserializeSuiTransaction(serializedTx) {
133
- const data = bcs_1.fromB64(serializedTx);
148
+ const data = (0, bcs_1.fromB64)(serializedTx);
134
149
  const transactionBlock = TransactionDataBlock_1.TransactionBlockDataBuilder.fromBytes(data);
135
150
  const inputs = transactionBlock.inputs.map((txInput) => txInput.value);
136
151
  const transactions = transactionBlock.transactions;
137
- const txType = utils_1.default.getSuiTransactionType(transactions.length == 1 ? transactions[0] : transactions[1]);
152
+ const txType = this.getSuiTransactionType(transactions);
138
153
  return {
139
154
  id: transactionBlock.getDigest(),
140
155
  type: txType,
141
- sender: types_1.normalizeSuiAddress(transactionBlock.sender),
156
+ sender: (0, types_1.normalizeSuiAddress)(transactionBlock.sender),
142
157
  tx: {
143
158
  inputs: inputs,
144
159
  transactions: transactions,
145
160
  },
146
161
  gasData: {
147
162
  payment: this.normalizeCoins(transactionBlock.gasConfig.payment),
148
- owner: types_1.normalizeSuiAddress(transactionBlock.gasConfig.owner),
163
+ owner: (0, types_1.normalizeSuiAddress)(transactionBlock.gasConfig.owner),
149
164
  price: Number(transactionBlock.gasConfig.price),
150
165
  budget: Number(transactionBlock.gasConfig.budget),
151
166
  },
152
167
  };
153
168
  }
169
+ static getSuiTransactionType(transactions) {
170
+ // tricky to determine custom tx purely from a serialized tx, we can rely on following logic
171
+ if (transactions.length == 1) {
172
+ return utils_1.default.getSuiTransactionType(transactions[0]);
173
+ }
174
+ if (transactions.some((tx) => utils_1.default.getSuiTransactionType(tx) === iface_1.SuiTransactionType.WalrusStakeWithPool)) {
175
+ return iface_1.SuiTransactionType.WalrusStakeWithPool;
176
+ }
177
+ if (transactions.some((tx) => utils_1.default.getSuiTransactionType(tx) === iface_1.SuiTransactionType.WalrusRequestWithdrawStake)) {
178
+ return iface_1.SuiTransactionType.WalrusRequestWithdrawStake;
179
+ }
180
+ if (transactions.some((tx) => utils_1.default.getSuiTransactionType(tx) === iface_1.SuiTransactionType.WalrusWithdrawStake)) {
181
+ return iface_1.SuiTransactionType.WalrusWithdrawStake;
182
+ }
183
+ if (transactions.some((tx) => utils_1.default.getSuiTransactionType(tx) === iface_1.SuiTransactionType.AddStake)) {
184
+ return iface_1.SuiTransactionType.AddStake;
185
+ }
186
+ if (transactions.some((tx) => utils_1.default.getSuiTransactionType(tx) === iface_1.SuiTransactionType.WithdrawStake)) {
187
+ return iface_1.SuiTransactionType.WithdrawStake;
188
+ }
189
+ if (transactions.some((tx) => utils_1.default.getSuiTransactionType(tx) === iface_1.SuiTransactionType.TokenTransfer)) {
190
+ return iface_1.SuiTransactionType.TokenTransfer;
191
+ }
192
+ if (transactions.every((tx) => utils_1.default.getSuiTransactionType(tx) === iface_1.SuiTransactionType.Transfer)) {
193
+ return iface_1.SuiTransactionType.Transfer;
194
+ }
195
+ return iface_1.SuiTransactionType.CustomTx;
196
+ }
154
197
  static getProperGasData(k) {
155
198
  return {
156
199
  payment: [this.normalizeSuiObjectRef(k.gasData.payment)],
@@ -166,11 +209,41 @@ class Transaction extends sdk_core_1.BaseTransaction {
166
209
  }
167
210
  static normalizeSuiObjectRef(obj) {
168
211
  return {
169
- objectId: types_1.normalizeSuiObjectId(obj.objectId),
212
+ objectId: (0, types_1.normalizeSuiObjectId)(obj.objectId),
170
213
  version: Number(obj.version),
171
214
  digest: obj.digest,
172
215
  };
173
216
  }
217
+ /**
218
+ * When building transactions with > 255 input gas payment objects, we first use MergeCoins Tranasactions to merge the
219
+ * additional inputs into the gas coin & slice them from the payment in gasData. When initializing the builder using
220
+ * decoded tx data, we need to get these inputs from MergeCoins & add them back to the gas payment to be able to
221
+ * rebuild from a raw transaction.
222
+ */
223
+ getInputGasPaymentObjectsFromTx(tx) {
224
+ const txInputs = tx.inputs;
225
+ const transactions = tx.transactions;
226
+ const inputGasPaymentObjects = [];
227
+ transactions.forEach((transaction) => {
228
+ if (transaction.kind === 'MergeCoins') {
229
+ const { destination, sources } = transaction;
230
+ if (destination.kind === 'GasCoin') {
231
+ sources.forEach((source) => {
232
+ if (source.kind === 'Input') {
233
+ let input = txInputs[source.index];
234
+ if ('value' in input) {
235
+ input = input.value;
236
+ }
237
+ if ('Object' in input && (0, utils_1.isImmOrOwnedObj)(input.Object)) {
238
+ inputGasPaymentObjects.push(input.Object.ImmOrOwned);
239
+ }
240
+ }
241
+ });
242
+ }
243
+ }
244
+ });
245
+ return inputGasPaymentObjects;
246
+ }
174
247
  }
175
248
  exports.Transaction = Transaction;
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFPOEI7QUFHOUIsaURBQTJFO0FBQzNFLDZDQUFxRztBQUNyRywyQ0FBcUQ7QUFDckQsbUNBQWdDO0FBQ2hDLHFDQUE2QztBQUM3QyxnREFBd0I7QUFFeEIsbUZBQWtIO0FBQ2xILGlEQUE4QztBQUM5QyxrRUFBMEM7QUFDMUMsd0RBQThEO0FBRTlELE1BQXNCLFdBQWUsU0FBUSwwQkFBZTtJQUsxRCxZQUFzQixXQUFpQztRQUNyRCxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQXFCO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxFQUFFO1FBQ0osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLG9CQUFhLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQXdCLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENB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QU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDakMsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQVk7UUFDeEMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQWlCO1FBQ3BELE9BQU87WUFDTCxRQUFRLEVBQUUsNEJBQW9CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUM1QyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1NBQ25CLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUExTEQsa0NBMExDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25UeXBlIGFzIEJpdEdvVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sIFN1aVRyYW5zYWN0aW9uLCBUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB1dGlscywgeyBBcHBJZCwgSW50ZW50LCBJbnRlbnRTY29wZSwgSW50ZW50VmVyc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgR2FzRGF0YSwgbm9ybWFsaXplU3VpQWRkcmVzcywgbm9ybWFsaXplU3VpT2JqZWN0SWQsIFN1aU9iamVjdFJlZiB9IGZyb20gJy4vbXlzdGVubGFiL3R5cGVzJztcbmltcG9ydCB7IFNJR05BVFVSRV9TQ0hFTUVfQllURVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgZnJvbUI2NCwgdG9CNjQgfSBmcm9tICdAbXlzdGVuL2Jjcyc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVFJBTlNBQ1RJT05fREFUQV9NQVhfU0laRSwgVHJhbnNhY3Rpb25CbG9ja0RhdGFCdWlsZGVyIH0gZnJvbSAnLi9teXN0ZW5sYWIvYnVpbGRlci9UcmFuc2FjdGlvbkRhdGFCbG9jayc7XG5pbXBvcnQgeyBidWlsZGVyIH0gZnJvbSAnLi9teXN0ZW5sYWIvYnVpbGRlcic7XG5pbXBvcnQgYmxha2UyYiBmcm9tICdAYml0Z28tYmV0YS9ibGFrZTJiJztcbmltcG9ydCB7IGhhc2hUeXBlZERhdGEgfSBmcm9tICcuL215c3RlbmxhYi9jcnlwdG9ncmFwaHkvaGFzaCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbjxUPiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfc3VpVHJhbnNhY3Rpb246IFN1aVRyYW5zYWN0aW9uPFQ+O1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZTogU2lnbmF0dXJlO1xuICBwcml2YXRlIF9zZXJpYWxpemVkU2lnOiBVaW50OEFycmF5O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgc3VpVHJhbnNhY3Rpb24oKTogU3VpVHJhbnNhY3Rpb248VD4ge1xuICAgIHJldHVybiB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldFN1aVRyYW5zYWN0aW9uKHR4OiBTdWlUcmFuc2FjdGlvbjxUPik6IHZvaWQge1xuICAgIHRoaXMuX3N1aVRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFCeXRlcyA9IHRoaXMuZ2V0RGF0YUJ5dGVzKCk7XG4gICAgY29uc3QgaGFzaCA9IGhhc2hUeXBlZERhdGEoJ1RyYW5zYWN0aW9uRGF0YScsIGRhdGFCeXRlcyk7XG4gICAgdGhpcy5faWQgPSBiczU4LmVuY29kZShoYXNoKTtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBCYXNlUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gICAgdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBzdWlTaWduYXR1cmUoKTogU2lnbmF0dXJlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlO1xuICB9XG5cbiAgZ2V0IHNlcmlhbGl6ZWRTaWcoKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcmlhbGl6ZWRTaWc7XG4gIH1cblxuICBzZXRTZXJpYWxpemVkU2lnKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwdWJLZXkgPSBCdWZmZXIuZnJvbShwdWJsaWNLZXkucHViLCAnaGV4Jyk7XG4gICAgY29uc3Qgc2VyaWFsaXplZF9zaWcgPSBuZXcgVWludDhBcnJheSgxICsgc2lnbmF0dXJlLmxlbmd0aCArIHB1YktleS5sZW5ndGgpO1xuICAgIHNlcmlhbGl6ZWRfc2lnLnNldChTSUdOQVRVUkVfU0NIRU1FX0JZVEVTKTtcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQoc2lnbmF0dXJlLCAxKTtcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQocHViS2V5LCAxICsgc2lnbmF0dXJlLmxlbmd0aCk7XG4gICAgdGhpcy5fc2VyaWFsaXplZFNpZyA9IHNlcmlhbGl6ZWRfc2lnO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiB0aGlzIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0gc2lnbmVyIGtleVxuICAgKi9cblxuICBzaWduKHNpZ25lcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZW1wdHkgdHJhbnNhY3Rpb24gdG8gc2lnbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGludGVudE1lc3NhZ2UgPSB0aGlzLnNpZ25hYmxlUGF5bG9hZDtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBzaWduZXIuc2lnbk1lc3NhZ2VpblVpbnQ4QXJyYXkoaW50ZW50TWVzc2FnZSk7XG5cbiAgICB0aGlzLnNldFNlcmlhbGl6ZWRTaWcoeyBwdWI6IHNpZ25lci5nZXRLZXlzKCkucHViIH0sIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuICAgIHRoaXMuYWRkU2lnbmF0dXJlKHsgcHViOiBzaWduZXIuZ2V0S2V5cygpLnB1YiB9LCBCdWZmZXIuZnJvbShzaWduYXR1cmUpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYWJzdHJhY3QgdG9Kc29uKCk6IFR4RGF0YTtcblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IEJpdEdvVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgZ2V0IHRoZSBjb3JyZWN0IHR4RGF0YSB3aXRoIHRyYW5zYWN0aW9uIHR5cGVcbiAgICovXG4gIGFic3RyYWN0IGdldFR4RGF0YSgpOiBUeERhdGE7XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBhYnN0cmFjdCBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQ7XG5cbiAgZ2V0RGF0YUJ5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMuZ2V0VHhEYXRhKCk7XG4gICAgY29uc3QgdHhTZXIgPSBidWlsZGVyLnNlcignVHJhbnNhY3Rpb25EYXRhJywgeyBWMTogdHhEYXRhIH0sIHsgbWF4U2l6ZTogVFJBTlNBQ1RJT05fREFUQV9NQVhfU0laRSB9KTtcbiAgICByZXR1cm4gdHhTZXIudG9CeXRlcygpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBjb25zdCBkYXRhQnl0ZXMgPSB0aGlzLmdldERhdGFCeXRlcygpO1xuICAgIGNvbnN0IGludGVudE1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VXaXRoSW50ZW50KEludGVudFNjb3BlLlRyYW5zYWN0aW9uRGF0YSwgZGF0YUJ5dGVzKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYmxha2UyYigzMikudXBkYXRlKGludGVudE1lc3NhZ2UpLmRpZ2VzdCgnYmluYXJ5JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXNzYWdlV2l0aEludGVudChzY29wZTogSW50ZW50U2NvcGUsIG1lc3NhZ2U6IFVpbnQ4QXJyYXkpIHtcbiAgICBjb25zdCBpbnRlbnQgPSB0aGlzLmludGVudFdpdGhTY29wZShzY29wZSk7XG4gICAgY29uc3QgaW50ZW50TWVzc2FnZSA9IG5ldyBVaW50OEFycmF5KGludGVudC5sZW5ndGggKyBtZXNzYWdlLmxlbmd0aCk7XG4gICAgaW50ZW50TWVzc2FnZS5zZXQoaW50ZW50KTtcbiAgICBpbnRlbnRNZXNzYWdlLnNldChtZXNzYWdlLCBpbnRlbnQubGVuZ3RoKTtcbiAgICByZXR1cm4gaW50ZW50TWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZW50V2l0aFNjb3BlKHNjb3BlOiBJbnRlbnRTY29wZSk6IEludGVudCB7XG4gICAgcmV0dXJuIFtzY29wZSwgSW50ZW50VmVyc2lvbi5WMCwgQXBwSWQuU3VpXTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFCeXRlcyA9IHRoaXMuZ2V0RGF0YUJ5dGVzKCk7XG4gICAgdGhpcy5faWQgPSBiczU4LmVuY29kZShoYXNoVHlwZWREYXRhKCdUcmFuc2FjdGlvbkRhdGEnLCBkYXRhQnl0ZXMpKTtcbiAgICByZXR1cm4gdG9CNjQoZGF0YUJ5dGVzKTtcbiAgfVxuXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKFxuICAgIHNlcmlhbGl6ZWRUeDogc3RyaW5nXG4gICk6IFN1aVRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gfCBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBkYXRhID0gZnJvbUI2NChzZXJpYWxpemVkVHgpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uQmxvY2sgPSBUcmFuc2FjdGlvbkJsb2NrRGF0YUJ1aWxkZXIuZnJvbUJ5dGVzKGRhdGEpO1xuICAgIGNvbnN0IGlucHV0cyA9IHRyYW5zYWN0aW9uQmxvY2suaW5wdXRzLm1hcCgodHhJbnB1dCkgPT4gdHhJbnB1dC52YWx1ZSk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25zID0gdHJhbnNhY3Rpb25CbG9jay50cmFuc2FjdGlvbnM7XG4gICAgY29uc3QgdHhUeXBlID0gdXRpbHMuZ2V0U3VpVHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9ucy5sZW5ndGggPT0gMSA/IHRyYW5zYWN0aW9uc1swXSA6IHRyYW5zYWN0aW9uc1sxXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0cmFuc2FjdGlvbkJsb2NrLmdldERpZ2VzdCgpLFxuICAgICAgdHlwZTogdHhUeXBlLFxuICAgICAgc2VuZGVyOiBub3JtYWxpemVTdWlBZGRyZXNzKHRyYW5zYWN0aW9uQmxvY2suc2VuZGVyISksXG4gICAgICB0eDoge1xuICAgICAgICBpbnB1dHM6IGlucHV0cyxcbiAgICAgICAgdHJhbnNhY3Rpb25zOiB0cmFuc2FjdGlvbnMsXG4gICAgICB9LFxuICAgICAgZ2FzRGF0YToge1xuICAgICAgICBwYXltZW50OiB0aGlzLm5vcm1hbGl6ZUNvaW5zKHRyYW5zYWN0aW9uQmxvY2suZ2FzQ29uZmlnLnBheW1lbnQhKSxcbiAgICAgICAgb3duZXI6IG5vcm1hbGl6ZVN1aUFkZHJlc3ModHJhbnNhY3Rpb25CbG9jay5nYXNDb25maWcub3duZXIhKSxcbiAgICAgICAgcHJpY2U6IE51bWJlcih0cmFuc2FjdGlvbkJsb2NrLmdhc0NvbmZpZy5wcmljZSBhcyBzdHJpbmcpLFxuICAgICAgICBidWRnZXQ6IE51bWJlcih0cmFuc2FjdGlvbkJsb2NrLmdhc0NvbmZpZy5idWRnZXQgYXMgc3RyaW5nKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcm9wZXJHYXNEYXRhKGs6IGFueSk6IEdhc0RhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBwYXltZW50OiBbdGhpcy5ub3JtYWxpemVTdWlPYmplY3RSZWYoay5nYXNEYXRhLnBheW1lbnQpXSxcbiAgICAgIG93bmVyOiB1dGlscy5ub3JtYWxpemVIZXhJZChrLmdhc0RhdGEub3duZXIpLFxuICAgICAgcHJpY2U6IE51bWJlcihrLmdhc0RhdGEucHJpY2UpLFxuICAgICAgYnVkZ2V0OiBOdW1iZXIoay5nYXNEYXRhLmJ1ZGdldCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG5vcm1hbGl6ZUNvaW5zKGNvaW5zOiBhbnlbXSk6IFN1aU9iamVjdFJlZltdIHtcbiAgICByZXR1cm4gY29pbnMubWFwKChjb2luKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVTdWlPYmplY3RSZWYoY29pbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBub3JtYWxpemVTdWlPYmplY3RSZWYob2JqOiBTdWlPYmplY3RSZWYpOiBTdWlPYmplY3RSZWYge1xuICAgIHJldHVybiB7XG4gICAgICBvYmplY3RJZDogbm9ybWFsaXplU3VpT2JqZWN0SWQob2JqLm9iamVjdElkKSxcbiAgICAgIHZlcnNpb246IE51bWJlcihvYmoudmVyc2lvbiksXG4gICAgICBkaWdlc3Q6IG9iai5kaWdlc3QsXG4gICAgfTtcbiAgfVxufVxuIl19
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQU84QjtBQUM5QixtQ0FBaUc7QUFFakcsaURBQTRGO0FBQzVGLDZDQUFxRztBQUNyRywyQ0FBcUQ7QUFDckQsbUNBQWdDO0FBQ2hDLHFDQUE2QztBQUM3QyxnREFBd0I7QUFFeEIsbUZBQWtIO0FBQ2xILGlEQUFzRjtBQUN0RixrRUFBMEM7QUFDMUMsd0RBQThEO0FBRTlELE1BQXNCLFdBQWUsU0FBUSwwQkFBZTtJQUsxRCxZQUFzQixXQUFpQztRQUNyRCxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQXFCO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxFQUFFO1FBQ0osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JBQWEsRUFBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsR0FBRyxHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBd0IsRUFBRSxTQUFpQjtRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUs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ICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblR5cGUgYXMgQml0R29UcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFN1aVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLCBTdWlUcmFuc2FjdGlvbiwgU3VpVHJhbnNhY3Rpb25UeXBlLCBUeERhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB1dGlscywgeyBBcHBJZCwgSW50ZW50LCBJbnRlbnRTY29wZSwgSW50ZW50VmVyc2lvbiwgaXNJbW1Pck93bmVkT2JqIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBHYXNEYXRhLCBub3JtYWxpemVTdWlBZGRyZXNzLCBub3JtYWxpemVTdWlPYmplY3RJZCwgU3VpT2JqZWN0UmVmIH0gZnJvbSAnLi9teXN0ZW5sYWIvdHlwZXMnO1xuaW1wb3J0IHsgU0lHTkFUVVJFX1NDSEVNRV9CWVRFUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBmcm9tQjY0LCB0b0I2NCB9IGZyb20gJ0BteXN0ZW4vYmNzJztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUUkFOU0FDVElPTl9EQVRBX01BWF9TSVpFLCBUcmFuc2FjdGlvbkJsb2NrRGF0YUJ1aWxkZXIgfSBmcm9tICcuL215c3RlbmxhYi9idWlsZGVyL1RyYW5zYWN0aW9uRGF0YUJsb2NrJztcbmltcG9ydCB7IGJ1aWxkZXIsIE1lcmdlQ29pbnNUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9teXN0ZW5sYWIvYnVpbGRlcic7XG5pbXBvcnQgYmxha2UyYiBmcm9tICdAYml0Z28tYmV0YS9ibGFrZTJiJztcbmltcG9ydCB7IGhhc2hUeXBlZERhdGEgfSBmcm9tICcuL215c3RlbmxhYi9jcnlwdG9ncmFwaHkvaGFzaCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbjxUPiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfc3VpVHJhbnNhY3Rpb246IFN1aVRyYW5zYWN0aW9uPFQ+O1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZTogU2lnbmF0dXJlO1xuICBwcml2YXRlIF9zZXJpYWxpemVkU2lnOiBVaW50OEFycmF5O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXQgc3VpVHJhbnNhY3Rpb24oKTogU3VpVHJhbnNhY3Rpb248VD4ge1xuICAgIHJldHVybiB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldFN1aVRyYW5zYWN0aW9uKHR4OiBTdWlUcmFuc2FjdGlvbjxUPik6IHZvaWQge1xuICAgIHRoaXMuX3N1aVRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFCeXRlcyA9IHRoaXMuZ2V0RGF0YUJ5dGVzKCk7XG4gICAgY29uc3QgaGFzaCA9IGhhc2hUeXBlZERhdGEoJ1RyYW5zYWN0aW9uRGF0YScsIGRhdGFCeXRlcyk7XG4gICAgdGhpcy5faWQgPSBiczU4LmVuY29kZShoYXNoKTtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBCYXNlUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gICAgdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBzdWlTaWduYXR1cmUoKTogU2lnbmF0dXJlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlO1xuICB9XG5cbiAgZ2V0IHNlcmlhbGl6ZWRTaWcoKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcmlhbGl6ZWRTaWc7XG4gIH1cblxuICBzZXRTZXJpYWxpemVkU2lnKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwdWJLZXkgPSBCdWZmZXIuZnJvbShwdWJsaWNLZXkucHViLCAnaGV4Jyk7XG4gICAgY29uc3Qgc2VyaWFsaXplZF9zaWcgPSBuZXcgVWludDhBcnJheSgxICsgc2lnbmF0dXJlLmxlbmd0aCArIHB1YktleS5sZW5ndGgpO1xuICAgIHNlcmlhbGl6ZWRfc2lnLnNldChTSUdOQVRVUkVfU0NIRU1FX0JZVEVTKTtcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQoc2lnbmF0dXJlLCAxKTtcbiAgICBzZXJpYWxpemVkX3NpZy5zZXQocHViS2V5LCAxICsgc2lnbmF0dXJlLmxlbmd0aCk7XG4gICAgdGhpcy5fc2VyaWFsaXplZFNpZyA9IHNlcmlhbGl6ZWRfc2lnO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiB0aGlzIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0gc2lnbmVyIGtleVxuICAgKi9cblxuICBzaWduKHNpZ25lcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZW1wdHkgdHJhbnNhY3Rpb24gdG8gc2lnbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGludGVudE1lc3NhZ2UgPSB0aGlzLnNpZ25hYmxlUGF5bG9hZDtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBzaWduZXIuc2lnbk1lc3NhZ2VpblVpbnQ4QXJyYXkoaW50ZW50TWVzc2FnZSk7XG5cbiAgICB0aGlzLnNldFNlcmlhbGl6ZWRTaWcoeyBwdWI6IHNpZ25lci5nZXRLZXlzKCkucHViIH0sIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSkpO1xuICAgIHRoaXMuYWRkU2lnbmF0dXJlKHsgcHViOiBzaWduZXIuZ2V0S2V5cygpLnB1YiB9LCBCdWZmZXIuZnJvbShzaWduYXR1cmUpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYWJzdHJhY3QgdG9Kc29uKCk6IFR4RGF0YTtcblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IEJpdEdvVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgZ2V0IHRoZSBjb3JyZWN0IHR4RGF0YSB3aXRoIHRyYW5zYWN0aW9uIHR5cGVcbiAgICovXG4gIGFic3RyYWN0IGdldFR4RGF0YSgpOiBUeERhdGE7XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgYWJzdHJhY3QgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBhYnN0cmFjdCBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQ7XG5cbiAgZ2V0RGF0YUJ5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMuZ2V0VHhEYXRhKCk7XG4gICAgY29uc3QgdHhTZXIgPSBidWlsZGVyLnNlcignVHJhbnNhY3Rpb25EYXRhJywgeyBWMTogdHhEYXRhIH0sIHsgbWF4U2l6ZTogVFJBTlNBQ1RJT05fREFUQV9NQVhfU0laRSB9KTtcbiAgICByZXR1cm4gdHhTZXIudG9CeXRlcygpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBjb25zdCBkYXRhQnl0ZXMgPSB0aGlzLmdldERhdGFCeXRlcygpO1xuICAgIGNvbnN0IGludGVudE1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VXaXRoSW50ZW50KEludGVudFNjb3BlLlRyYW5zYWN0aW9uRGF0YSwgZGF0YUJ5dGVzKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYmxha2UyYigzMikudXBkYXRlKGludGVudE1lc3NhZ2UpLmRpZ2VzdCgnYmluYXJ5JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXNzYWdlV2l0aEludGVudChzY29wZTogSW50ZW50U2NvcGUsIG1lc3NhZ2U6IFVpbnQ4QXJyYXkpIHtcbiAgICBjb25zdCBpbnRlbnQgPSB0aGlzLmludGVudFdpdGhTY29wZShzY29wZSk7XG4gICAgY29uc3QgaW50ZW50TWVzc2FnZSA9IG5ldyBVaW50OEFycmF5KGludGVudC5sZW5ndGggKyBtZXNzYWdlLmxlbmd0aCk7XG4gICAgaW50ZW50TWVzc2FnZS5zZXQoaW50ZW50KTtcbiAgICBpbnRlbnRNZXNzYWdlLnNldChtZXNzYWdlLCBpbnRlbnQubGVuZ3RoKTtcbiAgICByZXR1cm4gaW50ZW50TWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZW50V2l0aFNjb3BlKHNjb3BlOiBJbnRlbnRTY29wZSk6IEludGVudCB7XG4gICAgcmV0dXJuIFtzY29wZSwgSW50ZW50VmVyc2lvbi5WMCwgQXBwSWQuU3VpXTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFCeXRlcyA9IHRoaXMuZ2V0RGF0YUJ5dGVzKCk7XG4gICAgdGhpcy5faWQgPSBiczU4LmVuY29kZShoYXNoVHlwZWREYXRhKCdUcmFuc2FjdGlvbkRhdGEnLCBkYXRhQnl0ZXMpKTtcbiAgICByZXR1cm4gdG9CNjQoZGF0YUJ5dGVzKTtcbiAgfVxuXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKHNlcmlhbGl6ZWRUeDogc3RyaW5nKTogU3VpVHJhbnNhY3Rpb248U3VpUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBkYXRhID0gZnJvbUI2NChzZXJpYWxpemVkVHgpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uQmxvY2sgPSBUcmFuc2FjdGlvbkJsb2NrRGF0YUJ1aWxkZXIuZnJvbUJ5dGVzKGRhdGEpO1xuICAgIGNvbnN0IGlucHV0cyA9IHRyYW5zYWN0aW9uQmxvY2suaW5wdXRzLm1hcCgodHhJbnB1dCkgPT4gdHhJbnB1dC52YWx1ZSk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25zID0gdHJhbnNhY3Rpb25CbG9jay50cmFuc2FjdGlvbnM7XG4gICAgY29uc3QgdHhUeXBlID0gdGhpcy5nZXRTdWlUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25zKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRyYW5zYWN0aW9uQmxvY2suZ2V0RGlnZXN0KCksXG4gICAgICB0eXBlOiB0eFR5cGUsXG4gICAgICBzZW5kZXI6IG5vcm1hbGl6ZVN1aUFkZHJlc3ModHJhbnNhY3Rpb25CbG9jay5zZW5kZXIhKSxcbiAgICAgIHR4OiB7XG4gICAgICAgIGlucHV0czogaW5wdXRzLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IHRyYW5zYWN0aW9ucyxcbiAgICAgIH0sXG4gICAgICBnYXNEYXRhOiB7XG4gICAgICAgIHBheW1lbnQ6IHRoaXMubm9ybWFsaXplQ29pbnModHJhbnNhY3Rpb25CbG9jay5nYXNDb25maWcucGF5bWVudCEpLFxuICAgICAgICBvd25lcjogbm9ybWFsaXplU3VpQWRkcmVzcyh0cmFuc2FjdGlvbkJsb2NrLmdhc0NvbmZpZy5vd25lciEpLFxuICAgICAgICBwcmljZTogTnVtYmVyKHRyYW5zYWN0aW9uQmxvY2suZ2FzQ29uZmlnLnByaWNlIGFzIHN0cmluZyksXG4gICAgICAgIGJ1ZGdldDogTnVtYmVyKHRyYW5zYWN0aW9uQmxvY2suZ2FzQ29uZmlnLmJ1ZGdldCBhcyBzdHJpbmcpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U3VpVHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25UeXBlW10pOiBTdWlUcmFuc2FjdGlvblR5cGUge1xuICAgIC8vIHRyaWNreSB0byBkZXRlcm1pbmUgY3VzdG9tIHR4IHB1cmVseSBmcm9tIGEgc2VyaWFsaXplZCB0eCwgd2UgY2FuIHJlbHkgb24gZm9sbG93aW5nIGxvZ2ljXG4gICAgaWYgKHRyYW5zYWN0aW9ucy5sZW5ndGggPT0gMSkge1xuICAgICAgcmV0dXJuIHV0aWxzLmdldFN1aVRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvbnNbMF0pO1xuICAgIH1cbiAgICBpZiAodHJhbnNhY3Rpb25zLnNvbWUoKHR4KSA9PiB1dGlscy5nZXRTdWlUcmFuc2FjdGlvblR5cGUodHgpID09PSBTdWlUcmFuc2FjdGlvblR5cGUuV2FscnVzU3Rha2VXaXRoUG9vbCkpIHtcbiAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuV2FscnVzU3Rha2VXaXRoUG9vbDtcbiAgICB9XG4gICAgaWYgKHRyYW5zYWN0aW9ucy5zb21lKCh0eCkgPT4gdXRpbHMuZ2V0U3VpVHJhbnNhY3Rpb25UeXBlKHR4KSA9PT0gU3VpVHJhbnNhY3Rpb25UeXBlLldhbHJ1c1JlcXVlc3RXaXRoZHJhd1N0YWtlKSkge1xuICAgICAgcmV0dXJuIFN1aVRyYW5zYWN0aW9uVHlwZS5XYWxydXNSZXF1ZXN0V2l0aGRyYXdTdGFrZTtcbiAgICB9XG4gICAgaWYgKHRyYW5zYWN0aW9ucy5zb21lKCh0eCkgPT4gdXRpbHMuZ2V0U3VpVHJhbnNhY3Rpb25UeXBlKHR4KSA9PT0gU3VpVHJhbnNhY3Rpb25UeXBlLldhbHJ1c1dpdGhkcmF3U3Rha2UpKSB7XG4gICAgICByZXR1cm4gU3VpVHJhbnNhY3Rpb25UeXBlLldhbHJ1c1dpdGhkcmF3U3Rha2U7XG4gICAgfVxuICAgIGlmICh0cmFuc2FjdGlvbnMuc29tZSgodHgpID0+IHV0aWxzLmdldFN1aVRyYW5zYWN0aW9uVHlwZSh0eCkgPT09IFN1aVRyYW5zYWN0aW9uVHlwZS5BZGRTdGFrZSkpIHtcbiAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuQWRkU3Rha2U7XG4gICAgfVxuICAgIGlmICh0cmFuc2FjdGlvbnMuc29tZSgodHgpID0+IHV0aWxzLmdldFN1aVRyYW5zYWN0aW9uVHlwZSh0eCkgPT09IFN1aVRyYW5zYWN0aW9uVHlwZS5XaXRoZHJhd1N0YWtlKSkge1xuICAgICAgcmV0dXJuIFN1aVRyYW5zYWN0aW9uVHlwZS5XaXRoZHJhd1N0YWtlO1xuICAgIH1cbiAgICBpZiAodHJhbnNhY3Rpb25zLnNvbWUoKHR4KSA9PiB1dGlscy5nZXRTdWlUcmFuc2FjdGlvblR5cGUodHgpID09PSBTdWlUcmFuc2FjdGlvblR5cGUuVG9rZW5UcmFuc2ZlcikpIHtcbiAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuVG9rZW5UcmFuc2ZlcjtcbiAgICB9XG4gICAgaWYgKHRyYW5zYWN0aW9ucy5ldmVyeSgodHgpID0+IHV0aWxzLmdldFN1aVRyYW5zYWN0aW9uVHlwZSh0eCkgPT09IFN1aVRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlcikpIHtcbiAgICAgIHJldHVybiBTdWlUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1aVRyYW5zYWN0aW9uVHlwZS5DdXN0b21UeDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcm9wZXJHYXNEYXRhKGs6IGFueSk6IEdhc0RhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBwYXltZW50OiBbdGhpcy5ub3JtYWxpemVTdWlPYmplY3RSZWYoay5nYXNEYXRhLnBheW1lbnQpXSxcbiAgICAgIG93bmVyOiB1dGlscy5ub3JtYWxpemVIZXhJZChrLmdhc0RhdGEub3duZXIpLFxuICAgICAgcHJpY2U6IE51bWJlcihrLmdhc0RhdGEucHJpY2UpLFxuICAgICAgYnVkZ2V0OiBOdW1iZXIoay5nYXNEYXRhLmJ1ZGdldCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG5vcm1hbGl6ZUNvaW5zKGNvaW5zOiBhbnlbXSk6IFN1aU9iamVjdFJlZltdIHtcbiAgICByZXR1cm4gY29pbnMubWFwKChjb2luKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVTdWlPYmplY3RSZWYoY29pbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBub3JtYWxpemVTdWlPYmplY3RSZWYob2JqOiBTdWlPYmplY3RSZWYpOiBTdWlPYmplY3RSZWYge1xuICAgIHJldHVybiB7XG4gICAgICBvYmplY3RJZDogbm9ybWFsaXplU3VpT2JqZWN0SWQob2JqLm9iamVjdElkKSxcbiAgICAgIHZlcnNpb246IE51bWJlcihvYmoudmVyc2lvbiksXG4gICAgICBkaWdlc3Q6IG9iai5kaWdlc3QsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGJ1aWxkaW5nIHRyYW5zYWN0aW9ucyB3aXRoID4gMjU1IGlucHV0IGdhcyBwYXltZW50IG9iamVjdHMsIHdlIGZpcnN0IHVzZSBNZXJnZUNvaW5zIFRyYW5hc2FjdGlvbnMgdG8gbWVyZ2UgdGhlXG4gICAqIGFkZGl0aW9uYWwgaW5wdXRzIGludG8gdGhlIGdhcyBjb2luICYgc2xpY2UgdGhlbSBmcm9tIHRoZSBwYXltZW50IGluIGdhc0RhdGEuIFdoZW4gaW5pdGlhbGl6aW5nIHRoZSBidWlsZGVyIHVzaW5nXG4gICAqIGRlY29kZWQgdHggZGF0YSwgd2UgbmVlZCB0byBnZXQgdGhlc2UgaW5wdXRzIGZyb20gTWVyZ2VDb2lucyAmIGFkZCB0aGVtIGJhY2sgdG8gdGhlIGdhcyBwYXltZW50IHRvIGJlIGFibGUgdG9cbiAgICogcmVidWlsZCBmcm9tIGEgcmF3IHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldElucHV0R2FzUGF5bWVudE9iamVjdHNGcm9tVHgodHg6IFN1aVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uKTogU3VpT2JqZWN0UmVmW10ge1xuICAgIGNvbnN0IHR4SW5wdXRzID0gdHguaW5wdXRzO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IHR4LnRyYW5zYWN0aW9ucztcbiAgICBjb25zdCBpbnB1dEdhc1BheW1lbnRPYmplY3RzOiBTdWlPYmplY3RSZWZbXSA9IFtdO1xuXG4gICAgdHJhbnNhY3Rpb25zLmZvckVhY2goKHRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICBpZiAodHJhbnNhY3Rpb24ua2luZCA9PT0gJ01lcmdlQ29pbnMnKSB7XG4gICAgICAgIGNvbnN0IHsgZGVzdGluYXRpb24sIHNvdXJjZXMgfSA9IHRyYW5zYWN0aW9uIGFzIE1lcmdlQ29pbnNUcmFuc2FjdGlvbjtcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmtpbmQgPT09ICdHYXNDb2luJykge1xuICAgICAgICAgIHNvdXJjZXMuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoc291cmNlLmtpbmQgPT09ICdJbnB1dCcpIHtcbiAgICAgICAgICAgICAgbGV0IGlucHV0ID0gdHhJbnB1dHNbc291cmNlLmluZGV4XTtcbiAgICAgICAgICAgICAgaWYgKCd2YWx1ZScgaW4gaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICgnT2JqZWN0JyBpbiBpbnB1dCAmJiBpc0ltbU9yT3duZWRPYmooaW5wdXQuT2JqZWN0KSkge1xuICAgICAgICAgICAgICAgIGlucHV0R2FzUGF5bWVudE9iamVjdHMucHVzaChpbnB1dC5PYmplY3QuSW1tT3JPd25lZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlucHV0R2FzUGF5bWVudE9iamVjdHM7XG4gIH1cbn1cbiJdfQ==
@@ -1,12 +1,11 @@
1
- /// <reference types="node" />
2
1
  import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, Recipient, Signature, TransactionType } from '@bitgo-beta/sdk-core';
3
2
  import { Transaction } from './transaction';
4
3
  import BigNumber from 'bignumber.js';
5
4
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
6
- import { StakingProgrammableTransaction, SuiTransactionType, TransferProgrammableTransaction } from './iface';
5
+ import { SuiProgrammableTransaction, SuiTransactionType } from './iface';
7
6
  import { KeyPair } from './keyPair';
8
7
  import { GasData, SuiObjectRef } from './mystenlab/types';
9
- export declare abstract class TransactionBuilder<T = TransferProgrammableTransaction | StakingProgrammableTransaction> extends BaseTransactionBuilder {
8
+ export declare abstract class TransactionBuilder<T = SuiProgrammableTransaction> extends BaseTransactionBuilder {
10
9
  protected _transaction: Transaction<T>;
11
10
  protected _signatures: Signature[];
12
11
  protected _signer: KeyPair;
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAGtB,SAAS,IAAI,aAAa,EAC1B,SAAS,EACT,SAAS,EACT,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAE9G,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D,8BAAsB,kBAAkB,CACtC,CAAC,GAAG,+BAA+B,GAAG,8BAA8B,CACpE,SAAQ,sBAAsB;IAC9B,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAM;IACxC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAE3B,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE5B,SAAS,aAAa,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAKvD;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAE1C;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAEpD;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;IAO1D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAMnC,IAAI,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAKpC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM/B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAG9C,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAWjD,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASvC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOxC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAOlD,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYrE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAQ/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAMtC"}
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAGtB,SAAS,IAAI,aAAa,EAC1B,SAAS,EACT,SAAS,EACT,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D,8BAAsB,kBAAkB,CAAC,CAAC,GAAG,0BAA0B,CAAE,SAAQ,sBAAsB;IACrG,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAM;IACxC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAE3B,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE5B,SAAS,aAAa,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAKvD;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAE1C;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAEpD;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;IAO1D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAMnC,IAAI,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAKpC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM/B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAG9C,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAWjD,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASvC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOxC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAOlD,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYrE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAQ/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAMtC"}
@@ -64,10 +64,10 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
64
64
  }
65
65
  }
66
66
  validateRecipients(recipients) {
67
- assert_1.default(recipients && recipients.length > 0, new sdk_core_1.BuildTransactionError('at least one recipient is required before building'));
67
+ (0, assert_1.default)(recipients && recipients.length > 0, new sdk_core_1.BuildTransactionError('at least one recipient is required before building'));
68
68
  recipients.forEach((recipient) => {
69
69
  utils_1.default.validateAddress(recipient.address, 'address');
70
- assert_1.default(utils_1.default.isValidAmount(recipient.amount), 'Invalid recipient amount');
70
+ (0, assert_1.default)(utils_1.default.isValidAmount(recipient.amount), 'Invalid recipient amount');
71
71
  });
72
72
  }
73
73
  validateGasData(gasData) {
@@ -90,7 +90,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
90
90
  }
91
91
  }
92
92
  validateGasPayment(payments) {
93
- assert_1.default(payments && payments.length > 0, new sdk_core_1.BuildTransactionError('gas payment is required before building'));
93
+ (0, assert_1.default)(payments && payments.length > 0, new sdk_core_1.BuildTransactionError('gas payment is required before building'));
94
94
  payments.forEach((payment) => {
95
95
  this.validateSuiObjectRef(payment, 'payment');
96
96
  });
@@ -132,4 +132,4 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
132
132
  }
133
133
  }
134
134
  exports.TransactionBuilder = TransactionBuilder;
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBVThCO0FBQzlCLG9EQUE0QjtBQUU1QixvREFBNEI7QUFJNUIsMkNBQWtEO0FBQ2xELHVDQUFvQztBQUdwQyxNQUFzQixrQkFFcEIsU0FBUSxpQ0FBc0I7SUFTOUIsWUFBc0IsV0FBaUM7UUFDckQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBUlgsZ0JBQVcsR0FBZ0IsRUFBRSxDQUFDO0lBU3hDLENBQUM7SUFRRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVyxDQUFDLFdBQTJCO1FBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBd0IsRUFBRSxTQUFpQjtRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FB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QUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0NBRUY7QUFuS0QsZ0RBbUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgUmVjaXBpZW50LFxuICBTaWduYXR1cmUsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiwgU3VpVHJhbnNhY3Rpb25UeXBlLCBUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBEVU1NWV9TVUlfR0FTX1BSSUNFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBHYXNEYXRhLCBTdWlPYmplY3RSZWYgfSBmcm9tICcuL215c3RlbmxhYi90eXBlcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXI8XG4gIFQgPSBUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uIHwgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uXG4+IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uPFQ+O1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZXM6IFNpZ25hdHVyZVtdID0gW107XG4gIHByb3RlY3RlZCBfc2lnbmVyOiBLZXlQYWlyO1xuXG4gIHByb3RlY3RlZCBfdHlwZTogU3VpVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX3NlbmRlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2dhc0RhdGE6IEdhc0RhdGE7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8vIGdldCBhbmQgc2V0IHJlZ2lvblxuICAvKipcbiAgICogVGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb248VD4ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjxUPikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbjxUPiB7XG4gICAgY29uc3Qgc2lnbmVyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgdGhpcy5fc2lnbmVyID0gc2lnbmVyO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbihzaWduZXIpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgcHVibGljS2V5LCBzaWduYXR1cmUgfSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5hZGRTaWduYXR1cmUocHVibGljS2V5LCBzaWduYXR1cmUpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0U2VyaWFsaXplZFNpZyhwdWJsaWNLZXksIHNpZ25hdHVyZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VuZGVyIG9mIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqIFRoaXMgYWNjb3VudCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBwYXlpbmcgdHJhbnNhY3Rpb24gZmVlcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlbmRlckFkZHJlc3MgdGhlIGFjY291bnQgdGhhdCBpcyBzZW5kaW5nIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzZW5kZXIoc2VuZGVyQWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdXRpbHMudmFsaWRhdGVBZGRyZXNzKHNlbmRlckFkZHJlc3MsICdzZW5kZXInKTtcbiAgICB0aGlzLl9zZW5kZXIgPSBzZW5kZXJBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdHlwZSh0eXBlOiBTdWlUcmFuc2FjdGlvblR5cGUpOiB0aGlzIHtcbiAgICB0aGlzLl90eXBlID0gdHlwZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdhc0RhdGEoZ2FzRGF0YTogR2FzRGF0YSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVHYXNEYXRhKGdhc0RhdGEpO1xuICAgIHRoaXMuX2dhc0RhdGEgPSBnYXNEYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGFic3RyYWN0IGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbjxUPik6IHZvaWQ7XG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlUmVjaXBpZW50cyhyZWNpcGllbnRzOiBSZWNpcGllbnRbXSk6IHZvaWQge1xuICAgIGFzc2VydChcbiAgICAgIHJlY2lwaWVudHMgJiYgcmVjaXBpZW50cy5sZW5ndGggPiAwLFxuICAgICAgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignYXQgbGVhc3Qgb25lIHJlY2lwaWVudCBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKVxuICAgICk7XG4gICAgcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgIHV0aWxzLnZhbGlkYXRlQWRkcmVzcyhyZWNpcGllbnQuYWRkcmVzcywgJ2FkZHJlc3MnKTtcbiAgICAgIGFzc2VydCh1dGlscy5pc1ZhbGlkQW1vdW50KHJlY2lwaWVudC5hbW91bnQpLCAnSW52YWxpZCByZWNpcGllbnQgYW1vdW50Jyk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZUdhc0RhdGEoZ2FzRGF0YTogR2FzRGF0YSk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoZ2FzRGF0YS5vd25lcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZ2FzIGFkZHJlc3MgJyArIGdhc0RhdGEub3duZXIpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlR2FzUGF5bWVudChnYXNEYXRhLnBheW1lbnQpO1xuICAgIHRoaXMudmFsaWRhdGVHYXNCdWRnZXQoZ2FzRGF0YS5idWRnZXQpO1xuICAgIHRoaXMudmFsaWRhdGVHYXNQcmljZShnYXNEYXRhLnByaWNlKTtcbiAgfVxuXG4gIHZhbGlkYXRlR2FzQnVkZ2V0KGdhc0J1ZGdldDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGdhc0J1ZGdldCA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGdhcyBidWRnZXQgJyArIGdhc0J1ZGdldCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVHYXNQcmljZShnYXNQcmljZTogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gVE9ETzogY2hlY2sgd2l0aCBTdWkgb24gdGhlIGdhcyBwcmljZVxuICAgIGlmIChnYXNQcmljZSAhPT0gRFVNTVlfU1VJX0dBU19QUklDRSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgcHJpY2UgJyArIGdhc1ByaWNlKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUdhc1BheW1lbnQocGF5bWVudHM6IFN1aU9iamVjdFJlZltdKTogdm9pZCB7XG4gICAgYXNzZXJ0KHBheW1lbnRzICYmIHBheW1lbnRzLmxlbmd0aCA+IDAsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2dhcyBwYXltZW50IGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICBwYXltZW50cy5mb3JFYWNoKChwYXltZW50KSA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlU3VpT2JqZWN0UmVmKHBheW1lbnQsICdwYXltZW50Jyk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZVN1aU9iamVjdFJlZihzdWlPYmplY3RSZWY6IFN1aU9iamVjdFJlZiwgZmllbGQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghc3VpT2JqZWN0UmVmLmhhc093blByb3BlcnR5KCdvYmplY3RJZCcpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkICR7ZmllbGR9LCBtaXNzaW5nIG9iamVjdElkYCk7XG4gICAgfVxuICAgIGlmICghc3VpT2JqZWN0UmVmLmhhc093blByb3BlcnR5KCd2ZXJzaW9uJykgfHwgIXV0aWxzLmlzVmFsaWRBbW91bnQoc3VpT2JqZWN0UmVmLnZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkICR7ZmllbGR9LCBpbnZhbGlkIG9yIG1pc3NpbmcgdmVyc2lvbmApO1xuICAgIH1cbiAgICBpZiAoIXN1aU9iamVjdFJlZi5oYXNPd25Qcm9wZXJ0eSgnZGlnZXN0JykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgJHtmaWVsZH0sIG1pc3NpbmcgZGlnZXN0YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEtleSB2YWxpZGF0aW9uIGZhaWxlZGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmICghdXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBVThCO0FBQzlCLG9EQUE0QjtBQUU1QixvREFBNEI7QUFJNUIsMkNBQWtEO0FBQ2xELHVDQUFvQztBQUdwQyxNQUFzQixrQkFBbUQsU0FBUSxpQ0FBc0I7SUFTckcsWUFBc0IsV0FBaUM7UUFDckQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBUlgsZ0JBQVcsR0FBZ0IsRUFBRSxDQUFDO0lBU3hDLENBQUM7SUFRRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVyxDQUFDLFdBQTJCO1FBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBd0IsRUFBRSxTQUFpQjtRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGFBQXFCO1FBQzFCLGVBQUssQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxJQUF3QjtRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZ0I7UUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFTRCxvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLGVBQWUsQ0FBQyxPQUFvQixFQUFFLGFBQXNCO1FBQzFELElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUF1QjtRQUN4QyxJQUFBLGdCQUFNLEVBQ0osVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNuQyxJQUFJLGdDQUFxQixDQUFDLG9EQUFvRCxDQUFDLENBQ2hGLENBQUM7UUFDRixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0IsZUFBSyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELElBQUEsZ0JBQU0sRUFBQyxlQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFnQjtRQUM5QixJQUFJLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBaUI7UUFDakMsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDL0Isd0NBQXdDO1FBQ3hDLElBQUksUUFBUSxLQUFLLCtCQUFtQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsUUFBd0I7UUFDekMsSUFBQSxnQkFBTSxFQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLGdDQUFxQixDQUFDLHlDQUF5QyxDQUFDLENBQUMsQ0FBQztRQUM5RyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxZQUEwQixFQUFFLEtBQWE7UUFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksZ0NBQXFCLENBQUMsV0FBVyxLQUFLLG9CQUFvQixDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMxRixNQUFNLElBQUksZ0NBQXFCLENBQUMsV0FBVyxLQUFLLDhCQUE4QixDQUFDLENBQUM7UUFDbEYsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLGdDQUFxQixDQUFDLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxHQUFZO1FBQ3RCLElBQUksQ0FBQztZQUNILElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsc0JBQXNCLENBQUMsY0FBc0I7UUFDM0MsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBSyxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsYUFBYSxDQUFDLEtBQWdCO1FBQzVCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0NBRUY7QUFqS0QsZ0RBaUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgUmVjaXBpZW50LFxuICBTaWduYXR1cmUsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFN1aVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLCBTdWlUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IERVTU1ZX1NVSV9HQVNfUFJJQ0UgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEdhc0RhdGEsIFN1aU9iamVjdFJlZiB9IGZyb20gJy4vbXlzdGVubGFiL3R5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlcjxUID0gU3VpUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uPFQ+O1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZXM6IFNpZ25hdHVyZVtdID0gW107XG4gIHByb3RlY3RlZCBfc2lnbmVyOiBLZXlQYWlyO1xuXG4gIHByb3RlY3RlZCBfdHlwZTogU3VpVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX3NlbmRlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2dhc0RhdGE6IEdhc0RhdGE7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8vIGdldCBhbmQgc2V0IHJlZ2lvblxuICAvKipcbiAgICogVGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb248VD4ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjxUPikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbjxUPiB7XG4gICAgY29uc3Qgc2lnbmVyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgdGhpcy5fc2lnbmVyID0gc2lnbmVyO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbihzaWduZXIpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgcHVibGljS2V5LCBzaWduYXR1cmUgfSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5hZGRTaWduYXR1cmUocHVibGljS2V5LCBzaWduYXR1cmUpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0U2VyaWFsaXplZFNpZyhwdWJsaWNLZXksIHNpZ25hdHVyZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VuZGVyIG9mIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqIFRoaXMgYWNjb3VudCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBwYXlpbmcgdHJhbnNhY3Rpb24gZmVlcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlbmRlckFkZHJlc3MgdGhlIGFjY291bnQgdGhhdCBpcyBzZW5kaW5nIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzZW5kZXIoc2VuZGVyQWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdXRpbHMudmFsaWRhdGVBZGRyZXNzKHNlbmRlckFkZHJlc3MsICdzZW5kZXInKTtcbiAgICB0aGlzLl9zZW5kZXIgPSBzZW5kZXJBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdHlwZSh0eXBlOiBTdWlUcmFuc2FjdGlvblR5cGUpOiB0aGlzIHtcbiAgICB0aGlzLl90eXBlID0gdHlwZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdhc0RhdGEoZ2FzRGF0YTogR2FzRGF0YSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVHYXNEYXRhKGdhc0RhdGEpO1xuICAgIHRoaXMuX2dhc0RhdGEgPSBnYXNEYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGFic3RyYWN0IGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbjxUPik6IHZvaWQ7XG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlUmVjaXBpZW50cyhyZWNpcGllbnRzOiBSZWNpcGllbnRbXSk6IHZvaWQge1xuICAgIGFzc2VydChcbiAgICAgIHJlY2lwaWVudHMgJiYgcmVjaXBpZW50cy5sZW5ndGggPiAwLFxuICAgICAgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignYXQgbGVhc3Qgb25lIHJlY2lwaWVudCBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKVxuICAgICk7XG4gICAgcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgIHV0aWxzLnZhbGlkYXRlQWRkcmVzcyhyZWNpcGllbnQuYWRkcmVzcywgJ2FkZHJlc3MnKTtcbiAgICAgIGFzc2VydCh1dGlscy5pc1ZhbGlkQW1vdW50KHJlY2lwaWVudC5hbW91bnQpLCAnSW52YWxpZCByZWNpcGllbnQgYW1vdW50Jyk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZUdhc0RhdGEoZ2FzRGF0YTogR2FzRGF0YSk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoZ2FzRGF0YS5vd25lcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgZ2FzIGFkZHJlc3MgJyArIGdhc0RhdGEub3duZXIpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlR2FzUGF5bWVudChnYXNEYXRhLnBheW1lbnQpO1xuICAgIHRoaXMudmFsaWRhdGVHYXNCdWRnZXQoZ2FzRGF0YS5idWRnZXQpO1xuICAgIHRoaXMudmFsaWRhdGVHYXNQcmljZShnYXNEYXRhLnByaWNlKTtcbiAgfVxuXG4gIHZhbGlkYXRlR2FzQnVkZ2V0KGdhc0J1ZGdldDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGdhc0J1ZGdldCA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGdhcyBidWRnZXQgJyArIGdhc0J1ZGdldCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVHYXNQcmljZShnYXNQcmljZTogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gVE9ETzogY2hlY2sgd2l0aCBTdWkgb24gdGhlIGdhcyBwcmljZVxuICAgIGlmIChnYXNQcmljZSAhPT0gRFVNTVlfU1VJX0dBU19QUklDRSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgcHJpY2UgJyArIGdhc1ByaWNlKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUdhc1BheW1lbnQocGF5bWVudHM6IFN1aU9iamVjdFJlZltdKTogdm9pZCB7XG4gICAgYXNzZXJ0KHBheW1lbnRzICYmIHBheW1lbnRzLmxlbmd0aCA+IDAsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2dhcyBwYXltZW50IGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICBwYXltZW50cy5mb3JFYWNoKChwYXltZW50KSA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlU3VpT2JqZWN0UmVmKHBheW1lbnQsICdwYXltZW50Jyk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZVN1aU9iamVjdFJlZihzdWlPYmplY3RSZWY6IFN1aU9iamVjdFJlZiwgZmllbGQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghc3VpT2JqZWN0UmVmLmhhc093blByb3BlcnR5KCdvYmplY3RJZCcpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkICR7ZmllbGR9LCBtaXNzaW5nIG9iamVjdElkYCk7XG4gICAgfVxuICAgIGlmICghc3VpT2JqZWN0UmVmLmhhc093blByb3BlcnR5KCd2ZXJzaW9uJykgfHwgIXV0aWxzLmlzVmFsaWRBbW91bnQoc3VpT2JqZWN0UmVmLnZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkICR7ZmllbGR9LCBpbnZhbGlkIG9yIG1pc3NpbmcgdmVyc2lvbmApO1xuICAgIH1cbiAgICBpZiAoIXN1aU9iamVjdFJlZi5oYXNPd25Qcm9wZXJ0eSgnZGlnZXN0JykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgJHtmaWVsZH0sIG1pc3NpbmcgZGlnZXN0YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEtleSB2YWxpZGF0aW9uIGZhaWxlZGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkJyk7XG4gICAgfVxuICAgIGlmICghdXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -3,13 +3,17 @@ import { TransferBuilder } from './transferBuilder';
3
3
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
4
4
  import { Transaction } from './transaction';
5
5
  import { StakingBuilder } from './stakingBuilder';
6
- import { StakingProgrammableTransaction, TransferProgrammableTransaction, UnstakingProgrammableTransaction } from './iface';
6
+ import { CustomProgrammableTransaction, StakingProgrammableTransaction, TransferProgrammableTransaction, UnstakingProgrammableTransaction, SuiProgrammableTransaction, TokenTransferProgrammableTransaction, WalrusStakingProgrammableTransaction, WalrusWithdrawStakeProgrammableTransaction } from './iface';
7
7
  import { TransactionBuilder } from './transactionBuilder';
8
8
  import { UnstakingBuilder } from './unstakingBuilder';
9
+ import { CustomTransactionBuilder } from './customTransactionBuilder';
10
+ import { TokenTransferBuilder } from './tokenTransferBuilder';
11
+ import { WalrusStakingBuilder } from './walrusStakingBuilder';
12
+ import { WalrusWithdrawStakeBuilder } from './walrusWithdrawStakeBuilder';
9
13
  export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
10
14
  constructor(_coinConfig: Readonly<CoinConfig>);
11
15
  /** @inheritdoc */
12
- from(raw: string): TransactionBuilder<TransferProgrammableTransaction | StakingProgrammableTransaction>;
16
+ from(raw: string): TransactionBuilder<SuiProgrammableTransaction>;
13
17
  /** @inheritdoc */
14
18
  getTransferBuilder(tx?: Transaction<TransferProgrammableTransaction>): TransferBuilder;
15
19
  /** @inheritdoc */
@@ -17,6 +21,14 @@ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFac
17
21
  /** @inheritdoc */
18
22
  getUnstakingBuilder(tx?: Transaction<UnstakingProgrammableTransaction>): UnstakingBuilder;
19
23
  /** @inheritdoc */
24
+ getCustomTransactionBuilder(tx?: Transaction<CustomProgrammableTransaction>): CustomTransactionBuilder;
25
+ /** @inheritdoc */
26
+ getTokenTransferBuilder(tx?: Transaction<TokenTransferProgrammableTransaction>): TokenTransferBuilder;
27
+ /** @inheritdoc */
28
+ getWalrusStakingBuilder(tx?: Transaction<WalrusStakingProgrammableTransaction>): WalrusStakingBuilder;
29
+ /** @inheritdoc */
30
+ getWalrusRequestWithdrawStakeBuilder(tx?: Transaction<WalrusWithdrawStakeProgrammableTransaction>): WalrusWithdrawStakeBuilder;
31
+ /** @inheritdoc */
20
32
  getWalletInitializationBuilder(): void;
21
33
  /**
22
34
  * Initialize the builder with the given transaction
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA2B,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,8BAA8B,EAG9B,+BAA+B,EAC/B,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAC,+BAA+B,GAAG,8BAA8B,CAAC;IAyBvG,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,+BAA+B,CAAC,GAAG,eAAe;IAItF,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,8BAA8B,CAAC,GAAG,cAAc;IAInF,kBAAkB;IAClB,mBAAmB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,gCAAgC,CAAC,GAAG,gBAAgB;IAIzF,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IASzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA2B,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAG9B,+BAA+B,EAC/B,gCAAgC,EAChC,0BAA0B,EAC1B,oCAAoC,EACpC,oCAAoC,EACpC,0CAA0C,EAC3C,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAC,0BAA0B,CAAC;IA0CjE,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,+BAA+B,CAAC,GAAG,eAAe;IAItF,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,8BAA8B,CAAC,GAAG,cAAc;IAInF,kBAAkB;IAClB,mBAAmB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,gCAAgC,CAAC,GAAG,gBAAgB;IAIzF,kBAAkB;IAClB,2BAA2B,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,6BAA6B,CAAC,GAAG,wBAAwB;IAItG,kBAAkB;IAClB,uBAAuB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,oCAAoC,CAAC,GAAG,oBAAoB;IAIrG,kBAAkB;IAClB,uBAAuB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,oCAAoC,CAAC,GAAG,oBAAoB;IAIrG,kBAAkB;IAClB,oCAAoC,CAClC,EAAE,CAAC,EAAE,WAAW,CAAC,0CAA0C,CAAC,GAC3D,0BAA0B;IAI7B,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -14,6 +14,14 @@ const transferTransaction_1 = require("./transferTransaction");
14
14
  const utils_1 = __importDefault(require("./utils"));
15
15
  const unstakingBuilder_1 = require("./unstakingBuilder");
16
16
  const unstakingTransaction_1 = require("./unstakingTransaction");
17
+ const customTransaction_1 = require("./customTransaction");
18
+ const customTransactionBuilder_1 = require("./customTransactionBuilder");
19
+ const tokenTransferBuilder_1 = require("./tokenTransferBuilder");
20
+ const tokenTransferTransaction_1 = require("./tokenTransferTransaction");
21
+ const walrusStakingBuilder_1 = require("./walrusStakingBuilder");
22
+ const walrusStakingTransaction_1 = require("./walrusStakingTransaction");
23
+ const walrusWithdrawStakeBuilder_1 = require("./walrusWithdrawStakeBuilder");
24
+ const walrusWithdrawStakeTransaction_1 = require("./walrusWithdrawStakeTransaction");
17
25
  class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
18
26
  constructor(_coinConfig) {
19
27
  super(_coinConfig);
@@ -36,6 +44,23 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
36
44
  const unstakingTransaction = new unstakingTransaction_1.UnstakingTransaction(this._coinConfig);
37
45
  unstakingTransaction.fromRawTransaction(raw);
38
46
  return this.getUnstakingBuilder(unstakingTransaction);
47
+ case iface_1.SuiTransactionType.CustomTx:
48
+ const customTransaction = new customTransaction_1.CustomTransaction(this._coinConfig);
49
+ customTransaction.fromRawTransaction(raw);
50
+ return this.getCustomTransactionBuilder(customTransaction);
51
+ case iface_1.SuiTransactionType.TokenTransfer:
52
+ const tokenTransferTx = new tokenTransferTransaction_1.TokenTransferTransaction(this._coinConfig);
53
+ tokenTransferTx.fromRawTransaction(raw);
54
+ return this.getTokenTransferBuilder(tokenTransferTx);
55
+ case iface_1.SuiTransactionType.WalrusStakeWithPool:
56
+ const walrusStakeTx = new walrusStakingTransaction_1.WalrusStakingTransaction(this._coinConfig);
57
+ walrusStakeTx.fromRawTransaction(raw);
58
+ return this.getWalrusStakingBuilder(walrusStakeTx);
59
+ case iface_1.SuiTransactionType.WalrusRequestWithdrawStake:
60
+ case iface_1.SuiTransactionType.WalrusWithdrawStake:
61
+ const walrusRequestWithdrawStakeTransaction = new walrusWithdrawStakeTransaction_1.WalrusWithdrawStakeTransaction(this._coinConfig);
62
+ walrusRequestWithdrawStakeTransaction.fromRawTransaction(raw);
63
+ return this.getWalrusRequestWithdrawStakeBuilder(walrusRequestWithdrawStakeTransaction);
39
64
  default:
40
65
  throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
41
66
  }
@@ -57,6 +82,22 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
57
82
  return this.initializeBuilder(tx, new unstakingBuilder_1.UnstakingBuilder(this._coinConfig));
58
83
  }
59
84
  /** @inheritdoc */
85
+ getCustomTransactionBuilder(tx) {
86
+ return this.initializeBuilder(tx, new customTransactionBuilder_1.CustomTransactionBuilder(this._coinConfig));
87
+ }
88
+ /** @inheritdoc */
89
+ getTokenTransferBuilder(tx) {
90
+ return this.initializeBuilder(tx, new tokenTransferBuilder_1.TokenTransferBuilder(this._coinConfig));
91
+ }
92
+ /** @inheritdoc */
93
+ getWalrusStakingBuilder(tx) {
94
+ return this.initializeBuilder(tx, new walrusStakingBuilder_1.WalrusStakingBuilder(this._coinConfig));
95
+ }
96
+ /** @inheritdoc */
97
+ getWalrusRequestWithdrawStakeBuilder(tx) {
98
+ return this.initializeBuilder(tx, new walrusWithdrawStakeBuilder_1.WalrusWithdrawStakeBuilder(this._coinConfig));
99
+ }
100
+ /** @inheritdoc */
60
101
  getWalletInitializationBuilder() {
61
102
  throw new Error('Method not implemented.');
62
103
  }
@@ -83,4 +124,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
83
124
  }
84
125
  }
85
126
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBOEY7QUFDOUYsdURBQW9EO0FBRXBELCtDQUE0QztBQUM1QyxxREFBa0Q7QUFDbEQsbUNBTWlCO0FBQ2pCLDZEQUEwRDtBQUMxRCwrREFBNEQ7QUFFNUQsb0RBQTRCO0FBQzVCLHlEQUFzRDtBQUN0RCxpRUFBOEQ7QUFFOUQsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBVztRQUNkLGVBQUssQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSTtZQUNGLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRTtnQkFDZixLQUFLLDBCQUFrQixDQUFDLFFBQVE7b0JBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUkseUNBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM3RCxVQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ25DLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM3QyxLQUFLLDBCQUFrQixDQUFDLFFBQVE7b0JBQzlCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3BFLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUMzQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLDBCQUFrQixDQUFDLGFBQWE7b0JBQ25DLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSwyQ0FBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3hFLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM3QyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN4RDtvQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUM1RDtTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLENBQUMsQ0FBQztTQUNUO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0IsQ0FBQyxFQUFpRDtRQUNsRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLENBQUMsRUFBZ0Q7UUFDaEUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksK0JBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLEVBQWtEO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLG1DQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsOEJBQThCO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBRXZCLEVBQTZGLEVBQUUsT0FBVTtRQUN6RyxJQUFJLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUN0QixjQUFzQjtRQUV0QixPQUFPLHlCQUFXLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNGO0FBN0VELDhEQTZFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBTdGFraW5nQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHtcbiAgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBTdWlUcmFuc2FjdGlvbixcbiAgU3VpVHJhbnNhY3Rpb25UeXBlLFxuICBUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBVbnN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbixcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBTdGFraW5nVHJhbnNhY3Rpb24gfSBmcm9tICcuL3N0YWtpbmdUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFVuc3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3Vuc3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHsgVW5zdGFraW5nVHJhbnNhY3Rpb24gfSBmcm9tICcuL3Vuc3Rha2luZ1RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhdzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gfCBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICB1dGlscy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgY29uc3QgdHggPSB0aGlzLnBhcnNlVHJhbnNhY3Rpb24ocmF3KTtcbiAgICB0cnkge1xuICAgICAgc3dpdGNoICh0eC50eXBlKSB7XG4gICAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyOlxuICAgICAgICAgIGNvbnN0IHRyYW5zZmVyVHggPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICB0cmFuc2ZlclR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0cmFuc2ZlclR4KTtcbiAgICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuQWRkU3Rha2U6XG4gICAgICAgICAgY29uc3Qgc3Rha2luZ1RyYW5zYWN0aW9uID0gbmV3IFN0YWtpbmdUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICBzdGFraW5nVHJhbnNhY3Rpb24uZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0J1aWxkZXIoc3Rha2luZ1RyYW5zYWN0aW9uKTtcbiAgICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuV2l0aGRyYXdTdGFrZTpcbiAgICAgICAgICBjb25zdCB1bnN0YWtpbmdUcmFuc2FjdGlvbiA9IG5ldyBVbnN0YWtpbmdUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICB1bnN0YWtpbmdUcmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRVbnN0YWtpbmdCdWlsZGVyKHVuc3Rha2luZ1RyYW5zYWN0aW9uKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFN0YWtpbmdCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248U3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IFN0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRVbnN0YWtpbmdCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248VW5zdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogVW5zdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBVbnN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8XG4gICAgVCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uIHwgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPlxuICA+KHR4OiBUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uIHwgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPiB8IHVuZGVmaW5lZCwgYnVpbGRlcjogVCk6IFQge1xuICAgIGlmICh0eCkge1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqIFBhcnNlIHRoZSB0cmFuc2FjdGlvbiBmcm9tIGEgcmF3IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIHRoZSByYXcgdHhcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9ufSBwYXJzZWR0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVRyYW5zYWN0aW9uKFxuICAgIHJhd1RyYW5zYWN0aW9uOiBzdHJpbmdcbiAgKTogU3VpVHJhbnNhY3Rpb248VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiB8IFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgfVxufVxuIl19
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBOEY7QUFDOUYsdURBQW9EO0FBRXBELCtDQUE0QztBQUM1QyxxREFBa0Q7QUFDbEQsbUNBV2lCO0FBQ2pCLDZEQUEwRDtBQUMxRCwrREFBNEQ7QUFFNUQsb0RBQTRCO0FBQzVCLHlEQUFzRDtBQUN0RCxpRUFBOEQ7QUFDOUQsMkRBQXdEO0FBQ3hELHlFQUFzRTtBQUN0RSxpRUFBOEQ7QUFDOUQseUVBQXNFO0FBQ3RFLGlFQUE4RDtBQUM5RCx5RUFBc0U7QUFDdEUsNkVBQTBFO0FBQzFFLHFGQUFrRjtBQUVsRixNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsZUFBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUM7WUFDSCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsS0FBSywwQkFBa0IsQ0FBQyxRQUFRO29CQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLHlDQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDN0QsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0MsS0FBSywwQkFBa0IsQ0FBQyxRQUFRO29CQUM5QixNQUFNLGtCQUFrQixHQUFH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O0lBQ3BGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsdUJBQXVCLENBQUMsRUFBc0Q7UUFDNUUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix1QkFBdUIsQ0FBQyxFQUFzRDtRQUM1RSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSwyQ0FBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG9DQUFvQyxDQUNsQyxFQUE0RDtRQUU1RCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx1REFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGlCQUFpQixDQUN2QixFQUF1RCxFQUN2RCxPQUFVO1FBRVYsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JBQWdCLENBQUMsY0FBc0I7UUFDN0MsT0FBTyx5QkFBVyxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRjtBQW5IRCw4REFtSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7XG4gIEN1c3RvbVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG4gIFN1aVRyYW5zYWN0aW9uLFxuICBTdWlUcmFuc2FjdGlvblR5cGUsXG4gIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG4gIFVuc3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbixcbiAgVG9rZW5UcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBXYWxydXNTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG4gIFdhbHJ1c1dpdGhkcmF3U3Rha2VQcm9ncmFtbWFibGVUcmFuc2FjdGlvbixcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBTdGFraW5nVHJhbnNhY3Rpb24gfSBmcm9tICcuL3N0YWtpbmdUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFVuc3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3Vuc3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHsgVW5zdGFraW5nVHJhbnNhY3Rpb24gfSBmcm9tICcuL3Vuc3Rha2luZ1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEN1c3RvbVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9jdXN0b21UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2N1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90b2tlblRyYW5zZmVyVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgV2FscnVzU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3dhbHJ1c1N0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IFdhbHJ1c1N0YWtpbmdUcmFuc2FjdGlvbiB9IGZyb20gJy4vd2FscnVzU3Rha2luZ1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFdhbHJ1c1dpdGhkcmF3U3Rha2VCdWlsZGVyIH0gZnJvbSAnLi93YWxydXNXaXRoZHJhd1N0YWtlQnVpbGRlcic7XG5pbXBvcnQgeyBXYWxydXNXaXRoZHJhd1N0YWtlVHJhbnNhY3Rpb24gfSBmcm9tICcuL3dhbHJ1c1dpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlcjxTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICBjb25zdCB0eCA9IHRoaXMucGFyc2VUcmFuc2FjdGlvbihyYXcpO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXI6XG4gICAgICAgICAgY29uc3QgdHJhbnNmZXJUeCA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIHRyYW5zZmVyVHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKHRyYW5zZmVyVHgpO1xuICAgICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5BZGRTdGFrZTpcbiAgICAgICAgICBjb25zdCBzdGFraW5nVHJhbnNhY3Rpb24gPSBuZXcgU3Rha2luZ1RyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIHN0YWtpbmdUcmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nQnVpbGRlcihzdGFraW5nVHJhbnNhY3Rpb24pO1xuICAgICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5XaXRoZHJhd1N0YWtlOlxuICAgICAgICAgIGNvbnN0IHVuc3Rha2luZ1RyYW5zYWN0aW9uID0gbmV3IFVuc3Rha2luZ1RyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIHVuc3Rha2luZ1RyYW5zYWN0aW9uLmZyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFVuc3Rha2luZ0J1aWxkZXIodW5zdGFraW5nVHJhbnNhY3Rpb24pO1xuICAgICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5DdXN0b21UeDpcbiAgICAgICAgICBjb25zdCBjdXN0b21UcmFuc2FjdGlvbiA9IG5ldyBDdXN0b21UcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICBjdXN0b21UcmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21UcmFuc2FjdGlvbkJ1aWxkZXIoY3VzdG9tVHJhbnNhY3Rpb24pO1xuICAgICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5Ub2tlblRyYW5zZmVyOlxuICAgICAgICAgIGNvbnN0IHRva2VuVHJhbnNmZXJUeCA9IG5ldyBUb2tlblRyYW5zZmVyVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgdG9rZW5UcmFuc2ZlclR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRva2VuVHJhbnNmZXJCdWlsZGVyKHRva2VuVHJhbnNmZXJUeCk7XG4gICAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLldhbHJ1c1N0YWtlV2l0aFBvb2w6XG4gICAgICAgICAgY29uc3Qgd2FscnVzU3Rha2VUeCA9IG5ldyBXYWxydXNTdGFraW5nVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgd2FscnVzU3Rha2VUeC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRXYWxydXNTdGFraW5nQnVpbGRlcih3YWxydXNTdGFrZVR4KTtcbiAgICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuV2FscnVzUmVxdWVzdFdpdGhkcmF3U3Rha2U6XG4gICAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLldhbHJ1c1dpdGhkcmF3U3Rha2U6XG4gICAgICAgICAgY29uc3Qgd2FscnVzUmVxdWVzdFdpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbiA9IG5ldyBXYWxydXNXaXRoZHJhd1N0YWtlVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgd2FscnVzUmVxdWVzdFdpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRXYWxydXNSZXF1ZXN0V2l0aGRyYXdTdGFrZUJ1aWxkZXIod2FscnVzUmVxdWVzdFdpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRTdGFraW5nQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uPFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4pOiBTdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBTdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VW5zdGFraW5nQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uPFVuc3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IFVuc3Rha2luZ0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVW5zdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0Q3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248Q3VzdG9tUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogQ3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEN1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbjxUb2tlblRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbHJ1c1N0YWtpbmdCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248V2FscnVzU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IFdhbHJ1c1N0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFdhbHJ1c1N0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxydXNSZXF1ZXN0V2l0aGRyYXdTdGFrZUJ1aWxkZXIoXG4gICAgdHg/OiBUcmFuc2FjdGlvbjxXYWxydXNXaXRoZHJhd1N0YWtlUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+XG4gICk6IFdhbHJ1c1dpdGhkcmF3U3Rha2VCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFdhbHJ1c1dpdGhkcmF3U3Rha2VCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcjxTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4+KFxuICAgIHR4OiBUcmFuc2FjdGlvbjxTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4gfCB1bmRlZmluZWQsXG4gICAgYnVpbGRlcjogVFxuICApOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIC8qKiBQYXJzZSB0aGUgdHJhbnNhY3Rpb24gZnJvbSBhIHJhdyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb24gLSB0aGUgcmF3IHR4XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbn0gcGFyc2VkdHJhbnNhY3Rpb25cbiAgICovXG4gIHByaXZhdGUgcGFyc2VUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogU3VpVHJhbnNhY3Rpb248U3VpUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb24uZGVzZXJpYWxpemVTdWlUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAyB,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAsB,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,qBAAa,eAAgB,SAAQ,kBAAkB,CAAC,+BAA+B,CAAC;IACtF,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;gBAEvB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAMnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAO3D,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAKxB,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,CAAC,+BAA+B,CAAC;IAQlG,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAgB5F;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI;IAgB1C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAWjC;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,IAAI,cAAc,CAAC,+BAA+B,CAAC;CA0BjF"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAyB,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAsB,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAU5D,qBAAa,eAAgB,SAAQ,kBAAkB,CAAC,+BAA+B,CAAC;IACtF,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;gBAEvB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAMnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAO3D,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAKxB,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,CAAC,+BAA+B,CAAC;IAQlG,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAgB5F;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI;IAgB1C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAWjC;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,IAAI,cAAc,CAAC,+BAA+B,CAAC;CA+CjF"}