@bitgo-beta/sdk-coin-sui 1.4.1-alpha.31 → 1.4.1-alpha.310

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 (162) hide show
  1. package/.mocharc.yml +1 -2
  2. package/CHANGELOG.md +897 -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 +11 -3
  10. package/dist/src/lib/constants.d.ts.map +1 -1
  11. package/dist/src/lib/constants.js +20 -3
  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 +86 -27
  19. package/dist/src/lib/iface.d.ts.map +1 -1
  20. package/dist/src/lib/iface.js +39 -10
  21. package/dist/src/lib/index.d.ts +10 -0
  22. package/dist/src/lib/index.d.ts.map +1 -1
  23. package/dist/src/lib/index.js +44 -10
  24. package/dist/src/lib/keyPair.d.ts.map +1 -1
  25. package/dist/src/lib/keyPair.js +25 -21
  26. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +6 -6
  27. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -1
  28. package/dist/src/lib/mystenlab/builder/Inputs.js +19 -20
  29. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +302 -0
  30. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -0
  31. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +255 -0
  32. package/dist/src/lib/mystenlab/builder/{TransactionData.d.ts → TransactionDataBlock.d.ts} +62 -62
  33. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -0
  34. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +168 -0
  35. package/dist/src/lib/mystenlab/builder/{Commands.d.ts → Transactions.d.ts} +103 -158
  36. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -0
  37. package/dist/src/lib/mystenlab/builder/Transactions.js +118 -0
  38. package/dist/src/lib/mystenlab/builder/bcs.d.ts +6 -6
  39. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -1
  40. package/dist/src/lib/mystenlab/builder/bcs.js +16 -16
  41. package/dist/src/lib/mystenlab/builder/index.d.ts +2 -2
  42. package/dist/src/lib/mystenlab/builder/index.d.ts.map +1 -1
  43. package/dist/src/lib/mystenlab/builder/index.js +8 -4
  44. package/dist/src/lib/mystenlab/builder/serializer.d.ts.map +1 -1
  45. package/dist/src/lib/mystenlab/builder/serializer.js +6 -11
  46. package/dist/src/lib/mystenlab/builder/utils.d.ts +2 -5
  47. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -1
  48. package/dist/src/lib/mystenlab/builder/utils.js +5 -5
  49. package/dist/src/lib/mystenlab/cryptography/hash.js +3 -4
  50. package/dist/src/lib/mystenlab/framework/framework.d.ts +8 -7
  51. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -1
  52. package/dist/src/lib/mystenlab/framework/framework.js +23 -27
  53. package/dist/src/lib/mystenlab/framework/index.d.ts.map +1 -1
  54. package/dist/src/lib/mystenlab/framework/index.js +6 -4
  55. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts +4 -23
  56. package/dist/src/lib/mystenlab/framework/sui-system-state.d.ts.map +1 -1
  57. package/dist/src/lib/mystenlab/framework/sui-system-state.js +11 -40
  58. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.d.ts.map +1 -0
  59. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +119 -0
  60. package/dist/src/lib/mystenlab/types/coin.d.ts +10 -10
  61. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -1
  62. package/dist/src/lib/mystenlab/types/coin.js +19 -19
  63. package/dist/src/lib/mystenlab/types/common.d.ts +8 -8
  64. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -1
  65. package/dist/src/lib/mystenlab/types/common.js +22 -22
  66. package/dist/src/lib/mystenlab/types/events.d.ts +14 -14
  67. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -1
  68. package/dist/src/lib/mystenlab/types/events.js +17 -17
  69. package/dist/src/lib/mystenlab/types/index.d.ts.map +1 -1
  70. package/dist/src/lib/mystenlab/types/index.js +6 -5
  71. package/dist/src/lib/mystenlab/types/normalized.d.ts +21 -21
  72. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -1
  73. package/dist/src/lib/mystenlab/types/normalized.js +42 -43
  74. package/dist/src/lib/mystenlab/types/objects.d.ts +95 -78
  75. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -1
  76. package/dist/src/lib/mystenlab/types/objects.js +98 -104
  77. package/dist/src/lib/mystenlab/types/option.d.ts +1 -1
  78. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -1
  79. package/dist/src/lib/mystenlab/types/option.js +2 -3
  80. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +10 -9
  81. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -1
  82. package/dist/src/lib/mystenlab/types/sui-bcs.js +4 -4
  83. package/dist/src/lib/mystenlab/types/transactions.d.ts +3262 -1046
  84. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -1
  85. package/dist/src/lib/mystenlab/types/transactions.js +209 -187
  86. package/dist/src/lib/mystenlab/types/validator.d.ts +641 -0
  87. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -0
  88. package/dist/src/lib/mystenlab/types/validator.js +156 -0
  89. package/dist/src/lib/resources/walrusConfig.d.ts +22 -0
  90. package/dist/src/lib/resources/walrusConfig.d.ts.map +1 -0
  91. package/dist/src/lib/resources/walrusConfig.js +37 -0
  92. package/dist/src/lib/rpcClient.d.ts +5 -0
  93. package/dist/src/lib/rpcClient.d.ts.map +1 -0
  94. package/dist/src/lib/rpcClient.js +74 -0
  95. package/dist/src/lib/stakingBuilder.d.ts +15 -15
  96. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  97. package/dist/src/lib/stakingBuilder.js +113 -44
  98. package/dist/src/lib/stakingTransaction.d.ts +2 -10
  99. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  100. package/dist/src/lib/stakingTransaction.js +97 -35
  101. package/dist/src/lib/tokenTransferBuilder.d.ts +38 -0
  102. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  103. package/dist/src/lib/tokenTransferBuilder.js +132 -0
  104. package/dist/src/lib/tokenTransferTransaction.d.ts +57 -0
  105. package/dist/src/lib/tokenTransferTransaction.d.ts.map +1 -0
  106. package/dist/src/lib/tokenTransferTransaction.js +250 -0
  107. package/dist/src/lib/transaction.d.ts +16 -6
  108. package/dist/src/lib/transaction.d.ts.map +1 -1
  109. package/dist/src/lib/transaction.js +126 -26
  110. package/dist/src/lib/transactionBuilder.d.ts +2 -3
  111. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  112. package/dist/src/lib/transactionBuilder.js +4 -4
  113. package/dist/src/lib/transactionBuilderFactory.d.ts +17 -2
  114. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  115. package/dist/src/lib/transactionBuilderFactory.js +52 -2
  116. package/dist/src/lib/transferBuilder.d.ts +3 -1
  117. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  118. package/dist/src/lib/transferBuilder.js +34 -11
  119. package/dist/src/lib/transferTransaction.d.ts +1 -1
  120. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  121. package/dist/src/lib/transferTransaction.js +33 -18
  122. package/dist/src/lib/unstakingBuilder.d.ts +62 -0
  123. package/dist/src/lib/unstakingBuilder.d.ts.map +1 -0
  124. package/dist/src/lib/unstakingBuilder.js +227 -0
  125. package/dist/src/lib/unstakingTransaction.d.ts +75 -0
  126. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -0
  127. package/dist/src/lib/unstakingTransaction.js +345 -0
  128. package/dist/src/lib/utils.d.ts +51 -7
  129. package/dist/src/lib/utils.d.ts.map +1 -1
  130. package/dist/src/lib/utils.js +362 -27
  131. package/dist/src/lib/walrusStakingBuilder.d.ts +66 -0
  132. package/dist/src/lib/walrusStakingBuilder.d.ts.map +1 -0
  133. package/dist/src/lib/walrusStakingBuilder.js +200 -0
  134. package/dist/src/lib/walrusStakingTransaction.d.ts +52 -0
  135. package/dist/src/lib/walrusStakingTransaction.d.ts.map +1 -0
  136. package/dist/src/lib/walrusStakingTransaction.js +269 -0
  137. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts +36 -0
  138. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts.map +1 -0
  139. package/dist/src/lib/walrusWithdrawStakeBuilder.js +173 -0
  140. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts +21 -0
  141. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts.map +1 -0
  142. package/dist/src/lib/walrusWithdrawStakeTransaction.js +186 -0
  143. package/dist/src/register.d.ts.map +1 -1
  144. package/dist/src/register.js +5 -1
  145. package/dist/src/sui.d.ts +44 -8
  146. package/dist/src/sui.d.ts.map +1 -1
  147. package/dist/src/sui.js +484 -42
  148. package/dist/src/suiToken.d.ts +22 -0
  149. package/dist/src/suiToken.d.ts.map +1 -0
  150. package/dist/src/suiToken.js +61 -0
  151. package/dist/src/tsui.js +1 -1
  152. package/package.json +15 -12
  153. package/dist/src/lib/mystenlab/builder/Commands.d.ts.map +0 -1
  154. package/dist/src/lib/mystenlab/builder/Commands.js +0 -119
  155. package/dist/src/lib/mystenlab/builder/Transaction.d.ts +0 -609
  156. package/dist/src/lib/mystenlab/builder/Transaction.d.ts.map +0 -1
  157. package/dist/src/lib/mystenlab/builder/Transaction.js +0 -254
  158. package/dist/src/lib/mystenlab/builder/TransactionData.d.ts.map +0 -1
  159. package/dist/src/lib/mystenlab/builder/TransactionData.js +0 -171
  160. package/dist/src/lib/mystenlab/builder/type-tag-serializer.d.ts.map +0 -1
  161. package/dist/src/lib/mystenlab/builder/type-tag-serializer.js +0 -119
  162. /package/dist/src/lib/mystenlab/{builder → txn-data-serializers}/type-tag-serializer.d.ts +0 -0
@@ -1,200 +1,247 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getExecutionStatusGasSummary = exports.getExecutionStatusError = exports.getExecutionStatus = exports.getExecutionStatusType = exports.getProgrammableTransaction = exports.getTransactionKindName = exports.getTransactionKind = exports.getConsensusCommitPrologueTransaction = exports.getChangeEpochTransaction = exports.getTransactionGasBudget = exports.getTransactionGasPrice = exports.getTransactionGasObject = exports.getGasData = exports.getTransactionSender = exports.getTransactionSignature = exports.getTransactionDigest = exports.getTransaction = exports.PaginatedTransactionResponse = exports.SuiTransactionResponseOptions = exports.SuiTransactionResponse = exports.SuiObjectChange = exports.SuiObjectChangeCreated = exports.SuiObjectChangeWrapped = exports.SuiObjectChangeDeleted = exports.SuiObjectChangeMutated = exports.SuiObjectChangeTransferred = exports.SuiObjectChangePublished = exports.SuiTransaction = exports.AuthorityName = exports.GetTxnDigestsResponse = exports.DevInspectResults = exports.DryRunTransactionResponse = exports.TransactionEvents = exports.TransactionEffects = exports.OwnedObjectRef = exports.ExecutionStatus = exports.ExecutionStatusType = exports.GasCostSummary = exports.AuthorityQuorumSignInfo = exports.GenericAuthoritySignature = exports.AuthoritySignature = exports.SuiTransactionData = exports.SuiTransactionKind = exports.ProgrammableTransaction = exports.SuiCommand = exports.SuiArgument = exports.Genesis = exports.SuiConsensusCommitPrologue = exports.SuiChangeEpoch = exports.EpochId = void 0;
4
- exports.getPublishedObjectChanges = exports.getObjectChanges = exports.getNewlyCreatedCoinRefsAfterSplit = exports.getTimestampFromTransactionResponse = exports.getCreatedObjects = exports.getEvents = exports.getTransactionEffects = exports.getTotalGasUsedUpperBound = exports.getTotalGasUsed = void 0;
3
+ exports.DryRunTransactionBlockResponse = exports.PaginatedTransactionResponse = exports.SuiTransactionBlockResponseOptions = exports.SuiTransactionBlockResponse = exports.BalanceChange = exports.SuiObjectChange = exports.SuiObjectChangeCreated = exports.SuiObjectChangeWrapped = exports.SuiObjectChangeDeleted = exports.SuiObjectChangeMutated = exports.SuiObjectChangeTransferred = exports.SuiObjectChangePublished = exports.SuiTransactionBlock = exports.AuthorityName = exports.DevInspectResults = exports.TransactionEvents = exports.TransactionEffects = exports.TransactionEffectsModifiedAtVersions = exports.OwnedObjectRef = exports.ExecutionStatus = exports.ExecutionStatusType = exports.GasCostSummary = exports.AuthorityQuorumSignInfo = exports.GenericAuthoritySignature = exports.AuthoritySignature = exports.SuiTransactionBlockData = exports.SuiTransactionBlockKind = exports.ProgrammableTransaction = exports.SuiCallArg = exports.SuiTransaction = exports.MoveCallSuiTransaction = exports.SuiArgument = exports.Genesis = exports.SuiConsensusCommitPrologue = exports.SuiChangeEpoch = exports.EpochId = void 0;
4
+ exports.getTransaction = getTransaction;
5
+ exports.getTransactionDigest = getTransactionDigest;
6
+ exports.getTransactionSignature = getTransactionSignature;
7
+ exports.getTransactionSender = getTransactionSender;
8
+ exports.getGasData = getGasData;
9
+ exports.getTransactionGasObject = getTransactionGasObject;
10
+ exports.getTransactionGasPrice = getTransactionGasPrice;
11
+ exports.getTransactionGasBudget = getTransactionGasBudget;
12
+ exports.getChangeEpochTransaction = getChangeEpochTransaction;
13
+ exports.getConsensusCommitPrologueTransaction = getConsensusCommitPrologueTransaction;
14
+ exports.getTransactionKind = getTransactionKind;
15
+ exports.getTransactionKindName = getTransactionKindName;
16
+ exports.getProgrammableTransaction = getProgrammableTransaction;
17
+ exports.getExecutionStatusType = getExecutionStatusType;
18
+ exports.getExecutionStatus = getExecutionStatus;
19
+ exports.getExecutionStatusError = getExecutionStatusError;
20
+ exports.getExecutionStatusGasSummary = getExecutionStatusGasSummary;
21
+ exports.getTotalGasUsed = getTotalGasUsed;
22
+ exports.getTotalGasUsedUpperBound = getTotalGasUsedUpperBound;
23
+ exports.getTransactionEffects = getTransactionEffects;
24
+ exports.getEvents = getEvents;
25
+ exports.getCreatedObjects = getCreatedObjects;
26
+ exports.getTimestampFromTransactionResponse = getTimestampFromTransactionResponse;
27
+ exports.getNewlyCreatedCoinRefsAfterSplit = getNewlyCreatedCoinRefsAfterSplit;
28
+ exports.getObjectChanges = getObjectChanges;
29
+ exports.getPublishedObjectChanges = getPublishedObjectChanges;
5
30
  const superstruct_1 = require("superstruct");
31
+ const common_1 = require("./common");
6
32
  const events_1 = require("./events");
7
33
  const objects_1 = require("./objects");
8
- const common_1 = require("./common");
9
- // TODO: support u64
10
- exports.EpochId = superstruct_1.number();
11
- exports.SuiChangeEpoch = superstruct_1.object({
34
+ exports.EpochId = (0, superstruct_1.string)();
35
+ exports.SuiChangeEpoch = (0, superstruct_1.object)({
12
36
  epoch: exports.EpochId,
13
- storage_charge: superstruct_1.number(),
14
- computation_charge: superstruct_1.number(),
15
- storage_rebate: superstruct_1.number(),
16
- epoch_start_timestamp_ms: superstruct_1.optional(superstruct_1.number()),
37
+ storage_charge: (0, superstruct_1.number)(),
38
+ computation_charge: (0, superstruct_1.number)(),
39
+ storage_rebate: (0, superstruct_1.number)(),
40
+ epoch_start_timestamp_ms: (0, superstruct_1.optional)((0, superstruct_1.number)()),
41
+ });
42
+ exports.SuiConsensusCommitPrologue = (0, superstruct_1.object)({
43
+ epoch: (0, superstruct_1.number)(),
44
+ round: (0, superstruct_1.number)(),
45
+ commit_timestamp_ms: (0, superstruct_1.number)(),
17
46
  });
18
- exports.SuiConsensusCommitPrologue = superstruct_1.object({
19
- epoch: superstruct_1.number(),
20
- round: superstruct_1.number(),
21
- commit_timestamp_ms: superstruct_1.number(),
47
+ exports.Genesis = (0, superstruct_1.object)({
48
+ objects: (0, superstruct_1.array)(common_1.ObjectId),
22
49
  });
23
- exports.Genesis = superstruct_1.object({
24
- objects: superstruct_1.array(common_1.ObjectId),
50
+ exports.SuiArgument = (0, superstruct_1.union)([
51
+ (0, superstruct_1.literal)('GasCoin'),
52
+ (0, superstruct_1.object)({ Input: (0, superstruct_1.number)() }),
53
+ (0, superstruct_1.object)({ Result: (0, superstruct_1.number)() }),
54
+ (0, superstruct_1.object)({ NestedResult: (0, superstruct_1.tuple)([(0, superstruct_1.number)(), (0, superstruct_1.number)()]) }),
55
+ ]);
56
+ exports.MoveCallSuiTransaction = (0, superstruct_1.object)({
57
+ arguments: (0, superstruct_1.optional)((0, superstruct_1.array)(exports.SuiArgument)),
58
+ type_arguments: (0, superstruct_1.optional)((0, superstruct_1.array)((0, superstruct_1.string)())),
59
+ package: common_1.ObjectId,
60
+ module: (0, superstruct_1.string)(),
61
+ function: (0, superstruct_1.string)(),
25
62
  });
26
- exports.SuiArgument = superstruct_1.union([
27
- superstruct_1.literal('GasCoin'),
28
- superstruct_1.object({ Input: superstruct_1.number() }),
29
- superstruct_1.object({ Result: superstruct_1.number() }),
30
- superstruct_1.object({ NestedResult: superstruct_1.tuple([superstruct_1.number(), superstruct_1.number()]) }),
63
+ exports.SuiTransaction = (0, superstruct_1.union)([
64
+ (0, superstruct_1.object)({ MoveCall: exports.MoveCallSuiTransaction }),
65
+ (0, superstruct_1.object)({ TransferObjects: (0, superstruct_1.tuple)([(0, superstruct_1.array)(exports.SuiArgument), exports.SuiArgument]) }),
66
+ (0, superstruct_1.object)({ SplitCoins: (0, superstruct_1.tuple)([exports.SuiArgument, (0, superstruct_1.array)(exports.SuiArgument)]) }),
67
+ (0, superstruct_1.object)({ MergeCoins: (0, superstruct_1.tuple)([exports.SuiArgument, (0, superstruct_1.array)(exports.SuiArgument)]) }),
68
+ (0, superstruct_1.object)({ Publish: objects_1.SuiMovePackage }),
69
+ (0, superstruct_1.object)({ MakeMoveVec: (0, superstruct_1.tuple)([(0, superstruct_1.nullable)((0, superstruct_1.string)()), (0, superstruct_1.array)(exports.SuiArgument)]) }),
31
70
  ]);
32
- exports.SuiCommand = superstruct_1.union([
33
- superstruct_1.object({
34
- MoveCall: superstruct_1.object({
35
- arguments: superstruct_1.array(exports.SuiArgument),
36
- type_arguments: superstruct_1.array(superstruct_1.string()),
37
- package: common_1.ObjectId,
38
- module: superstruct_1.string(),
39
- function: superstruct_1.string(),
40
- }),
71
+ exports.SuiCallArg = (0, superstruct_1.union)([
72
+ (0, superstruct_1.object)({
73
+ type: (0, superstruct_1.literal)('pure'),
74
+ valueType: (0, superstruct_1.optional)((0, superstruct_1.string)()),
75
+ value: common_1.SuiJsonValue,
76
+ }),
77
+ (0, superstruct_1.object)({
78
+ type: (0, superstruct_1.literal)('object'),
79
+ objectType: (0, superstruct_1.literal)('immOrOwnedObject'),
80
+ objectId: common_1.ObjectId,
81
+ version: common_1.SequenceNumber,
82
+ digest: objects_1.ObjectDigest,
83
+ }),
84
+ (0, superstruct_1.object)({
85
+ type: (0, superstruct_1.literal)('object'),
86
+ objectType: (0, superstruct_1.literal)('sharedObject'),
87
+ objectId: common_1.ObjectId,
88
+ initialSharedVersion: common_1.SequenceNumber,
89
+ mutable: (0, superstruct_1.boolean)(),
41
90
  }),
42
- superstruct_1.object({ TransferObjects: superstruct_1.tuple([superstruct_1.array(exports.SuiArgument), exports.SuiArgument]) }),
43
- superstruct_1.object({ SplitCoin: superstruct_1.tuple([exports.SuiArgument, common_1.SuiAddress]) }),
44
- superstruct_1.object({ MergeCoins: superstruct_1.tuple([exports.SuiArgument, superstruct_1.array(exports.SuiArgument)]) }),
45
- superstruct_1.object({ Publish: objects_1.SuiMovePackage }),
46
- superstruct_1.object({ MakeMoveVec: superstruct_1.tuple([superstruct_1.nullable(superstruct_1.string()), superstruct_1.array(exports.SuiArgument)]) }),
47
91
  ]);
48
- exports.ProgrammableTransaction = superstruct_1.object({
49
- inputs: superstruct_1.array(common_1.SuiJsonValue),
50
- commands: superstruct_1.array(),
92
+ exports.ProgrammableTransaction = (0, superstruct_1.object)({
93
+ transactions: (0, superstruct_1.array)(exports.SuiTransaction),
94
+ inputs: (0, superstruct_1.array)(exports.SuiCallArg),
51
95
  });
52
- exports.SuiTransactionKind = superstruct_1.union([
53
- superstruct_1.assign(exports.SuiChangeEpoch, superstruct_1.object({ kind: superstruct_1.literal('ChangeEpoch') })),
54
- superstruct_1.assign(exports.SuiConsensusCommitPrologue, superstruct_1.object({
55
- kind: superstruct_1.literal('ConsensusCommitPrologue'),
96
+ exports.SuiTransactionBlockKind = (0, superstruct_1.union)([
97
+ (0, superstruct_1.assign)(exports.SuiChangeEpoch, (0, superstruct_1.object)({ kind: (0, superstruct_1.literal)('ChangeEpoch') })),
98
+ (0, superstruct_1.assign)(exports.SuiConsensusCommitPrologue, (0, superstruct_1.object)({
99
+ kind: (0, superstruct_1.literal)('ConsensusCommitPrologue'),
56
100
  })),
57
- superstruct_1.assign(exports.Genesis, superstruct_1.object({ kind: superstruct_1.literal('Genesis') })),
58
- superstruct_1.assign(exports.ProgrammableTransaction, superstruct_1.object({ kind: superstruct_1.literal('ProgrammableTransaction') })),
101
+ (0, superstruct_1.assign)(exports.Genesis, (0, superstruct_1.object)({ kind: (0, superstruct_1.literal)('Genesis') })),
102
+ (0, superstruct_1.assign)(exports.ProgrammableTransaction, (0, superstruct_1.object)({ kind: (0, superstruct_1.literal)('ProgrammableTransaction') })),
59
103
  ]);
60
- exports.SuiTransactionData = superstruct_1.object({
104
+ exports.SuiTransactionBlockData = (0, superstruct_1.object)({
61
105
  // Eventually this will become union(literal('v1'), literal('v2'), ...)
62
- messageVersion: superstruct_1.literal('v1'),
63
- transaction: exports.SuiTransactionKind,
106
+ messageVersion: (0, superstruct_1.literal)('v1'),
107
+ transaction: exports.SuiTransactionBlockKind,
64
108
  sender: common_1.SuiAddress,
65
109
  gasData: objects_1.SuiGasData,
66
110
  });
67
- exports.AuthoritySignature = superstruct_1.string();
68
- exports.GenericAuthoritySignature = superstruct_1.union([exports.AuthoritySignature, superstruct_1.array(exports.AuthoritySignature)]);
69
- exports.AuthorityQuorumSignInfo = superstruct_1.object({
111
+ exports.AuthoritySignature = (0, superstruct_1.string)();
112
+ exports.GenericAuthoritySignature = (0, superstruct_1.union)([exports.AuthoritySignature, (0, superstruct_1.array)(exports.AuthoritySignature)]);
113
+ exports.AuthorityQuorumSignInfo = (0, superstruct_1.object)({
70
114
  epoch: exports.EpochId,
71
115
  signature: exports.GenericAuthoritySignature,
72
- signers_map: superstruct_1.array(superstruct_1.number()),
116
+ signers_map: (0, superstruct_1.array)((0, superstruct_1.number)()),
73
117
  });
74
- exports.GasCostSummary = superstruct_1.object({
75
- computationCost: superstruct_1.number(),
76
- storageCost: superstruct_1.number(),
77
- storageRebate: superstruct_1.number(),
118
+ exports.GasCostSummary = (0, superstruct_1.object)({
119
+ computationCost: (0, superstruct_1.string)(),
120
+ storageCost: (0, superstruct_1.string)(),
121
+ storageRebate: (0, superstruct_1.string)(),
122
+ nonRefundableStorageFee: (0, superstruct_1.string)(),
78
123
  });
79
- exports.ExecutionStatusType = superstruct_1.union([superstruct_1.literal('success'), superstruct_1.literal('failure')]);
80
- exports.ExecutionStatus = superstruct_1.object({
124
+ exports.ExecutionStatusType = (0, superstruct_1.union)([(0, superstruct_1.literal)('success'), (0, superstruct_1.literal)('failure')]);
125
+ exports.ExecutionStatus = (0, superstruct_1.object)({
81
126
  status: exports.ExecutionStatusType,
82
- error: superstruct_1.optional(superstruct_1.string()),
127
+ error: (0, superstruct_1.optional)((0, superstruct_1.string)()),
83
128
  });
84
- exports.OwnedObjectRef = superstruct_1.object({
129
+ exports.OwnedObjectRef = (0, superstruct_1.object)({
85
130
  owner: common_1.ObjectOwner,
86
131
  reference: objects_1.SuiObjectRef,
87
132
  });
88
- exports.TransactionEffects = superstruct_1.object({
133
+ exports.TransactionEffectsModifiedAtVersions = (0, superstruct_1.object)({
134
+ objectId: common_1.ObjectId,
135
+ sequenceNumber: common_1.SequenceNumber,
136
+ });
137
+ exports.TransactionEffects = (0, superstruct_1.object)({
89
138
  // Eventually this will become union(literal('v1'), literal('v2'), ...)
90
- messageVersion: superstruct_1.literal('v1'),
139
+ messageVersion: (0, superstruct_1.literal)('v1'),
91
140
  /** The status of the execution */
92
141
  status: exports.ExecutionStatus,
93
142
  /** The epoch when this transaction was executed */
94
143
  executedEpoch: exports.EpochId,
144
+ /** The version that every modified (mutated or deleted) object had before it was modified by this transaction. **/
145
+ modifiedAtVersions: (0, superstruct_1.optional)((0, superstruct_1.array)(exports.TransactionEffectsModifiedAtVersions)),
95
146
  gasUsed: exports.GasCostSummary,
96
147
  /** The object references of the shared objects used in this transaction. Empty if no shared objects were used. */
97
- sharedObjects: superstruct_1.optional(superstruct_1.array(objects_1.SuiObjectRef)),
148
+ sharedObjects: (0, superstruct_1.optional)((0, superstruct_1.array)(objects_1.SuiObjectRef)),
98
149
  /** The transaction digest */
99
150
  transactionDigest: common_1.TransactionDigest,
100
151
  /** ObjectRef and owner of new objects created */
101
- created: superstruct_1.optional(superstruct_1.array(exports.OwnedObjectRef)),
152
+ created: (0, superstruct_1.optional)((0, superstruct_1.array)(exports.OwnedObjectRef)),
102
153
  /** ObjectRef and owner of mutated objects, including gas object */
103
- mutated: superstruct_1.optional(superstruct_1.array(exports.OwnedObjectRef)),
154
+ mutated: (0, superstruct_1.optional)((0, superstruct_1.array)(exports.OwnedObjectRef)),
104
155
  /**
105
156
  * ObjectRef and owner of objects that are unwrapped in this transaction.
106
157
  * Unwrapped objects are objects that were wrapped into other objects in the past,
107
158
  * and just got extracted out.
108
159
  */
109
- unwrapped: superstruct_1.optional(superstruct_1.array(exports.OwnedObjectRef)),
160
+ unwrapped: (0, superstruct_1.optional)((0, superstruct_1.array)(exports.OwnedObjectRef)),
110
161
  /** Object Refs of objects now deleted (the old refs) */
111
- deleted: superstruct_1.optional(superstruct_1.array(objects_1.SuiObjectRef)),
162
+ deleted: (0, superstruct_1.optional)((0, superstruct_1.array)(objects_1.SuiObjectRef)),
112
163
  /** Object Refs of objects now deleted (the old refs) */
113
- unwrapped_then_deleted: superstruct_1.optional(superstruct_1.array(objects_1.SuiObjectRef)),
164
+ unwrapped_then_deleted: (0, superstruct_1.optional)((0, superstruct_1.array)(objects_1.SuiObjectRef)),
114
165
  /** Object refs of objects now wrapped in other objects */
115
- wrapped: superstruct_1.optional(superstruct_1.array(objects_1.SuiObjectRef)),
166
+ wrapped: (0, superstruct_1.optional)((0, superstruct_1.array)(objects_1.SuiObjectRef)),
116
167
  /**
117
168
  * The updated gas object reference. Have a dedicated field for convenient access.
118
169
  * It's also included in mutated.
119
170
  */
120
171
  gasObject: exports.OwnedObjectRef,
121
172
  /** The events emitted during execution. Note that only successful transactions emit events */
122
- eventsDigest: superstruct_1.optional(common_1.TransactionEventDigest),
173
+ eventsDigest: (0, superstruct_1.optional)(common_1.TransactionEventDigest),
123
174
  /** The set of transaction digests this transaction depends on */
124
- dependencies: superstruct_1.optional(superstruct_1.array(common_1.TransactionDigest)),
175
+ dependencies: (0, superstruct_1.optional)((0, superstruct_1.array)(common_1.TransactionDigest)),
125
176
  });
126
- exports.TransactionEvents = superstruct_1.array(events_1.SuiEvent);
127
- exports.DryRunTransactionResponse = superstruct_1.object({
128
- effects: exports.TransactionEffects,
129
- events: exports.TransactionEvents,
130
- });
131
- const ReturnValueType = superstruct_1.tuple([superstruct_1.array(superstruct_1.number()), superstruct_1.string()]);
132
- const MutableReferenceOutputType = superstruct_1.tuple([exports.SuiArgument, superstruct_1.array(superstruct_1.number()), superstruct_1.string()]);
133
- const ExecutionResultType = superstruct_1.object({
134
- mutableReferenceOutputs: superstruct_1.optional(superstruct_1.array(MutableReferenceOutputType)),
135
- returnValues: superstruct_1.optional(superstruct_1.array(ReturnValueType)),
177
+ exports.TransactionEvents = (0, superstruct_1.array)(events_1.SuiEvent);
178
+ const ReturnValueType = (0, superstruct_1.tuple)([(0, superstruct_1.array)((0, superstruct_1.number)()), (0, superstruct_1.string)()]);
179
+ const MutableReferenceOutputType = (0, superstruct_1.tuple)([exports.SuiArgument, (0, superstruct_1.array)((0, superstruct_1.number)()), (0, superstruct_1.string)()]);
180
+ const ExecutionResultType = (0, superstruct_1.object)({
181
+ mutableReferenceOutputs: (0, superstruct_1.optional)((0, superstruct_1.array)(MutableReferenceOutputType)),
182
+ returnValues: (0, superstruct_1.optional)((0, superstruct_1.array)(ReturnValueType)),
136
183
  });
137
- const DevInspectResultsType = superstruct_1.union([superstruct_1.object({ Ok: superstruct_1.array(ExecutionResultType) }), superstruct_1.object({ Err: superstruct_1.string() })]);
138
- exports.DevInspectResults = superstruct_1.object({
184
+ exports.DevInspectResults = (0, superstruct_1.object)({
139
185
  effects: exports.TransactionEffects,
140
186
  events: exports.TransactionEvents,
141
- results: DevInspectResultsType,
187
+ results: (0, superstruct_1.optional)((0, superstruct_1.array)(ExecutionResultType)),
188
+ error: (0, superstruct_1.optional)((0, superstruct_1.string)()),
142
189
  });
143
- exports.GetTxnDigestsResponse = superstruct_1.array(common_1.TransactionDigest);
144
- exports.AuthorityName = superstruct_1.string();
145
- exports.SuiTransaction = superstruct_1.object({
146
- data: exports.SuiTransactionData,
147
- txSignatures: superstruct_1.array(superstruct_1.string()),
190
+ exports.AuthorityName = (0, superstruct_1.string)();
191
+ exports.SuiTransactionBlock = (0, superstruct_1.object)({
192
+ data: exports.SuiTransactionBlockData,
193
+ txSignatures: (0, superstruct_1.array)((0, superstruct_1.string)()),
148
194
  });
149
- exports.SuiObjectChangePublished = superstruct_1.object({
150
- type: superstruct_1.literal('published'),
195
+ exports.SuiObjectChangePublished = (0, superstruct_1.object)({
196
+ type: (0, superstruct_1.literal)('published'),
151
197
  packageId: common_1.ObjectId,
152
198
  version: common_1.SequenceNumber,
153
199
  digest: objects_1.ObjectDigest,
154
- modules: superstruct_1.array(superstruct_1.string()),
200
+ modules: (0, superstruct_1.array)((0, superstruct_1.string)()),
155
201
  });
156
- exports.SuiObjectChangeTransferred = superstruct_1.object({
157
- type: superstruct_1.literal('transferred'),
202
+ exports.SuiObjectChangeTransferred = (0, superstruct_1.object)({
203
+ type: (0, superstruct_1.literal)('transferred'),
158
204
  sender: common_1.SuiAddress,
159
205
  recipient: common_1.ObjectOwner,
160
- objectType: superstruct_1.string(),
206
+ objectType: (0, superstruct_1.string)(),
161
207
  objectId: common_1.ObjectId,
162
208
  version: common_1.SequenceNumber,
163
209
  digest: objects_1.ObjectDigest,
164
210
  });
165
- exports.SuiObjectChangeMutated = superstruct_1.object({
166
- type: superstruct_1.literal('mutated'),
211
+ exports.SuiObjectChangeMutated = (0, superstruct_1.object)({
212
+ type: (0, superstruct_1.literal)('mutated'),
167
213
  sender: common_1.SuiAddress,
168
214
  owner: common_1.ObjectOwner,
169
- objectType: superstruct_1.string(),
215
+ objectType: (0, superstruct_1.string)(),
170
216
  objectId: common_1.ObjectId,
171
217
  version: common_1.SequenceNumber,
218
+ previousVersion: common_1.SequenceNumber,
172
219
  digest: objects_1.ObjectDigest,
173
220
  });
174
- exports.SuiObjectChangeDeleted = superstruct_1.object({
175
- type: superstruct_1.literal('deleted'),
221
+ exports.SuiObjectChangeDeleted = (0, superstruct_1.object)({
222
+ type: (0, superstruct_1.literal)('deleted'),
176
223
  sender: common_1.SuiAddress,
177
- objectType: superstruct_1.string(),
224
+ objectType: (0, superstruct_1.string)(),
178
225
  objectId: common_1.ObjectId,
179
226
  version: common_1.SequenceNumber,
180
227
  });
181
- exports.SuiObjectChangeWrapped = superstruct_1.object({
182
- type: superstruct_1.literal('wrapped'),
228
+ exports.SuiObjectChangeWrapped = (0, superstruct_1.object)({
229
+ type: (0, superstruct_1.literal)('wrapped'),
183
230
  sender: common_1.SuiAddress,
184
- objectType: superstruct_1.string(),
231
+ objectType: (0, superstruct_1.string)(),
185
232
  objectId: common_1.ObjectId,
186
233
  version: common_1.SequenceNumber,
187
234
  });
188
- exports.SuiObjectChangeCreated = superstruct_1.object({
189
- type: superstruct_1.literal('created'),
235
+ exports.SuiObjectChangeCreated = (0, superstruct_1.object)({
236
+ type: (0, superstruct_1.literal)('created'),
190
237
  sender: common_1.SuiAddress,
191
238
  owner: common_1.ObjectOwner,
192
- objectType: superstruct_1.string(),
239
+ objectType: (0, superstruct_1.string)(),
193
240
  objectId: common_1.ObjectId,
194
241
  version: common_1.SequenceNumber,
195
242
  digest: objects_1.ObjectDigest,
196
243
  });
197
- exports.SuiObjectChange = superstruct_1.union([
244
+ exports.SuiObjectChange = (0, superstruct_1.union)([
198
245
  exports.SuiObjectChangePublished,
199
246
  exports.SuiObjectChangeTransferred,
200
247
  exports.SuiObjectChangeMutated,
@@ -202,33 +249,47 @@ exports.SuiObjectChange = superstruct_1.union([
202
249
  exports.SuiObjectChangeWrapped,
203
250
  exports.SuiObjectChangeCreated,
204
251
  ]);
205
- exports.SuiTransactionResponse = superstruct_1.object({
252
+ exports.BalanceChange = (0, superstruct_1.object)({
253
+ owner: common_1.ObjectOwner,
254
+ coinType: (0, superstruct_1.string)(),
255
+ /* Coin balance change(positive means receive, negative means send) */
256
+ amount: (0, superstruct_1.string)(),
257
+ });
258
+ exports.SuiTransactionBlockResponse = (0, superstruct_1.object)({
206
259
  digest: common_1.TransactionDigest,
207
- transaction: superstruct_1.optional(exports.SuiTransaction),
208
- effects: superstruct_1.optional(exports.TransactionEffects),
209
- events: superstruct_1.optional(exports.TransactionEvents),
210
- timestampMs: superstruct_1.optional(superstruct_1.number()),
211
- checkpoint: superstruct_1.optional(superstruct_1.number()),
212
- confirmedLocalExecution: superstruct_1.optional(superstruct_1.boolean()),
213
- objectChanges: superstruct_1.optional(superstruct_1.array(exports.SuiObjectChange)),
260
+ transaction: (0, superstruct_1.optional)(exports.SuiTransactionBlock),
261
+ effects: (0, superstruct_1.optional)(exports.TransactionEffects),
262
+ events: (0, superstruct_1.optional)(exports.TransactionEvents),
263
+ timestampMs: (0, superstruct_1.optional)((0, superstruct_1.number)()),
264
+ checkpoint: (0, superstruct_1.optional)((0, superstruct_1.number)()),
265
+ confirmedLocalExecution: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
266
+ objectChanges: (0, superstruct_1.optional)((0, superstruct_1.array)(exports.SuiObjectChange)),
267
+ balanceChanges: (0, superstruct_1.optional)((0, superstruct_1.array)(exports.BalanceChange)),
214
268
  /* Errors that occurred in fetching/serializing the transaction. */
215
- errors: superstruct_1.optional(superstruct_1.array(superstruct_1.string())),
269
+ errors: (0, superstruct_1.optional)((0, superstruct_1.array)((0, superstruct_1.string)())),
216
270
  });
217
- exports.SuiTransactionResponseOptions = superstruct_1.object({
271
+ exports.SuiTransactionBlockResponseOptions = (0, superstruct_1.object)({
218
272
  /* Whether to show transaction input data. Default to be false. */
219
- showInput: superstruct_1.optional(superstruct_1.boolean()),
273
+ showInput: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
220
274
  /* Whether to show transaction effects. Default to be false. */
221
- showEffects: superstruct_1.optional(superstruct_1.boolean()),
222
- /* Whether to show transaction events. Default to be false. */
223
- showEvents: superstruct_1.optional(superstruct_1.boolean()),
275
+ showEffects: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
224
276
  /* Whether to show transaction events. Default to be false. */
225
- showObjectChanges: superstruct_1.optional(superstruct_1.boolean()),
226
- // MUSTFIX(chris): add showBalanceChanges
277
+ showEvents: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
278
+ /* Whether to show object changes. Default to be false. */
279
+ showObjectChanges: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
280
+ /* Whether to show coin balance changes. Default to be false. */
281
+ showBalanceChanges: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
227
282
  });
228
- exports.PaginatedTransactionResponse = superstruct_1.object({
229
- data: superstruct_1.array(exports.SuiTransactionResponse),
230
- nextCursor: superstruct_1.union([common_1.TransactionDigest, superstruct_1.literal(null)]),
231
- hasNextPage: superstruct_1.boolean(),
283
+ exports.PaginatedTransactionResponse = (0, superstruct_1.object)({
284
+ data: (0, superstruct_1.array)(exports.SuiTransactionBlockResponse),
285
+ nextCursor: (0, superstruct_1.union)([common_1.TransactionDigest, (0, superstruct_1.literal)(null)]),
286
+ hasNextPage: (0, superstruct_1.boolean)(),
287
+ });
288
+ exports.DryRunTransactionBlockResponse = (0, superstruct_1.object)({
289
+ effects: exports.TransactionEffects,
290
+ events: exports.TransactionEvents,
291
+ objectChanges: (0, superstruct_1.array)(exports.SuiObjectChange),
292
+ balanceChanges: (0, superstruct_1.array)(exports.BalanceChange),
232
293
  });
233
294
  /* -------------------------------------------------------------------------- */
234
295
  /* Helper functions */
@@ -236,132 +297,93 @@ exports.PaginatedTransactionResponse = superstruct_1.object({
236
297
  function getTransaction(tx) {
237
298
  return tx.transaction;
238
299
  }
239
- exports.getTransaction = getTransaction;
240
300
  function getTransactionDigest(tx) {
241
301
  return tx.digest;
242
302
  }
243
- exports.getTransactionDigest = getTransactionDigest;
244
303
  function getTransactionSignature(tx) {
245
- var _a;
246
- return (_a = tx.transaction) === null || _a === void 0 ? void 0 : _a.txSignatures;
304
+ return tx.transaction?.txSignatures;
247
305
  }
248
- exports.getTransactionSignature = getTransactionSignature;
249
306
  /* ----------------------------- TransactionData ---------------------------- */
250
307
  function getTransactionSender(tx) {
251
- var _a;
252
- return (_a = tx.transaction) === null || _a === void 0 ? void 0 : _a.data.sender;
308
+ return tx.transaction?.data.sender;
253
309
  }
254
- exports.getTransactionSender = getTransactionSender;
255
310
  function getGasData(tx) {
256
- var _a;
257
- return (_a = tx.transaction) === null || _a === void 0 ? void 0 : _a.data.gasData;
311
+ return tx.transaction?.data.gasData;
258
312
  }
259
- exports.getGasData = getGasData;
260
313
  function getTransactionGasObject(tx) {
261
- var _a;
262
- return (_a = getGasData(tx)) === null || _a === void 0 ? void 0 : _a.payment;
314
+ return getGasData(tx)?.payment;
263
315
  }
264
- exports.getTransactionGasObject = getTransactionGasObject;
265
316
  function getTransactionGasPrice(tx) {
266
- var _a;
267
- return (_a = getGasData(tx)) === null || _a === void 0 ? void 0 : _a.price;
317
+ return getGasData(tx)?.price;
268
318
  }
269
- exports.getTransactionGasPrice = getTransactionGasPrice;
270
319
  function getTransactionGasBudget(tx) {
271
- var _a;
272
- return (_a = getGasData(tx)) === null || _a === void 0 ? void 0 : _a.budget;
320
+ return getGasData(tx)?.budget;
273
321
  }
274
- exports.getTransactionGasBudget = getTransactionGasBudget;
275
322
  function getChangeEpochTransaction(data) {
276
323
  return data.kind === 'ChangeEpoch' ? data : undefined;
277
324
  }
278
- exports.getChangeEpochTransaction = getChangeEpochTransaction;
279
325
  function getConsensusCommitPrologueTransaction(data) {
280
326
  return data.kind === 'ConsensusCommitPrologue' ? data : undefined;
281
327
  }
282
- exports.getConsensusCommitPrologueTransaction = getConsensusCommitPrologueTransaction;
283
328
  function getTransactionKind(data) {
284
- var _a;
285
- return (_a = data.transaction) === null || _a === void 0 ? void 0 : _a.data.transaction;
329
+ return data.transaction?.data.transaction;
286
330
  }
287
- exports.getTransactionKind = getTransactionKind;
288
331
  function getTransactionKindName(data) {
289
332
  return data.kind;
290
333
  }
291
- exports.getTransactionKindName = getTransactionKindName;
292
334
  function getProgrammableTransaction(data) {
293
335
  return data.kind === 'ProgrammableTransaction' ? data : undefined;
294
336
  }
295
- exports.getProgrammableTransaction = getProgrammableTransaction;
296
337
  /* ----------------------------- ExecutionStatus ---------------------------- */
297
338
  function getExecutionStatusType(data) {
298
- var _a;
299
- return (_a = getExecutionStatus(data)) === null || _a === void 0 ? void 0 : _a.status;
339
+ return getExecutionStatus(data)?.status;
300
340
  }
301
- exports.getExecutionStatusType = getExecutionStatusType;
302
341
  function getExecutionStatus(data) {
303
- var _a;
304
- return (_a = getTransactionEffects(data)) === null || _a === void 0 ? void 0 : _a.status;
342
+ return getTransactionEffects(data)?.status;
305
343
  }
306
- exports.getExecutionStatus = getExecutionStatus;
307
344
  function getExecutionStatusError(data) {
308
- var _a;
309
- return (_a = getExecutionStatus(data)) === null || _a === void 0 ? void 0 : _a.error;
345
+ return getExecutionStatus(data)?.error;
310
346
  }
311
- exports.getExecutionStatusError = getExecutionStatusError;
312
347
  function getExecutionStatusGasSummary(data) {
313
- var _a;
314
- if (superstruct_1.is(data, exports.TransactionEffects)) {
348
+ if ((0, superstruct_1.is)(data, exports.TransactionEffects)) {
315
349
  return data.gasUsed;
316
350
  }
317
- return (_a = getTransactionEffects(data)) === null || _a === void 0 ? void 0 : _a.gasUsed;
351
+ return getTransactionEffects(data)?.gasUsed;
318
352
  }
319
- exports.getExecutionStatusGasSummary = getExecutionStatusGasSummary;
320
353
  function getTotalGasUsed(data) {
321
354
  const gasSummary = getExecutionStatusGasSummary(data);
322
- return gasSummary ? gasSummary.computationCost + gasSummary.storageCost - gasSummary.storageRebate : undefined;
355
+ return gasSummary
356
+ ? BigInt(gasSummary.computationCost) + BigInt(gasSummary.storageCost) - BigInt(gasSummary.storageRebate)
357
+ : undefined;
323
358
  }
324
- exports.getTotalGasUsed = getTotalGasUsed;
325
359
  function getTotalGasUsedUpperBound(data) {
326
360
  const gasSummary = getExecutionStatusGasSummary(data);
327
- return gasSummary ? gasSummary.computationCost + gasSummary.storageCost : undefined;
361
+ return gasSummary ? BigInt(gasSummary.computationCost) + BigInt(gasSummary.storageCost) : undefined;
328
362
  }
329
- exports.getTotalGasUsedUpperBound = getTotalGasUsedUpperBound;
330
363
  function getTransactionEffects(data) {
331
364
  return data.effects;
332
365
  }
333
- exports.getTransactionEffects = getTransactionEffects;
334
366
  /* ---------------------------- Transaction Effects --------------------------- */
335
367
  function getEvents(data) {
336
368
  return data.events;
337
369
  }
338
- exports.getEvents = getEvents;
339
370
  function getCreatedObjects(data) {
340
- var _a;
341
- return (_a = getTransactionEffects(data)) === null || _a === void 0 ? void 0 : _a.created;
371
+ return getTransactionEffects(data)?.created;
342
372
  }
343
- exports.getCreatedObjects = getCreatedObjects;
344
373
  /* --------------------------- TransactionResponse -------------------------- */
345
374
  function getTimestampFromTransactionResponse(data) {
346
- var _a;
347
- return (_a = data.timestampMs) !== null && _a !== void 0 ? _a : undefined;
375
+ return data.timestampMs ?? undefined;
348
376
  }
349
- exports.getTimestampFromTransactionResponse = getTimestampFromTransactionResponse;
350
377
  /**
351
378
  * Get the newly created coin refs after a split.
352
379
  */
353
380
  function getNewlyCreatedCoinRefsAfterSplit(data) {
354
- var _a, _b;
355
- return (_b = (_a = getTransactionEffects(data)) === null || _a === void 0 ? void 0 : _a.created) === null || _b === void 0 ? void 0 : _b.map((c) => c.reference);
381
+ return getTransactionEffects(data)?.created?.map((c) => c.reference);
356
382
  }
357
- exports.getNewlyCreatedCoinRefsAfterSplit = getNewlyCreatedCoinRefsAfterSplit;
358
383
  function getObjectChanges(data) {
359
384
  return data.objectChanges;
360
385
  }
361
- exports.getObjectChanges = getObjectChanges;
362
386
  function getPublishedObjectChanges(data) {
363
- var _a, _b;
364
- return (_b = (_a = data.objectChanges) === null || _a === void 0 ? void 0 : _a.filter((a) => superstruct_1.is(a, exports.SuiObjectChangePublished))) !== null && _b !== void 0 ? _b : [];
387
+ return data.objectChanges?.filter((a) => (0, superstruct_1.is)(a, exports.SuiObjectChangePublished)) ?? [];
365
388
  }
366
- exports.getPublishedObjectChanges = getPublishedObjectChanges;
367
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9teXN0ZW5sYWIvdHlwZXMvdHJhbnNhY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FjcUI7QUFDckIscUNBQW9DO0FBQ3BDLHVDQUFtRjtBQUNuRixxQ0FRa0I7QUFFbEIsb0JBQW9CO0FBQ1AsUUFBQSxPQUFPLEdBQUcsb0JBQU0sRUFBRSxDQUFDO0FBRW5CLFFBQUEsY0FBYyxHQUFHLG9CQUFNLENBQUM7SUFDbkMsS0FBSyxFQUFFLGVBQU87SUFDZCxjQUFjLEVBQUUsb0JBQU0sRUFBRTtJQUN4QixrQkFBa0IsRUFBRSxvQkFBTSxFQUFFO0lBQzVCLGNBQWMsRUFBRSxvQkFBTSxFQUFFO0lBQ3hCLHdCQUF3QixFQUFFLHNCQUFRLENBQUMsb0JBQU0sRUFBRSxDQUFDO0NBQzdDLENBQUMsQ0FBQztBQUlVLFFBQUEsMEJBQTBCLEdBQUcsb0JBQU0sQ0FBQztJQUMvQyxLQUFLLEVBQUUsb0JBQU0sRUFBRTtJQUNmLEtBQUssRUFBRSxvQkFBTSxFQUFFO0lBQ2YsbUJBQW1CLEVBQUUsb0JBQU0sRUFBRTtDQUM5QixDQUFDLENBQUM7QUFJVSxRQUFBLE9BQU8sR0FBRyxvQkFBTSxDQUFDO0lBQzVCLE9BQU8sRUFBRSxtQkFBSyxDQUFDLGlCQUFRLENBQUM7Q0FDekIsQ0FBQyxDQUFDO0FBSVUsUUFBQSxXQUFXLEdBQUcsbUJBQUssQ0FBQztJQUMvQixxQkFBTyxDQUFDLFNBQVMsQ0FBQztJQUNsQixvQkFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFNLEVBQUUsRUFBRSxDQUFDO0lBQzNCLG9CQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQU0sRUFBRSxFQUFFLENBQUM7SUFDNUIsb0JBQU0sQ0FBQyxFQUFFLFlBQVksRUFBRSxtQkFBSyxDQUFDLENBQUMsb0JBQU0sRUFBRSxFQUFFLG9CQUFNLEVBQUUs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QztBQUZELGtGQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixpQ0FBaUMsQ0FBQyxJQUE0Qjs7SUFDNUUsT0FBTyxNQUFBLE1BQUEscUJBQXFCLENBQUMsSUFBSSxDQUFDLDBDQUFFLE9BQU8sMENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUZELDhFQUVDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBNEI7SUFDM0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQzVCLENBQUM7QUFGRCw0Q0FFQztBQUVELFNBQWdCLHlCQUF5QixDQUFDLElBQTRCOztJQUNwRSxPQUFPLE1BQUMsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFFLENBQUMsQ0FBQyxFQUFFLGdDQUF3QixDQUFDLENBQWdDLG1DQUFJLEVBQUUsQ0FBQztBQUNsSCxDQUFDO0FBRkQsOERBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpcyxcbiAgYXJyYXksXG4gIEluZmVyLFxuICBsaXRlcmFsLFxuICBudW1iZXIsXG4gIG9iamVjdCxcbiAgb3B0aW9uYWwsXG4gIHN0cmluZyxcbiAgdW5pb24sXG4gIGJvb2xlYW4sXG4gIHR1cGxlLFxuICBhc3NpZ24sXG4gIG51bGxhYmxlLFxufSBmcm9tICdzdXBlcnN0cnVjdCc7XG5pbXBvcnQgeyBTdWlFdmVudCB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IE9iamVjdERpZ2VzdCwgU3VpR2FzRGF0YSwgU3VpTW92ZVBhY2thZ2UsIFN1aU9iamVjdFJlZiB9IGZyb20gJy4vb2JqZWN0cyc7XG5pbXBvcnQge1xuICBPYmplY3RJZCxcbiAgT2JqZWN0T3duZXIsXG4gIFNlcXVlbmNlTnVtYmVyLFxuICBTdWlBZGRyZXNzLFxuICBTdWlKc29uVmFsdWUsXG4gIFRyYW5zYWN0aW9uRGlnZXN0LFxuICBUcmFuc2FjdGlvbkV2ZW50RGlnZXN0LFxufSBmcm9tICcuL2NvbW1vbic7XG5cbi8vIFRPRE86IHN1cHBvcnQgdTY0XG5leHBvcnQgY29uc3QgRXBvY2hJZCA9IG51bWJlcigpO1xuXG5leHBvcnQgY29uc3QgU3VpQ2hhbmdlRXBvY2ggPSBvYmplY3Qoe1xuICBlcG9jaDogRXBvY2hJZCxcbiAgc3RvcmFnZV9jaGFyZ2U6IG51bWJlcigpLFxuICBjb21wdXRhdGlvbl9jaGFyZ2U6IG51bWJlcigpLFxuICBzdG9yYWdlX3JlYmF0ZTogbnVtYmVyKCksXG4gIGVwb2NoX3N0YXJ0X3RpbWVzdGFtcF9tczogb3B0aW9uYWwobnVtYmVyKCkpLFxufSk7XG5cbmV4cG9ydCB0eXBlIFN1aUNoYW5nZUVwb2NoID0gSW5mZXI8dHlwZW9mIFN1aUNoYW5nZUVwb2NoPjtcblxuZXhwb3J0IGNvbnN0IFN1aUNvbnNlbnN1c0NvbW1pdFByb2xvZ3VlID0gb2JqZWN0KHtcbiAgZXBvY2g6IG51bWJlcigpLFxuICByb3VuZDogbnVtYmVyKCksXG4gIGNvbW1pdF90aW1lc3RhbXBfbXM6IG51bWJlcigpLFxufSk7XG5cbmV4cG9ydCB0eXBlIFN1aUNvbnNlbnN1c0NvbW1pdFByb2xvZ3VlID0gSW5mZXI8dHlwZW9mIFN1aUNvbnNlbnN1c0NvbW1pdFByb2xvZ3VlPjtcblxuZXhwb3J0IGNvbnN0IEdlbmVzaXMgPSBvYmplY3Qoe1xuICBvYmplY3RzOiBhcnJheShPYmplY3RJZCksXG59KTtcblxuZXhwb3J0IHR5cGUgR2VuZXNpcyA9IEluZmVyPHR5cGVvZiBHZW5lc2lzPjtcblxuZXhwb3J0IGNvbnN0IFN1aUFyZ3VtZW50ID0gdW5pb24oW1xuICBsaXRlcmFsKCdHYXNDb2luJyksXG4gIG9iamVjdCh7IElucHV0OiBudW1iZXIoKSB9KSxcbiAgb2JqZWN0KHsgUmVzdWx0OiBudW1iZXIoKSB9KSxcbiAgb2JqZWN0KHsgTmVzdGVkUmVzdWx0OiB0dXBsZShbbnVtYmVyKCksIG51bWJlcigpXSkgfSksXG5dKTtcblxuZXhwb3J0IGNvbnN0IFN1aUNvbW1hbmQgPSB1bmlvbihbXG4gIG9iamVjdCh7XG4gICAgTW92ZUNhbGw6IG9iamVjdCh7XG4gICAgICBhcmd1bWVudHM6IGFycmF5KFN1aUFyZ3VtZW50KSxcbiAgICAgIHR5cGVfYXJndW1lbnRzOiBhcnJheShzdHJpbmcoKSksXG4gICAgICBwYWNrYWdlOiBPYmplY3RJZCxcbiAgICAgIG1vZHVsZTogc3RyaW5nKCksXG4gICAgICBmdW5jdGlvbjogc3RyaW5nKCksXG4gICAgfSksXG4gIH0pLFxuICBvYmplY3QoeyBUcmFuc2Zlck9iamVjdHM6IHR1cGxlKFthcnJheShTdWlBcmd1bWVudCksIFN1aUFyZ3VtZW50XSkgfSksXG4gIG9iamVjdCh7IFNwbGl0Q29pbjogdHVwbGUoW1N1aUFyZ3VtZW50LCBTdWlBZGRyZXNzXSkgfSksXG4gIG9iamVjdCh7IE1lcmdlQ29pbnM6IHR1cGxlKFtTdWlBcmd1bWVudCwgYXJyYXkoU3VpQXJndW1lbnQpXSkgfSksXG4gIG9iamVjdCh7IFB1Ymxpc2g6IFN1aU1vdmVQYWNrYWdlIH0pLFxuICBvYmplY3QoeyBNYWtlTW92ZVZlYzogdHVwbGUoW251bGxhYmxlKHN0cmluZygpKSwgYXJyYXkoU3VpQXJndW1lbnQpXSkgfSksXG5dKTtcblxuZXhwb3J0IGNvbnN0IFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uID0gb2JqZWN0KHtcbiAgaW5wdXRzOiBhcnJheShTdWlKc29uVmFsdWUpLFxuICBjb21tYW5kczogYXJyYXkoKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiA9IEluZmVyPHR5cGVvZiBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj47XG5cbi8qKlxuICogMS4gV2FpdEZvckVmZmVjdHNDZXJ0OiB3YWl0cyBmb3IgVHJhbnNhY3Rpb25FZmZlY3RzQ2VydCBhbmQgdGhlbiByZXR1cm5zIHRvIHRoZSBjbGllbnQuXG4gKiAgICBUaGlzIG1vZGUgaXMgYSBwcm94eSBmb3IgdHJhbnNhY3Rpb24gZmluYWxpdHkuXG4gKiAyLiBXYWl0Rm9yTG9jYWxFeGVjdXRpb246IHdhaXRzIGZvciBUcmFuc2FjdGlvbkVmZmVjdHNDZXJ0IGFuZCBtYWtlcyBzdXJlIHRoZSBub2RlXG4gKiAgICBleGVjdXRlZCB0aGUgdHJhbnNhY3Rpb24gbG9jYWxseSBiZWZvcmUgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQuIFRoZSBsb2NhbCBleGVjdXRpb25cbiAqICAgIG1ha2VzIHN1cmUgdGhpcyBub2RlIGlzIGF3YXJlIG9mIHRoaXMgdHJhbnNhY3Rpb24gd2hlbiB0aGUgY2xpZW50IGZpcmVzIHN1YnNlcXVlbnQgcXVlcmllcy5cbiAqICAgIEhvd2V2ZXIsIGlmIHRoZSBub2RlIGZhaWxzIHRvIGV4ZWN1dGUgdGhlIHRyYW5zYWN0aW9uIGxvY2FsbHkgaW4gYSB0aW1lbHkgbWFubmVyLFxuICogICAgYSBib29sIHR5cGUgaW4gdGhlIHJlc3BvbnNlIGlzIHNldCB0byBmYWxzZSB0byBpbmRpY2F0ZSB0aGUgY2FzZS5cbiAqL1xuZXhwb3J0IHR5cGUgRXhlY3V0ZVRyYW5zYWN0aW9uUmVxdWVzdFR5cGUgPSAnV2FpdEZvckVmZmVjdHNDZXJ0JyB8ICdXYWl0Rm9yTG9jYWxFeGVjdXRpb24nO1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbktpbmROYW1lID0gJ0NoYW5nZUVwb2NoJyB8ICdDb25zZW5zdXNDb21taXRQcm9sb2d1ZScgfCAnR2VuZXNpcycgfCAnUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgU3VpVHJhbnNhY3Rpb25LaW5kID0gdW5pb24oW1xuICBhc3NpZ24oU3VpQ2hhbmdlRXBvY2gsIG9iamVjdCh7IGtpbmQ6IGxpdGVyYWwoJ0NoYW5nZUVwb2NoJykgfSkpLFxuICBhc3NpZ24oXG4gICAgU3VpQ29uc2Vuc3VzQ29tbWl0UHJvbG9ndWUsXG4gICAgb2JqZWN0KHtcbiAgICAgIGtpbmQ6IGxpdGVyYWwoJ0NvbnNlbnN1c0NvbW1pdFByb2xvZ3VlJyksXG4gICAgfSlcbiAgKSxcbiAgYXNzaWduKEdlbmVzaXMsIG9iamVjdCh7IGtpbmQ6IGxpdGVyYWwoJ0dlbmVzaXMnKSB9KSksXG4gIGFzc2lnbihQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiwgb2JqZWN0KHsga2luZDogbGl0ZXJhbCgnUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24nKSB9KSksXG5dKTtcbmV4cG9ydCB0eXBlIFN1aVRyYW5zYWN0aW9uS2luZCA9IEluZmVyPHR5cGVvZiBTdWlUcmFuc2FjdGlvbktpbmQ+O1xuXG5leHBvcnQgY29uc3QgU3VpVHJhbnNhY3Rpb25EYXRhID0gb2JqZWN0KHtcbiAgLy8gRXZlbnR1YWxseSB0aGlzIHdpbGwgYmVjb21lIHVuaW9uKGxpdGVyYWwoJ3YxJyksIGxpdGVyYWwoJ3YyJyksIC4uLilcbiAgbWVzc2FnZVZlcnNpb246IGxpdGVyYWwoJ3YxJyksXG4gIHRyYW5zYWN0aW9uOiBTdWlUcmFuc2FjdGlvbktpbmQsXG4gIHNlbmRlcjogU3VpQWRkcmVzcyxcbiAgZ2FzRGF0YTogU3VpR2FzRGF0YSxcbn0pO1xuZXhwb3J0IHR5cGUgU3VpVHJhbnNhY3Rpb25EYXRhID0gSW5mZXI8dHlwZW9mIFN1aVRyYW5zYWN0aW9uRGF0YT47XG5cbmV4cG9ydCBjb25zdCBBdXRob3JpdHlTaWduYXR1cmUgPSBzdHJpbmcoKTtcbmV4cG9ydCBjb25zdCBHZW5lcmljQXV0aG9yaXR5U2lnbmF0dXJlID0gdW5pb24oW0F1dGhvcml0eVNpZ25hdHVyZSwgYXJyYXkoQXV0aG9yaXR5U2lnbmF0dXJlKV0pO1xuXG5leHBvcnQgY29uc3QgQXV0aG9yaXR5UXVvcnVtU2lnbkluZm8gPSBvYmplY3Qoe1xuICBlcG9jaDogRXBvY2hJZCxcbiAgc2lnbmF0dXJlOiBHZW5lcmljQXV0aG9yaXR5U2lnbmF0dXJlLFxuICBzaWduZXJzX21hcDogYXJyYXkobnVtYmVyKCkpLFxufSk7XG5cbmV4cG9ydCB0eXBlIEF1dGhvcml0eVF1b3J1bVNpZ25JbmZvID0gSW5mZXI8dHlwZW9mIEF1dGhvcml0eVF1b3J1bVNpZ25JbmZvPjtcblxuZXhwb3J0IGNvbnN0IEdhc0Nvc3RTdW1tYXJ5ID0gb2JqZWN0KHtcbiAgY29tcHV0YXRpb25Db3N0OiBudW1iZXIoKSxcbiAgc3RvcmFnZUNvc3Q6IG51bWJlcigpLFxuICBzdG9yYWdlUmViYXRlOiBudW1iZXIoKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBHYXNDb3N0U3VtbWFyeSA9IEluZmVyPHR5cGVvZiBHYXNDb3N0U3VtbWFyeT47XG5cbmV4cG9ydCBjb25zdCBFeGVjdXRpb25TdGF0dXNUeXBlID0gdW5pb24oW2xpdGVyYWwoJ3N1Y2Nlc3MnKSwgbGl0ZXJhbCgnZmFpbHVyZScpXSk7XG5cbmV4cG9ydCB0eXBlIEV4ZWN1dGlvblN0YXR1c1R5cGUgPSBJbmZlcjx0eXBlb2YgRXhlY3V0aW9uU3RhdHVzVHlwZT47XG5cbmV4cG9ydCBjb25zdCBFeGVjdXRpb25TdGF0dXMgPSBvYmplY3Qoe1xuICBzdGF0dXM6IEV4ZWN1dGlvblN0YXR1c1R5cGUsXG4gIGVycm9yOiBvcHRpb25hbChzdHJpbmcoKSksXG59KTtcblxuZXhwb3J0IHR5cGUgRXhlY3V0aW9uU3RhdHVzID0gSW5mZXI8dHlwZW9mIEV4ZWN1dGlvblN0YXR1cz47XG5cbmV4cG9ydCBjb25zdCBPd25lZE9iamVjdFJlZiA9IG9iamVjdCh7XG4gIG93bmVyOiBPYmplY3RPd25lcixcbiAgcmVmZXJlbmNlOiBTdWlPYmplY3RSZWYsXG59KTtcblxuZXhwb3J0IHR5cGUgT3duZWRPYmplY3RSZWYgPSBJbmZlcjx0eXBlb2YgT3duZWRPYmplY3RSZWY+O1xuXG5leHBvcnQgY29uc3QgVHJhbnNhY3Rpb25FZmZlY3RzID0gb2JqZWN0KHtcbiAgLy8gRXZlbnR1YWxseSB0aGlzIHdpbGwgYmVjb21lIHVuaW9uKGxpdGVyYWwoJ3YxJyksIGxpdGVyYWwoJ3YyJyksIC4uLilcbiAgbWVzc2FnZVZlcnNpb246IGxpdGVyYWwoJ3YxJyksXG5cbiAgLyoqIFRoZSBzdGF0dXMgb2YgdGhlIGV4ZWN1dGlvbiAqL1xuICBzdGF0dXM6IEV4ZWN1dGlvblN0YXR1cyxcbiAgLyoqIFRoZSBlcG9jaCB3aGVuIHRoaXMgdHJhbnNhY3Rpb24gd2FzIGV4ZWN1dGVkICovXG4gIGV4ZWN1dGVkRXBvY2g6IEVwb2NoSWQsXG4gIGdhc1VzZWQ6IEdhc0Nvc3RTdW1tYXJ5LFxuICAvKiogVGhlIG9iamVjdCByZWZlcmVuY2VzIG9mIHRoZSBzaGFyZWQgb2JqZWN0cyB1c2VkIGluIHRoaXMgdHJhbnNhY3Rpb24uIEVtcHR5IGlmIG5vIHNoYXJlZCBvYmplY3RzIHdlcmUgdXNlZC4gKi9cbiAgc2hhcmVkT2JqZWN0czogb3B0aW9uYWwoYXJyYXkoU3VpT2JqZWN0UmVmKSksXG4gIC8qKiBUaGUgdHJhbnNhY3Rpb24gZGlnZXN0ICovXG4gIHRyYW5zYWN0aW9uRGlnZXN0OiBUcmFuc2FjdGlvbkRpZ2VzdCxcbiAgLyoqIE9iamVjdFJlZiBhbmQgb3duZXIgb2YgbmV3IG9iamVjdHMgY3JlYXRlZCAqL1xuICBjcmVhdGVkOiBvcHRpb25hbChhcnJheShPd25lZE9iamVjdFJlZikpLFxuICAvKiogT2JqZWN0UmVmIGFuZCBvd25lciBvZiBtdXRhdGVkIG9iamVjdHMsIGluY2x1ZGluZyBnYXMgb2JqZWN0ICovXG4gIG11dGF0ZWQ6IG9wdGlvbmFsKGFycmF5KE93bmVkT2JqZWN0UmVmKSksXG4gIC8qKlxuICAgKiBPYmplY3RSZWYgYW5kIG93bmVyIG9mIG9iamVjdHMgdGhhdCBhcmUgdW53cmFwcGVkIGluIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqIFVud3JhcHBlZCBvYmplY3RzIGFyZSBvYmplY3RzIHRoYXQgd2VyZSB3cmFwcGVkIGludG8gb3RoZXIgb2JqZWN0cyBpbiB0aGUgcGFzdCxcbiAgICogYW5kIGp1c3QgZ290IGV4dHJhY3RlZCBvdXQuXG4gICAqL1xuICB1bndyYXBwZWQ6IG9wdGlvbmFsKGFycmF5KE93bmVkT2JqZWN0UmVmKSksXG4gIC8qKiBPYmplY3QgUmVmcyBvZiBvYmplY3RzIG5vdyBkZWxldGVkICh0aGUgb2xkIHJlZnMpICovXG4gIGRlbGV0ZWQ6IG9wdGlvbmFsKGFycmF5KFN1aU9iamVjdFJlZikpLFxuICAvKiogT2JqZWN0IFJlZnMgb2Ygb2JqZWN0cyBub3cgZGVsZXRlZCAodGhlIG9sZCByZWZzKSAqL1xuICB1bndyYXBwZWRfdGhlbl9kZWxldGVkOiBvcHRpb25hbChhcnJheShTdWlPYmplY3RSZWYpKSxcbiAgLyoqIE9iamVjdCByZWZzIG9mIG9iamVjdHMgbm93IHdyYXBwZWQgaW4gb3RoZXIgb2JqZWN0cyAqL1xuICB3cmFwcGVkOiBvcHRpb25hbChhcnJheShTdWlPYmplY3RSZWYpKSxcbiAgLyoqXG4gICAqIFRoZSB1cGRhdGVkIGdhcyBvYmplY3QgcmVmZXJlbmNlLiBIYXZlIGEgZGVkaWNhdGVkIGZpZWxkIGZvciBjb252ZW5pZW50IGFjY2Vzcy5cbiAgICogSXQncyBhbHNvIGluY2x1ZGVkIGluIG11dGF0ZWQuXG4gICAqL1xuICBnYXNPYmplY3Q6IE93bmVkT2JqZWN0UmVmLFxuICAvKiogVGhlIGV2ZW50cyBlbWl0dGVkIGR1cmluZyBleGVjdXRpb24uIE5vdGUgdGhhdCBvbmx5IHN1Y2Nlc3NmdWwgdHJhbnNhY3Rpb25zIGVtaXQgZXZlbnRzICovXG4gIGV2ZW50c0RpZ2VzdDogb3B0aW9uYWwoVHJhbnNhY3Rpb25FdmVudERpZ2VzdCksXG4gIC8qKiBUaGUgc2V0IG9mIHRyYW5zYWN0aW9uIGRpZ2VzdHMgdGhpcyB0cmFuc2FjdGlvbiBkZXBlbmRzIG9uICovXG4gIGRlcGVuZGVuY2llczogb3B0aW9uYWwoYXJyYXkoVHJhbnNhY3Rpb25EaWdlc3QpKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkVmZmVjdHMgPSBJbmZlcjx0eXBlb2YgVHJhbnNhY3Rpb25FZmZlY3RzPjtcblxuZXhwb3J0IGNvbnN0IFRyYW5zYWN0aW9uRXZlbnRzID0gYXJyYXkoU3VpRXZlbnQpO1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkV2ZW50cyA9IEluZmVyPHR5cGVvZiBUcmFuc2FjdGlvbkV2ZW50cz47XG5cbmV4cG9ydCBjb25zdCBEcnlSdW5UcmFuc2FjdGlvblJlc3BvbnNlID0gb2JqZWN0KHtcbiAgZWZmZWN0czogVHJhbnNhY3Rpb25FZmZlY3RzLFxuICBldmVudHM6IFRyYW5zYWN0aW9uRXZlbnRzLFxufSk7XG5cbmV4cG9ydCB0eXBlIERyeVJ1blRyYW5zYWN0aW9uUmVzcG9uc2UgPSBJbmZlcjx0eXBlb2YgRHJ5UnVuVHJhbnNhY3Rpb25SZXNwb25zZT47XG5cbmNvbnN0IFJldHVyblZhbHVlVHlwZSA9IHR1cGxlKFthcnJheShudW1iZXIoKSksIHN0cmluZygpXSk7XG5jb25zdCBNdXRhYmxlUmVmZXJlbmNlT3V0cHV0VHlwZSA9IHR1cGxlKFtTdWlBcmd1bWVudCwgYXJyYXkobnVtYmVyKCkpLCBzdHJpbmcoKV0pO1xuY29uc3QgRXhlY3V0aW9uUmVzdWx0VHlwZSA9IG9iamVjdCh7XG4gIG11dGFibGVSZWZlcmVuY2VPdXRwdXRzOiBvcHRpb25hbChhcnJheShNdXRhYmxlUmVmZXJlbmNlT3V0cHV0VHlwZSkpLFxuICByZXR1cm5WYWx1ZXM6IG9wdGlvbmFsKGFycmF5KFJldHVyblZhbHVlVHlwZSkpLFxufSk7XG5cbmNvbnN0IERldkluc3BlY3RSZXN1bHRzVHlwZSA9IHVuaW9uKFtvYmplY3QoeyBPazogYXJyYXkoRXhlY3V0aW9uUmVzdWx0VHlwZSkgfSksIG9iamVjdCh7IEVycjogc3RyaW5nKCkgfSldKTtcblxuZXhwb3J0IGNvbnN0IERldkluc3BlY3RSZXN1bHRzID0gb2JqZWN0KHtcbiAgZWZmZWN0czogVHJhbnNhY3Rpb25FZmZlY3RzLFxuICBldmVudHM6IFRyYW5zYWN0aW9uRXZlbnRzLFxuICByZXN1bHRzOiBEZXZJbnNwZWN0UmVzdWx0c1R5cGUsXG59KTtcblxuZXhwb3J0IHR5cGUgRGV2SW5zcGVjdFJlc3VsdHMgPSBJbmZlcjx0eXBlb2YgRGV2SW5zcGVjdFJlc3VsdHM+O1xuXG5leHBvcnQgdHlwZSBHYXRld2F5VHhTZXFOdW1iZXIgPSBudW1iZXI7XG5cbmV4cG9ydCBjb25zdCBHZXRUeG5EaWdlc3RzUmVzcG9uc2UgPSBhcnJheShUcmFuc2FjdGlvbkRpZ2VzdCk7XG5cbmV4cG9ydCB0eXBlIEdldFR4bkRpZ2VzdHNSZXNwb25zZSA9IEluZmVyPHR5cGVvZiBHZXRUeG5EaWdlc3RzUmVzcG9uc2U+O1xuXG5leHBvcnQgdHlwZSBTdWlUcmFuc2FjdGlvblJlc3BvbnNlUXVlcnkgPSB7XG4gIGZpbHRlcj86IFRyYW5zYWN0aW9uRmlsdGVyO1xuICBvcHRpb25zPzogU3VpVHJhbnNhY3Rpb25SZXNwb25zZU9wdGlvbnM7XG59O1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkZpbHRlciA9XG4gIHwge1xuICAgICAgTW92ZUZ1bmN0aW9uOiB7XG4gICAgICAgIHBhY2thZ2U6IE9iamVjdElkO1xuICAgICAgICBtb2R1bGU6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIGZ1bmN0aW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICB9XG4gIHwgeyBJbnB1dE9iamVjdDogT2JqZWN0SWQgfVxuICB8IHsgTXV0YXRlZE9iamVjdDogT2JqZWN0SWQgfVxuICB8IHsgRnJvbUFkZHJlc3M6IFN1aUFkZHJlc3MgfVxuICB8IHsgVG9BZGRyZXNzOiBTdWlBZGRyZXNzIH07XG5cbmV4cG9ydCB0eXBlIEF1dGhvcml0eU5hbWUgPSBJbmZlcjx0eXBlb2YgQXV0aG9yaXR5TmFtZT47XG5cbmV4cG9ydCBjb25zdCBBdXRob3JpdHlOYW1lID0gc3RyaW5nKCk7XG5cbmV4cG9ydCBjb25zdCBTdWlUcmFuc2FjdGlvbiA9IG9iamVjdCh7XG4gIGRhdGE6IFN1aVRyYW5zYWN0aW9uRGF0YSxcbiAgdHhTaWduYXR1cmVzOiBhcnJheShzdHJpbmcoKSksXG59KTtcblxuZXhwb3J0IHR5cGUgU3VpVHJhbnNhY3Rpb24gPSBJbmZlcjx0eXBlb2YgU3VpVHJhbnNhY3Rpb24+O1xuXG5leHBvcnQgY29uc3QgU3VpT2JqZWN0Q2hhbmdlUHVibGlzaGVkID0gb2JqZWN0KHtcbiAgdHlwZTogbGl0ZXJhbCgncHVibGlzaGVkJyksXG4gIHBhY2thZ2VJZDogT2JqZWN0SWQsXG4gIHZlcnNpb246IFNlcXVlbmNlTnVtYmVyLFxuICBkaWdlc3Q6IE9iamVjdERpZ2VzdCxcbiAgbW9kdWxlczogYXJyYXkoc3RyaW5nKCkpLFxufSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3RDaGFuZ2VQdWJsaXNoZWQgPSBJbmZlcjx0eXBlb2YgU3VpT2JqZWN0Q2hhbmdlUHVibGlzaGVkPjtcblxuZXhwb3J0IGNvbnN0IFN1aU9iamVjdENoYW5nZVRyYW5zZmVycmVkID0gb2JqZWN0KHtcbiAgdHlwZTogbGl0ZXJhbCgndHJhbnNmZXJyZWQnKSxcbiAgc2VuZGVyOiBTdWlBZGRyZXNzLFxuICByZWNpcGllbnQ6IE9iamVjdE93bmVyLFxuICBvYmplY3RUeXBlOiBzdHJpbmcoKSxcbiAgb2JqZWN0SWQ6IE9iamVjdElkLFxuICB2ZXJzaW9uOiBTZXF1ZW5jZU51bWJlcixcbiAgZGlnZXN0OiBPYmplY3REaWdlc3QsXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdENoYW5nZVRyYW5zZmVycmVkID0gSW5mZXI8dHlwZW9mIFN1aU9iamVjdENoYW5nZVRyYW5zZmVycmVkPjtcblxuZXhwb3J0IGNvbnN0IFN1aU9iamVjdENoYW5nZU11dGF0ZWQgPSBvYmplY3Qoe1xuICB0eXBlOiBsaXRlcmFsKCdtdXRhdGVkJyksXG4gIHNlbmRlcjogU3VpQWRkcmVzcyxcbiAgb3duZXI6IE9iamVjdE93bmVyLFxuICBvYmplY3RUeXBlOiBzdHJpbmcoKSxcbiAgb2JqZWN0SWQ6IE9iamVjdElkLFxuICB2ZXJzaW9uOiBTZXF1ZW5jZU51bWJlcixcbiAgZGlnZXN0OiBPYmplY3REaWdlc3QsXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdENoYW5nZU11dGF0ZWQgPSBJbmZlcjx0eXBlb2YgU3VpT2JqZWN0Q2hhbmdlTXV0YXRlZD47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RDaGFuZ2VEZWxldGVkID0gb2JqZWN0KHtcbiAgdHlwZTogbGl0ZXJhbCgnZGVsZXRlZCcpLFxuICBzZW5kZXI6IFN1aUFkZHJlc3MsXG4gIG9iamVjdFR5cGU6IHN0cmluZygpLFxuICBvYmplY3RJZDogT2JqZWN0SWQsXG4gIHZlcnNpb246IFNlcXVlbmNlTnVtYmVyLFxufSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3RDaGFuZ2VEZWxldGVkID0gSW5mZXI8dHlwZW9mIFN1aU9iamVjdENoYW5nZURlbGV0ZWQ+O1xuXG5leHBvcnQgY29uc3QgU3VpT2JqZWN0Q2hhbmdlV3JhcHBlZCA9IG9iamVjdCh7XG4gIHR5cGU6IGxpdGVyYWwoJ3dyYXBwZWQnKSxcbiAgc2VuZGVyOiBTdWlBZGRyZXNzLFxuICBvYmplY3RUeXBlOiBzdHJpbmcoKSxcbiAgb2JqZWN0SWQ6IE9iamVjdElkLFxuICB2ZXJzaW9uOiBTZXF1ZW5jZU51bWJlcixcbn0pO1xuZXhwb3J0IHR5cGUgU3VpT2JqZWN0Q2hhbmdlV3JhcHBlZCA9IEluZmVyPHR5cGVvZiBTdWlPYmplY3RDaGFuZ2VXcmFwcGVkPjtcblxuZXhwb3J0IGNvbnN0IFN1aU9iamVjdENoYW5nZUNyZWF0ZWQgPSBvYmplY3Qoe1xuICB0eXBlOiBsaXRlcmFsKCdjcmVhdGVkJyksXG4gIHNlbmRlcjogU3VpQWRkcmVzcyxcbiAgb3duZXI6IE9iamVjdE93bmVyLFxuICBvYmplY3RUeXBlOiBzdHJpbmcoKSxcbiAgb2JqZWN0SWQ6IE9iamVjdElkLFxuICB2ZXJzaW9uOiBTZXF1ZW5jZU51bWJlcixcbiAgZGlnZXN0OiBPYmplY3REaWdlc3QsXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdENoYW5nZUNyZWF0ZWQgPSBJbmZlcjx0eXBlb2YgU3VpT2JqZWN0Q2hhbmdlQ3JlYXRlZD47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RDaGFuZ2UgPSB1bmlvbihbXG4gIFN1aU9iamVjdENoYW5nZVB1Ymxpc2hlZCxcbiAgU3VpT2JqZWN0Q2hhbmdlVHJhbnNmZXJyZWQsXG4gIFN1aU9iamVjdENoYW5nZU11dGF0ZWQsXG4gIFN1aU9iamVjdENoYW5nZURlbGV0ZWQsXG4gIFN1aU9iamVjdENoYW5nZVdyYXBwZWQsXG4gIFN1aU9iamVjdENoYW5nZUNyZWF0ZWQsXG5dKTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdENoYW5nZSA9IEluZmVyPHR5cGVvZiBTdWlPYmplY3RDaGFuZ2U+O1xuXG5leHBvcnQgY29uc3QgU3VpVHJhbnNhY3Rpb25SZXNwb25zZSA9IG9iamVjdCh7XG4gIGRpZ2VzdDogVHJhbnNhY3Rpb25EaWdlc3QsXG4gIHRyYW5zYWN0aW9uOiBvcHRpb25hbChTdWlUcmFuc2FjdGlvbiksXG4gIGVmZmVjdHM6IG9wdGlvbmFsKFRyYW5zYWN0aW9uRWZmZWN0cyksXG4gIGV2ZW50czogb3B0aW9uYWwoVHJhbnNhY3Rpb25FdmVudHMpLFxuICB0aW1lc3RhbXBNczogb3B0aW9uYWwobnVtYmVyKCkpLFxuICBjaGVja3BvaW50OiBvcHRpb25hbChudW1iZXIoKSksXG4gIGNvbmZpcm1lZExvY2FsRXhlY3V0aW9uOiBvcHRpb25hbChib29sZWFuKCkpLFxuICBvYmplY3RDaGFuZ2VzOiBvcHRpb25hbChhcnJheShTdWlPYmplY3RDaGFuZ2UpKSxcbiAgLyogRXJyb3JzIHRoYXQgb2NjdXJyZWQgaW4gZmV0Y2hpbmcvc2VyaWFsaXppbmcgdGhlIHRyYW5zYWN0aW9uLiAqL1xuICBlcnJvcnM6IG9wdGlvbmFsKGFycmF5KHN0cmluZygpKSksXG59KTtcbmV4cG9ydCB0eXBlIFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UgPSBJbmZlcjx0eXBlb2YgU3VpVHJhbnNhY3Rpb25SZXNwb25zZT47XG5cbmV4cG9ydCBjb25zdCBTdWlUcmFuc2FjdGlvblJlc3BvbnNlT3B0aW9ucyA9IG9iamVjdCh7XG4gIC8qIFdoZXRoZXIgdG8gc2hvdyB0cmFuc2FjdGlvbiBpbnB1dCBkYXRhLiBEZWZhdWx0IHRvIGJlIGZhbHNlLiAqL1xuICBzaG93SW5wdXQ6IG9wdGlvbmFsKGJvb2xlYW4oKSksXG4gIC8qIFdoZXRoZXIgdG8gc2hvdyB0cmFuc2FjdGlvbiBlZmZlY3RzLiBEZWZhdWx0IHRvIGJlIGZhbHNlLiAqL1xuICBzaG93RWZmZWN0czogb3B0aW9uYWwoYm9vbGVhbigpKSxcbiAgLyogV2hldGhlciB0byBzaG93IHRyYW5zYWN0aW9uIGV2ZW50cy4gRGVmYXVsdCB0byBiZSBmYWxzZS4gKi9cbiAgc2hvd0V2ZW50czogb3B0aW9uYWwoYm9vbGVhbigpKSxcbiAgLyogV2hldGhlciB0byBzaG93IHRyYW5zYWN0aW9uIGV2ZW50cy4gRGVmYXVsdCB0byBiZSBmYWxzZS4gKi9cbiAgc2hvd09iamVjdENoYW5nZXM6IG9wdGlvbmFsKGJvb2xlYW4oKSksXG4gIC8vIE1VU1RGSVgoY2hyaXMpOiBhZGQgc2hvd0JhbGFuY2VDaGFuZ2VzXG59KTtcblxuZXhwb3J0IHR5cGUgU3VpVHJhbnNhY3Rpb25SZXNwb25zZU9wdGlvbnMgPSBJbmZlcjx0eXBlb2YgU3VpVHJhbnNhY3Rpb25SZXNwb25zZU9wdGlvbnM+O1xuXG5leHBvcnQgY29uc3QgUGFnaW5hdGVkVHJhbnNhY3Rpb25SZXNwb25zZSA9IG9iamVjdCh7XG4gIGRhdGE6IGFycmF5KFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpLFxuICBuZXh0Q3Vyc29yOiB1bmlvbihbVHJhbnNhY3Rpb25EaWdlc3QsIGxpdGVyYWwobnVsbCldKSxcbiAgaGFzTmV4dFBhZ2U6IGJvb2xlYW4oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUGFnaW5hdGVkVHJhbnNhY3Rpb25SZXNwb25zZSA9IEluZmVyPHR5cGVvZiBQYWdpbmF0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscGVyIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb24odHg6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpOiBTdWlUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eC50cmFuc2FjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRGlnZXN0KHR4OiBTdWlUcmFuc2FjdGlvblJlc3BvbnNlKTogVHJhbnNhY3Rpb25EaWdlc3Qge1xuICByZXR1cm4gdHguZGlnZXN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25TaWduYXR1cmUodHg6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eC50cmFuc2FjdGlvbj8udHhTaWduYXR1cmVzO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUcmFuc2FjdGlvbkRhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25TZW5kZXIodHg6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpOiBTdWlBZGRyZXNzIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR4LnRyYW5zYWN0aW9uPy5kYXRhLnNlbmRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdhc0RhdGEodHg6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpOiBTdWlHYXNEYXRhIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR4LnRyYW5zYWN0aW9uPy5kYXRhLmdhc0RhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkdhc09iamVjdCh0eDogU3VpVHJhbnNhY3Rpb25SZXNwb25zZSk6IFN1aU9iamVjdFJlZltdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldEdhc0RhdGEodHgpPy5wYXltZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25HYXNQcmljZSh0eDogU3VpVHJhbnNhY3Rpb25SZXNwb25zZSkge1xuICByZXR1cm4gZ2V0R2FzRGF0YSh0eCk/LnByaWNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25HYXNCdWRnZXQodHg6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpIHtcbiAgcmV0dXJuIGdldEdhc0RhdGEodHgpPy5idWRnZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2VFcG9jaFRyYW5zYWN0aW9uKGRhdGE6IFN1aVRyYW5zYWN0aW9uS2luZCk6IFN1aUNoYW5nZUVwb2NoIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGRhdGEua2luZCA9PT0gJ0NoYW5nZUVwb2NoJyA/IGRhdGEgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25zZW5zdXNDb21taXRQcm9sb2d1ZVRyYW5zYWN0aW9uKFxuICBkYXRhOiBTdWlUcmFuc2FjdGlvbktpbmRcbik6IFN1aUNvbnNlbnN1c0NvbW1pdFByb2xvZ3VlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGRhdGEua2luZCA9PT0gJ0NvbnNlbnN1c0NvbW1pdFByb2xvZ3VlJyA/IGRhdGEgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbktpbmQoZGF0YTogU3VpVHJhbnNhY3Rpb25SZXNwb25zZSk6IFN1aVRyYW5zYWN0aW9uS2luZCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBkYXRhLnRyYW5zYWN0aW9uPy5kYXRhLnRyYW5zYWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25LaW5kTmFtZShkYXRhOiBTdWlUcmFuc2FjdGlvbktpbmQpOiBUcmFuc2FjdGlvbktpbmROYW1lIHtcbiAgcmV0dXJuIGRhdGEua2luZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uKGRhdGE6IFN1aVRyYW5zYWN0aW9uS2luZCk6IFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGRhdGEua2luZCA9PT0gJ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uJyA/IGRhdGEgOiB1bmRlZmluZWQ7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4ZWN1dGlvblN0YXR1cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeGVjdXRpb25TdGF0dXNUeXBlKGRhdGE6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpOiBFeGVjdXRpb25TdGF0dXNUeXBlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldEV4ZWN1dGlvblN0YXR1cyhkYXRhKT8uc3RhdHVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhlY3V0aW9uU3RhdHVzKGRhdGE6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpOiBFeGVjdXRpb25TdGF0dXMgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0VHJhbnNhY3Rpb25FZmZlY3RzKGRhdGEpPy5zdGF0dXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeGVjdXRpb25TdGF0dXNFcnJvcihkYXRhOiBTdWlUcmFuc2FjdGlvblJlc3BvbnNlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldEV4ZWN1dGlvblN0YXR1cyhkYXRhKT8uZXJyb3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeGVjdXRpb25TdGF0dXNHYXNTdW1tYXJ5KFxuICBkYXRhOiBTdWlUcmFuc2FjdGlvblJlc3BvbnNlIHwgVHJhbnNhY3Rpb25FZmZlY3RzXG4pOiBHYXNDb3N0U3VtbWFyeSB8IHVuZGVmaW5lZCB7XG4gIGlmIChpcyhkYXRhLCBUcmFuc2FjdGlvbkVmZmVjdHMpKSB7XG4gICAgcmV0dXJuIGRhdGEuZ2FzVXNlZDtcbiAgfVxuICByZXR1cm4gZ2V0VHJhbnNhY3Rpb25FZmZlY3RzKGRhdGEpPy5nYXNVc2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG90YWxHYXNVc2VkKGRhdGE6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UgfCBUcmFuc2FjdGlvbkVmZmVjdHMpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBnYXNTdW1tYXJ5ID0gZ2V0RXhlY3V0aW9uU3RhdHVzR2FzU3VtbWFyeShkYXRhKTtcbiAgcmV0dXJuIGdhc1N1bW1hcnkgPyBnYXNTdW1tYXJ5LmNvbXB1dGF0aW9uQ29zdCArIGdhc1N1bW1hcnkuc3RvcmFnZUNvc3QgLSBnYXNTdW1tYXJ5LnN0b3JhZ2VSZWJhdGUgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3RhbEdhc1VzZWRVcHBlckJvdW5kKGRhdGE6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UgfCBUcmFuc2FjdGlvbkVmZmVjdHMpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBnYXNTdW1tYXJ5ID0gZ2V0RXhlY3V0aW9uU3RhdHVzR2FzU3VtbWFyeShkYXRhKTtcbiAgcmV0dXJuIGdhc1N1bW1hcnkgPyBnYXNTdW1tYXJ5LmNvbXB1dGF0aW9uQ29zdCArIGdhc1N1bW1hcnkuc3RvcmFnZUNvc3QgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkVmZmVjdHMoZGF0YTogU3VpVHJhbnNhY3Rpb25SZXNwb25zZSk6IFRyYW5zYWN0aW9uRWZmZWN0cyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBkYXRhLmVmZmVjdHM7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVHJhbnNhY3Rpb24gRWZmZWN0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV2ZW50cyhkYXRhOiBTdWlUcmFuc2FjdGlvblJlc3BvbnNlKTogU3VpRXZlbnRbXSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBkYXRhLmV2ZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0ZWRPYmplY3RzKGRhdGE6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpOiBPd25lZE9iamVjdFJlZltdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldFRyYW5zYWN0aW9uRWZmZWN0cyhkYXRhKT8uY3JlYXRlZDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRyYW5zYWN0aW9uUmVzcG9uc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVzdGFtcEZyb21UcmFuc2FjdGlvblJlc3BvbnNlKGRhdGE6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YS50aW1lc3RhbXBNcyA/PyB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0IHRoZSBuZXdseSBjcmVhdGVkIGNvaW4gcmVmcyBhZnRlciBhIHNwbGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV3bHlDcmVhdGVkQ29pblJlZnNBZnRlclNwbGl0KGRhdGE6IFN1aVRyYW5zYWN0aW9uUmVzcG9uc2UpOiBTdWlPYmplY3RSZWZbXSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRUcmFuc2FjdGlvbkVmZmVjdHMoZGF0YSk/LmNyZWF0ZWQ/Lm1hcCgoYykgPT4gYy5yZWZlcmVuY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0Q2hhbmdlcyhkYXRhOiBTdWlUcmFuc2FjdGlvblJlc3BvbnNlKTogU3VpT2JqZWN0Q2hhbmdlW10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YS5vYmplY3RDaGFuZ2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVibGlzaGVkT2JqZWN0Q2hhbmdlcyhkYXRhOiBTdWlUcmFuc2FjdGlvblJlc3BvbnNlKTogU3VpT2JqZWN0Q2hhbmdlUHVibGlzaGVkW10ge1xuICByZXR1cm4gKGRhdGEub2JqZWN0Q2hhbmdlcz8uZmlsdGVyKChhKSA9PiBpcyhhLCBTdWlPYmplY3RDaGFuZ2VQdWJsaXNoZWQpKSBhcyBTdWlPYmplY3RDaGFuZ2VQdWJsaXNoZWRbXSkgPz8gW107XG59XG4iXX0=
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9teXN0ZW5sYWIvdHlwZXMvdHJhbnNhY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBZQSx3Q0FFQztBQUVELG9EQUVDO0FBRUQsMERBRUM7QUFJRCxvREFFQztBQUVELGdDQUVDO0FBRUQsMERBRUM7QUFFRCx3REFFQztBQUVELDBEQUVDO0FBRUQsOERBRUM7QUFFRCxzRkFJQztBQUVELGdEQUVDO0FBRUQsd0RBRUM7QUFFRCxnRUFFQztBQUlELHdEQUVDO0FBRUQsZ0RBRUM7QUFFRCwwREFFQztBQUVELG9FQU9DO0FBRUQsMENBS0M7QUFFRCw4REFHQztBQUVELHNEQUVDO0FBSUQsOEJBRUM7QUFFRCw4Q0FFQztBQUlELGtGQUVDO0FBS0QsOEVBRUM7QUFFRCw0Q0FFQztBQUVELDhEQUVDO0FBdGdCRCw2Q0FjcUI7QUFFckIscUNBUWtCO0FBQ2xCLHFDQUFvQztBQUNwQyx1Q0FBbUY7QUFFdEUsUUFBQSxPQUFPLEdBQUcsSUFBQSxvQkFBTSxHQUFFLENBQUM7QUFFbkIsUUFBQSxjQUFjLEdBQUcsSUFBQSxvQkFBTSxFQUFDO0lBQ25DLEtBQUssRUFBRSxlQUFPO0lBQ2QsY0FBYyxFQUFFLElBQUEsb0JBQU0sR0FBRTtJQUN4QixrQkFBa0IsRUFBRSxJQUFBLG9CQUFNLEdBQUU7SUFDNUIsY0FBYyxFQUFFLElBQUEsb0JBQU0sR0FBRTtJQUN4Qix3QkFBd0IsRUFBRSxJQUFBLHNCQUFRLEVBQUMsSUFBQSxvQkFBTSxHQUFFLENBQUM7Q0FDN0MsQ0FBQyxDQUFDO0FBR1UsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLG9CQUFNLEVBQUM7SUFDL0MsS0FBSyxFQUFFLElBQUEsb0JBQU0sR0FBRTtJQUNmLEtBQUssRUFBRSxJQUFBLG9CQUFNLEdBQUU7SUFDZixtQkFBbUIsRUFBRSxJQUFBLG9CQUFNLEdBQUU7Q0FDOUIsQ0FB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QUFDLElBQWlDO0lBQ3pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNyQixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsSUFBaUM7SUFDakUsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUM7QUFDOUMsQ0FBQztBQUVELGdGQUFnRjtBQUVoRixTQUFnQixtQ0FBbUMsQ0FBQyxJQUFpQztJQUNuRixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDO0FBQ3ZDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGlDQUFpQyxDQUFDLElBQWlDO0lBQ2pGLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxJQUFpQztJQUNoRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDNUIsQ0FBQztBQUVELFNBQWdCLHlCQUF5QixDQUFDLElBQWlDO0lBQ3pFLE9BQVEsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsZ0JBQUUsRUFBQyxDQUFDLEVBQUUsZ0NBQXdCLENBQUMsQ0FBZ0MsSUFBSSxFQUFFLENBQUM7QUFDbEgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzLFxuICBhcnJheSxcbiAgSW5mZXIsXG4gIGxpdGVyYWwsXG4gIG51bWJlcixcbiAgb2JqZWN0LFxuICBvcHRpb25hbCxcbiAgc3RyaW5nLFxuICB1bmlvbixcbiAgYm9vbGVhbixcbiAgdHVwbGUsXG4gIGFzc2lnbixcbiAgbnVsbGFibGUsXG59IGZyb20gJ3N1cGVyc3RydWN0JztcblxuaW1wb3J0IHtcbiAgT2JqZWN0SWQsXG4gIE9iamVjdE93bmVyLFxuICBTZXF1ZW5jZU51bWJlcixcbiAgU3VpQWRkcmVzcyxcbiAgU3VpSnNvblZhbHVlLFxuICBUcmFuc2FjdGlvbkRpZ2VzdCxcbiAgVHJhbnNhY3Rpb25FdmVudERpZ2VzdCxcbn0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgU3VpRXZlbnQgfSBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgeyBPYmplY3REaWdlc3QsIFN1aUdhc0RhdGEsIFN1aU1vdmVQYWNrYWdlLCBTdWlPYmplY3RSZWYgfSBmcm9tICcuL29iamVjdHMnO1xuXG5leHBvcnQgY29uc3QgRXBvY2hJZCA9IHN0cmluZygpO1xuXG5leHBvcnQgY29uc3QgU3VpQ2hhbmdlRXBvY2ggPSBvYmplY3Qoe1xuICBlcG9jaDogRXBvY2hJZCxcbiAgc3RvcmFnZV9jaGFyZ2U6IG51bWJlcigpLFxuICBjb21wdXRhdGlvbl9jaGFyZ2U6IG51bWJlcigpLFxuICBzdG9yYWdlX3JlYmF0ZTogbnVtYmVyKCksXG4gIGVwb2NoX3N0YXJ0X3RpbWVzdGFtcF9tczogb3B0aW9uYWwobnVtYmVyKCkpLFxufSk7XG5leHBvcnQgdHlwZSBTdWlDaGFuZ2VFcG9jaCA9IEluZmVyPHR5cGVvZiBTdWlDaGFuZ2VFcG9jaD47XG5cbmV4cG9ydCBjb25zdCBTdWlDb25zZW5zdXNDb21taXRQcm9sb2d1ZSA9IG9iamVjdCh7XG4gIGVwb2NoOiBudW1iZXIoKSxcbiAgcm91bmQ6IG51bWJlcigpLFxuICBjb21taXRfdGltZXN0YW1wX21zOiBudW1iZXIoKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3VpQ29uc2Vuc3VzQ29tbWl0UHJvbG9ndWUgPSBJbmZlcjx0eXBlb2YgU3VpQ29uc2Vuc3VzQ29tbWl0UHJvbG9ndWU+O1xuXG5leHBvcnQgY29uc3QgR2VuZXNpcyA9IG9iamVjdCh7XG4gIG9iamVjdHM6IGFycmF5KE9iamVjdElkKSxcbn0pO1xuZXhwb3J0IHR5cGUgR2VuZXNpcyA9IEluZmVyPHR5cGVvZiBHZW5lc2lzPjtcblxuZXhwb3J0IGNvbnN0IFN1aUFyZ3VtZW50ID0gdW5pb24oW1xuICBsaXRlcmFsKCdHYXNDb2luJyksXG4gIG9iamVjdCh7IElucHV0OiBudW1iZXIoKSB9KSxcbiAgb2JqZWN0KHsgUmVzdWx0OiBudW1iZXIoKSB9KSxcbiAgb2JqZWN0KHsgTmVzdGVkUmVzdWx0OiB0dXBsZShbbnVtYmVyKCksIG51bWJlcigpXSkgfSksXG5dKTtcbmV4cG9ydCB0eXBlIFN1aUFyZ3VtZW50ID0gSW5mZXI8dHlwZW9mIFN1aUFyZ3VtZW50PjtcblxuZXhwb3J0IGNvbnN0IE1vdmVDYWxsU3VpVHJhbnNhY3Rpb24gPSBvYmplY3Qoe1xuICBhcmd1bWVudHM6IG9wdGlvbmFsKGFycmF5KFN1aUFyZ3VtZW50KSksXG4gIHR5cGVfYXJndW1lbnRzOiBvcHRpb25hbChhcnJheShzdHJpbmcoKSkpLFxuICBwYWNrYWdlOiBPYmplY3RJZCxcbiAgbW9kdWxlOiBzdHJpbmcoKSxcbiAgZnVuY3Rpb246IHN0cmluZygpLFxufSk7XG5leHBvcnQgdHlwZSBNb3ZlQ2FsbFN1aVRyYW5zYWN0aW9uID0gSW5mZXI8dHlwZW9mIE1vdmVDYWxsU3VpVHJhbnNhY3Rpb24+O1xuXG5leHBvcnQgY29uc3QgU3VpVHJhbnNhY3Rpb24gPSB1bmlvbihbXG4gIG9iamVjdCh7IE1vdmVDYWxsOiBNb3ZlQ2FsbFN1aVRyYW5zYWN0aW9uIH0pLFxuICBvYmplY3QoeyBUcmFuc2Zlck9iamVjdHM6IHR1cGxlKFthcnJheShTdWlBcmd1bWVudCksIFN1aUFyZ3VtZW50XSkgfSksXG4gIG9iamVjdCh7IFNwbGl0Q29pbnM6IHR1cGxlKFtTdWlBcmd1bWVudCwgYXJyYXkoU3VpQXJndW1lbnQpXSkgfSksXG4gIG9iamVjdCh7IE1lcmdlQ29pbnM6IHR1cGxlKFtTdWlBcmd1bWVudCwgYXJyYXkoU3VpQXJndW1lbnQpXSkgfSksXG4gIG9iamVjdCh7IFB1Ymxpc2g6IFN1aU1vdmVQYWNrYWdlIH0pLFxuICBvYmplY3QoeyBNYWtlTW92ZVZlYzogdHVwbGUoW251bGxhYmxlKHN0cmluZygpKSwgYXJyYXkoU3VpQXJndW1lbnQpXSkgfSksXG5dKTtcblxuZXhwb3J0IGNvbnN0IFN1aUNhbGxBcmcgPSB1bmlvbihbXG4gIG9iamVjdCh7XG4gICAgdHlwZTogbGl0ZXJhbCgncHVyZScpLFxuICAgIHZhbHVlVHlwZTogb3B0aW9uYWwoc3RyaW5nKCkpLFxuICAgIHZhbHVlOiBTdWlKc29uVmFsdWUsXG4gIH0pLFxuICBvYmplY3Qoe1xuICAgIHR5cGU6IGxpdGVyYWwoJ29iamVjdCcpLFxuICAgIG9iamVjdFR5cGU6IGxpdGVyYWwoJ2ltbU9yT3duZWRPYmplY3QnKSxcbiAgICBvYmplY3RJZDogT2JqZWN0SWQsXG4gICAgdmVyc2lvbjogU2VxdWVuY2VOdW1iZXIsXG4gICAgZGlnZXN0OiBPYmplY3REaWdlc3QsXG4gIH0pLFxuICBvYmplY3Qoe1xuICAgIHR5cGU6IGxpdGVyYWwoJ29iamVjdCcpLFxuICAgIG9iamVjdFR5cGU6IGxpdGVyYWwoJ3NoYXJlZE9iamVjdCcpLFxuICAgIG9iamVjdElkOiBPYmplY3RJZCxcbiAgICBpbml0aWFsU2hhcmVkVmVyc2lvbjogU2VxdWVuY2VOdW1iZXIsXG4gICAgbXV0YWJsZTogYm9vbGVhbigpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgU3VpQ2FsbEFyZyA9IEluZmVyPHR5cGVvZiBTdWlDYWxsQXJnPjtcblxuZXhwb3J0IGNvbnN0IFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uID0gb2JqZWN0KHtcbiAgdHJhbnNhY3Rpb25zOiBhcnJheShTdWlUcmFuc2FjdGlvbiksXG4gIGlucHV0czogYXJyYXkoU3VpQ2FsbEFyZyksXG59KTtcbmV4cG9ydCB0eXBlIFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uID0gSW5mZXI8dHlwZW9mIFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPjtcbmV4cG9ydCB0eXBlIFN1aVRyYW5zYWN0aW9uID0gSW5mZXI8dHlwZW9mIFN1aVRyYW5zYWN0aW9uPjtcblxuLyoqXG4gKiAxLiBXYWl0Rm9yRWZmZWN0c0NlcnQ6IHdhaXRzIGZvciBUcmFuc2FjdGlvbkVmZmVjdHNDZXJ0IGFuZCB0aGVuIHJldHVybnMgdG8gdGhlIGNsaWVudC5cbiAqICAgIFRoaXMgbW9kZSBpcyBhIHByb3h5IGZvciB0cmFuc2FjdGlvbiBmaW5hbGl0eS5cbiAqIDIuIFdhaXRGb3JMb2NhbEV4ZWN1dGlvbjogd2FpdHMgZm9yIFRyYW5zYWN0aW9uRWZmZWN0c0NlcnQgYW5kIG1ha2VzIHN1cmUgdGhlIG5vZGVcbiAqICAgIGV4ZWN1dGVkIHRoZSB0cmFuc2FjdGlvbiBsb2NhbGx5IGJlZm9yZSByZXR1cm5pbmcgdG8gdGhlIGNsaWVudC4gVGhlIGxvY2FsIGV4ZWN1dGlvblxuICogICAgbWFrZXMgc3VyZSB0aGlzIG5vZGUgaXMgYXdhcmUgb2YgdGhpcyB0cmFuc2FjdGlvbiB3aGVuIHRoZSBjbGllbnQgZmlyZXMgc3Vic2VxdWVudCBxdWVyaWVzLlxuICogICAgSG93ZXZlciwgaWYgdGhlIG5vZGUgZmFpbHMgdG8gZXhlY3V0ZSB0aGUgdHJhbnNhY3Rpb24gbG9jYWxseSBpbiBhIHRpbWVseSBtYW5uZXIsXG4gKiAgICBhIGJvb2wgdHlwZSBpbiB0aGUgcmVzcG9uc2UgaXMgc2V0IHRvIGZhbHNlIHRvIGluZGljYXRlIHRoZSBjYXNlLlxuICovXG5leHBvcnQgdHlwZSBFeGVjdXRlVHJhbnNhY3Rpb25SZXF1ZXN0VHlwZSA9ICdXYWl0Rm9yRWZmZWN0c0NlcnQnIHwgJ1dhaXRGb3JMb2NhbEV4ZWN1dGlvbic7XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uS2luZE5hbWUgPSAnQ2hhbmdlRXBvY2gnIHwgJ0NvbnNlbnN1c0NvbW1pdFByb2xvZ3VlJyB8ICdHZW5lc2lzJyB8ICdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjb25zdCBTdWlUcmFuc2FjdGlvbkJsb2NrS2luZCA9IHVuaW9uKFtcbiAgYXNzaWduKFN1aUNoYW5nZUVwb2NoLCBvYmplY3QoeyBraW5kOiBsaXRlcmFsKCdDaGFuZ2VFcG9jaCcpIH0pKSxcbiAgYXNzaWduKFxuICAgIFN1aUNvbnNlbnN1c0NvbW1pdFByb2xvZ3VlLFxuICAgIG9iamVjdCh7XG4gICAgICBraW5kOiBsaXRlcmFsKCdDb25zZW5zdXNDb21taXRQcm9sb2d1ZScpLFxuICAgIH0pXG4gICksXG4gIGFzc2lnbihHZW5lc2lzLCBvYmplY3QoeyBraW5kOiBsaXRlcmFsKCdHZW5lc2lzJykgfSkpLFxuICBhc3NpZ24oUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sIG9iamVjdCh7IGtpbmQ6IGxpdGVyYWwoJ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uJykgfSkpLFxuXSk7XG5leHBvcnQgdHlwZSBTdWlUcmFuc2FjdGlvbkJsb2NrS2luZCA9IEluZmVyPHR5cGVvZiBTdWlUcmFuc2FjdGlvbkJsb2NrS2luZD47XG5cbmV4cG9ydCBjb25zdCBTdWlUcmFuc2FjdGlvbkJsb2NrRGF0YSA9IG9iamVjdCh7XG4gIC8vIEV2ZW50dWFsbHkgdGhpcyB3aWxsIGJlY29tZSB1bmlvbihsaXRlcmFsKCd2MScpLCBsaXRlcmFsKCd2MicpLCAuLi4pXG4gIG1lc3NhZ2VWZXJzaW9uOiBsaXRlcmFsKCd2MScpLFxuICB0cmFuc2FjdGlvbjogU3VpVHJhbnNhY3Rpb25CbG9ja0tpbmQsXG4gIHNlbmRlcjogU3VpQWRkcmVzcyxcbiAgZ2FzRGF0YTogU3VpR2FzRGF0YSxcbn0pO1xuZXhwb3J0IHR5cGUgU3VpVHJhbnNhY3Rpb25CbG9ja0RhdGEgPSBJbmZlcjx0eXBlb2YgU3VpVHJhbnNhY3Rpb25CbG9ja0RhdGE+O1xuXG5leHBvcnQgY29uc3QgQXV0aG9yaXR5U2lnbmF0dXJlID0gc3RyaW5nKCk7XG5leHBvcnQgY29uc3QgR2VuZXJpY0F1dGhvcml0eVNpZ25hdHVyZSA9IHVuaW9uKFtBdXRob3JpdHlTaWduYXR1cmUsIGFycmF5KEF1dGhvcml0eVNpZ25hdHVyZSldKTtcblxuZXhwb3J0IGNvbnN0IEF1dGhvcml0eVF1b3J1bVNpZ25JbmZvID0gb2JqZWN0KHtcbiAgZXBvY2g6IEVwb2NoSWQsXG4gIHNpZ25hdHVyZTogR2VuZXJpY0F1dGhvcml0eVNpZ25hdHVyZSxcbiAgc2lnbmVyc19tYXA6IGFycmF5KG51bWJlcigpKSxcbn0pO1xuZXhwb3J0IHR5cGUgQXV0aG9yaXR5UXVvcnVtU2lnbkluZm8gPSBJbmZlcjx0eXBlb2YgQXV0aG9yaXR5UXVvcnVtU2lnbkluZm8+O1xuXG5leHBvcnQgY29uc3QgR2FzQ29zdFN1bW1hcnkgPSBvYmplY3Qoe1xuICBjb21wdXRhdGlvbkNvc3Q6IHN0cmluZygpLFxuICBzdG9yYWdlQ29zdDogc3RyaW5nKCksXG4gIHN0b3JhZ2VSZWJhdGU6IHN0cmluZygpLFxuICBub25SZWZ1bmRhYmxlU3RvcmFnZUZlZTogc3RyaW5nKCksXG59KTtcbmV4cG9ydCB0eXBlIEdhc0Nvc3RTdW1tYXJ5ID0gSW5mZXI8dHlwZW9mIEdhc0Nvc3RTdW1tYXJ5PjtcblxuZXhwb3J0IGNvbnN0IEV4ZWN1dGlvblN0YXR1c1R5cGUgPSB1bmlvbihbbGl0ZXJhbCgnc3VjY2VzcycpLCBsaXRlcmFsKCdmYWlsdXJlJyldKTtcbmV4cG9ydCB0eXBlIEV4ZWN1dGlvblN0YXR1c1R5cGUgPSBJbmZlcjx0eXBlb2YgRXhlY3V0aW9uU3RhdHVzVHlwZT47XG5cbmV4cG9ydCBjb25zdCBFeGVjdXRpb25TdGF0dXMgPSBvYmplY3Qoe1xuICBzdGF0dXM6IEV4ZWN1dGlvblN0YXR1c1R5cGUsXG4gIGVycm9yOiBvcHRpb25hbChzdHJpbmcoKSksXG59KTtcbmV4cG9ydCB0eXBlIEV4ZWN1dGlvblN0YXR1cyA9IEluZmVyPHR5cGVvZiBFeGVjdXRpb25TdGF0dXM+O1xuXG5leHBvcnQgY29uc3QgT3duZWRPYmplY3RSZWYgPSBvYmplY3Qoe1xuICBvd25lcjogT2JqZWN0T3duZXIsXG4gIHJlZmVyZW5jZTogU3VpT2JqZWN0UmVmLFxufSk7XG5leHBvcnQgdHlwZSBPd25lZE9iamVjdFJlZiA9IEluZmVyPHR5cGVvZiBPd25lZE9iamVjdFJlZj47XG5leHBvcnQgY29uc3QgVHJhbnNhY3Rpb25FZmZlY3RzTW9kaWZpZWRBdFZlcnNpb25zID0gb2JqZWN0KHtcbiAgb2JqZWN0SWQ6IE9iamVjdElkLFxuICBzZXF1ZW5jZU51bWJlcjogU2VxdWVuY2VOdW1iZXIsXG59KTtcblxuZXhwb3J0IGNvbnN0IFRyYW5zYWN0aW9uRWZmZWN0cyA9IG9iamVjdCh7XG4gIC8vIEV2ZW50dWFsbHkgdGhpcyB3aWxsIGJlY29tZSB1bmlvbihsaXRlcmFsKCd2MScpLCBsaXRlcmFsKCd2MicpLCAuLi4pXG4gIG1lc3NhZ2VWZXJzaW9uOiBsaXRlcmFsKCd2MScpLFxuXG4gIC8qKiBUaGUgc3RhdHVzIG9mIHRoZSBleGVjdXRpb24gKi9cbiAgc3RhdHVzOiBFeGVjdXRpb25TdGF0dXMsXG4gIC8qKiBUaGUgZXBvY2ggd2hlbiB0aGlzIHRyYW5zYWN0aW9uIHdhcyBleGVjdXRlZCAqL1xuICBleGVjdXRlZEVwb2NoOiBFcG9jaElkLFxuICAvKiogVGhlIHZlcnNpb24gdGhhdCBldmVyeSBtb2RpZmllZCAobXV0YXRlZCBvciBkZWxldGVkKSBvYmplY3QgaGFkIGJlZm9yZSBpdCB3YXMgbW9kaWZpZWQgYnkgdGhpcyB0cmFuc2FjdGlvbi4gKiovXG4gIG1vZGlmaWVkQXRWZXJzaW9uczogb3B0aW9uYWwoYXJyYXkoVHJhbnNhY3Rpb25FZmZlY3RzTW9kaWZpZWRBdFZlcnNpb25zKSksXG4gIGdhc1VzZWQ6IEdhc0Nvc3RTdW1tYXJ5LFxuICAvKiogVGhlIG9iamVjdCByZWZlcmVuY2VzIG9mIHRoZSBzaGFyZWQgb2JqZWN0cyB1c2VkIGluIHRoaXMgdHJhbnNhY3Rpb24uIEVtcHR5IGlmIG5vIHNoYXJlZCBvYmplY3RzIHdlcmUgdXNlZC4gKi9cbiAgc2hhcmVkT2JqZWN0czogb3B0aW9uYWwoYXJyYXkoU3VpT2JqZWN0UmVmKSksXG4gIC8qKiBUaGUgdHJhbnNhY3Rpb24gZGlnZXN0ICovXG4gIHRyYW5zYWN0aW9uRGlnZXN0OiBUcmFuc2FjdGlvbkRpZ2VzdCxcbiAgLyoqIE9iamVjdFJlZiBhbmQgb3duZXIgb2YgbmV3IG9iamVjdHMgY3JlYXRlZCAqL1xuICBjcmVhdGVkOiBvcHRpb25hbChhcnJheShPd25lZE9iamVjdFJlZikpLFxuICAvKiogT2JqZWN0UmVmIGFuZCBvd25lciBvZiBtdXRhdGVkIG9iamVjdHMsIGluY2x1ZGluZyBnYXMgb2JqZWN0ICovXG4gIG11dGF0ZWQ6IG9wdGlvbmFsKGFycmF5KE93bmVkT2JqZWN0UmVmKSksXG4gIC8qKlxuICAgKiBPYmplY3RSZWYgYW5kIG93bmVyIG9mIG9iamVjdHMgdGhhdCBhcmUgdW53cmFwcGVkIGluIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqIFVud3JhcHBlZCBvYmplY3RzIGFyZSBvYmplY3RzIHRoYXQgd2VyZSB3cmFwcGVkIGludG8gb3RoZXIgb2JqZWN0cyBpbiB0aGUgcGFzdCxcbiAgICogYW5kIGp1c3QgZ290IGV4dHJhY3RlZCBvdXQuXG4gICAqL1xuICB1bndyYXBwZWQ6IG9wdGlvbmFsKGFycmF5KE93bmVkT2JqZWN0UmVmKSksXG4gIC8qKiBPYmplY3QgUmVmcyBvZiBvYmplY3RzIG5vdyBkZWxldGVkICh0aGUgb2xkIHJlZnMpICovXG4gIGRlbGV0ZWQ6IG9wdGlvbmFsKGFycmF5KFN1aU9iamVjdFJlZikpLFxuICAvKiogT2JqZWN0IFJlZnMgb2Ygb2JqZWN0cyBub3cgZGVsZXRlZCAodGhlIG9sZCByZWZzKSAqL1xuICB1bndyYXBwZWRfdGhlbl9kZWxldGVkOiBvcHRpb25hbChhcnJheShTdWlPYmplY3RSZWYpKSxcbiAgLyoqIE9iamVjdCByZWZzIG9mIG9iamVjdHMgbm93IHdyYXBwZWQgaW4gb3RoZXIgb2JqZWN0cyAqL1xuICB3cmFwcGVkOiBvcHRpb25hbChhcnJheShTdWlPYmplY3RSZWYpKSxcbiAgLyoqXG4gICAqIFRoZSB1cGRhdGVkIGdhcyBvYmplY3QgcmVmZXJlbmNlLiBIYXZlIGEgZGVkaWNhdGVkIGZpZWxkIGZvciBjb252ZW5pZW50IGFjY2Vzcy5cbiAgICogSXQncyBhbHNvIGluY2x1ZGVkIGluIG11dGF0ZWQuXG4gICAqL1xuICBnYXNPYmplY3Q6IE93bmVkT2JqZWN0UmVmLFxuICAvKiogVGhlIGV2ZW50cyBlbWl0dGVkIGR1cmluZyBleGVjdXRpb24uIE5vdGUgdGhhdCBvbmx5IHN1Y2Nlc3NmdWwgdHJhbnNhY3Rpb25zIGVtaXQgZXZlbnRzICovXG4gIGV2ZW50c0RpZ2VzdDogb3B0aW9uYWwoVHJhbnNhY3Rpb25FdmVudERpZ2VzdCksXG4gIC8qKiBUaGUgc2V0IG9mIHRyYW5zYWN0aW9uIGRpZ2VzdHMgdGhpcyB0cmFuc2FjdGlvbiBkZXBlbmRzIG9uICovXG4gIGRlcGVuZGVuY2llczogb3B0aW9uYWwoYXJyYXkoVHJhbnNhY3Rpb25EaWdlc3QpKSxcbn0pO1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FZmZlY3RzID0gSW5mZXI8dHlwZW9mIFRyYW5zYWN0aW9uRWZmZWN0cz47XG5cbmV4cG9ydCBjb25zdCBUcmFuc2FjdGlvbkV2ZW50cyA9IGFycmF5KFN1aUV2ZW50KTtcbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXZlbnRzID0gSW5mZXI8dHlwZW9mIFRyYW5zYWN0aW9uRXZlbnRzPjtcblxuY29uc3QgUmV0dXJuVmFsdWVUeXBlID0gdHVwbGUoW2FycmF5KG51bWJlcigpKSwgc3RyaW5nKCldKTtcbmNvbnN0IE11dGFibGVSZWZlcmVuY2VPdXRwdXRUeXBlID0gdHVwbGUoW1N1aUFyZ3VtZW50LCBhcnJheShudW1iZXIoKSksIHN0cmluZygpXSk7XG5jb25zdCBFeGVjdXRpb25SZXN1bHRUeXBlID0gb2JqZWN0KHtcbiAgbXV0YWJsZVJlZmVyZW5jZU91dHB1dHM6IG9wdGlvbmFsKGFycmF5KE11dGFibGVSZWZlcmVuY2VPdXRwdXRUeXBlKSksXG4gIHJldHVyblZhbHVlczogb3B0aW9uYWwoYXJyYXkoUmV0dXJuVmFsdWVUeXBlKSksXG59KTtcblxuZXhwb3J0IGNvbnN0IERldkluc3BlY3RSZXN1bHRzID0gb2JqZWN0KHtcbiAgZWZmZWN0czogVHJhbnNhY3Rpb25FZmZlY3RzLFxuICBldmVudHM6IFRyYW5zYWN0aW9uRXZlbnRzLFxuICByZXN1bHRzOiBvcHRpb25hbChhcnJheShFeGVjdXRpb25SZXN1bHRUeXBlKSksXG4gIGVycm9yOiBvcHRpb25hbChzdHJpbmcoKSksXG59KTtcbmV4cG9ydCB0eXBlIERldkluc3BlY3RSZXN1bHRzID0gSW5mZXI8dHlwZW9mIERldkluc3BlY3RSZXN1bHRzPjtcblxuZXhwb3J0IHR5cGUgU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlUXVlcnkgPSB7XG4gIGZpbHRlcj86IFRyYW5zYWN0aW9uRmlsdGVyO1xuICBvcHRpb25zPzogU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlT3B0aW9ucztcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRmlsdGVyID1cbiAgfCB7XG4gICAgICBNb3ZlRnVuY3Rpb246IHtcbiAgICAgICAgcGFja2FnZTogT2JqZWN0SWQ7XG4gICAgICAgIG1vZHVsZTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgZnVuY3Rpb246IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgIH1cbiAgfCB7IElucHV0T2JqZWN0OiBPYmplY3RJZCB9XG4gIHwgeyBDaGFuZ2VkT2JqZWN0OiBPYmplY3RJZCB9XG4gIHwgeyBGcm9tQWRkcmVzczogU3VpQWRkcmVzcyB9XG4gIHwgeyBUb0FkZHJlc3M6IFN1aUFkZHJlc3MgfTtcblxuZXhwb3J0IHR5cGUgRW1wdHlTaWduSW5mbyA9IG9iamVjdDtcbmV4cG9ydCB0eXBlIEF1dGhvcml0eU5hbWUgPSBJbmZlcjx0eXBlb2YgQXV0aG9yaXR5TmFtZT47XG5leHBvcnQgY29uc3QgQXV0aG9yaXR5TmFtZSA9IHN0cmluZygpO1xuXG5leHBvcnQgY29uc3QgU3VpVHJhbnNhY3Rpb25CbG9jayA9IG9iamVjdCh7XG4gIGRhdGE6IFN1aVRyYW5zYWN0aW9uQmxvY2tEYXRhLFxuICB0eFNpZ25hdHVyZXM6IGFycmF5KHN0cmluZygpKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3VpVHJhbnNhY3Rpb25CbG9jayA9IEluZmVyPHR5cGVvZiBTdWlUcmFuc2FjdGlvbkJsb2NrPjtcblxuZXhwb3J0IGNvbnN0IFN1aU9iamVjdENoYW5nZVB1Ymxpc2hlZCA9IG9iamVjdCh7XG4gIHR5cGU6IGxpdGVyYWwoJ3B1Ymxpc2hlZCcpLFxuICBwYWNrYWdlSWQ6IE9iamVjdElkLFxuICB2ZXJzaW9uOiBTZXF1ZW5jZU51bWJlcixcbiAgZGlnZXN0OiBPYmplY3REaWdlc3QsXG4gIG1vZHVsZXM6IGFycmF5KHN0cmluZygpKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3VpT2JqZWN0Q2hhbmdlUHVibGlzaGVkID0gSW5mZXI8dHlwZW9mIFN1aU9iamVjdENoYW5nZVB1Ymxpc2hlZD47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RDaGFuZ2VUcmFuc2ZlcnJlZCA9IG9iamVjdCh7XG4gIHR5cGU6IGxpdGVyYWwoJ3RyYW5zZmVycmVkJyksXG4gIHNlbmRlcjogU3VpQWRkcmVzcyxcbiAgcmVjaXBpZW50OiBPYmplY3RPd25lcixcbiAgb2JqZWN0VHlwZTogc3RyaW5nKCksXG4gIG9iamVjdElkOiBPYmplY3RJZCxcbiAgdmVyc2lvbjogU2VxdWVuY2VOdW1iZXIsXG4gIGRpZ2VzdDogT2JqZWN0RGlnZXN0LFxufSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3RDaGFuZ2VUcmFuc2ZlcnJlZCA9IEluZmVyPHR5cGVvZiBTdWlPYmplY3RDaGFuZ2VUcmFuc2ZlcnJlZD47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RDaGFuZ2VNdXRhdGVkID0gb2JqZWN0KHtcbiAgdHlwZTogbGl0ZXJhbCgnbXV0YXRlZCcpLFxuICBzZW5kZXI6IFN1aUFkZHJlc3MsXG4gIG93bmVyOiBPYmplY3RPd25lcixcbiAgb2JqZWN0VHlwZTogc3RyaW5nKCksXG4gIG9iamVjdElkOiBPYmplY3RJZCxcbiAgdmVyc2lvbjogU2VxdWVuY2VOdW1iZXIsXG4gIHByZXZpb3VzVmVyc2lvbjogU2VxdWVuY2VOdW1iZXIsXG4gIGRpZ2VzdDogT2JqZWN0RGlnZXN0LFxufSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3RDaGFuZ2VNdXRhdGVkID0gSW5mZXI8dHlwZW9mIFN1aU9iamVjdENoYW5nZU11dGF0ZWQ+O1xuXG5leHBvcnQgY29uc3QgU3VpT2JqZWN0Q2hhbmdlRGVsZXRlZCA9IG9iamVjdCh7XG4gIHR5cGU6IGxpdGVyYWwoJ2RlbGV0ZWQnKSxcbiAgc2VuZGVyOiBTdWlBZGRyZXNzLFxuICBvYmplY3RUeXBlOiBzdHJpbmcoKSxcbiAgb2JqZWN0SWQ6IE9iamVjdElkLFxuICB2ZXJzaW9uOiBTZXF1ZW5jZU51bWJlcixcbn0pO1xuZXhwb3J0IHR5cGUgU3VpT2JqZWN0Q2hhbmdlRGVsZXRlZCA9IEluZmVyPHR5cGVvZiBTdWlPYmplY3RDaGFuZ2VEZWxldGVkPjtcblxuZXhwb3J0IGNvbnN0IFN1aU9iamVjdENoYW5nZVdyYXBwZWQgPSBvYmplY3Qoe1xuICB0eXBlOiBsaXRlcmFsKCd3cmFwcGVkJyksXG4gIHNlbmRlcjogU3VpQWRkcmVzcyxcbiAgb2JqZWN0VHlwZTogc3RyaW5nKCksXG4gIG9iamVjdElkOiBPYmplY3RJZCxcbiAgdmVyc2lvbjogU2VxdWVuY2VOdW1iZXIsXG59KTtcbmV4cG9ydCB0eXBlIFN1aU9iamVjdENoYW5nZVdyYXBwZWQgPSBJbmZlcjx0eXBlb2YgU3VpT2JqZWN0Q2hhbmdlV3JhcHBlZD47XG5cbmV4cG9ydCBjb25zdCBTdWlPYmplY3RDaGFuZ2VDcmVhdGVkID0gb2JqZWN0KHtcbiAgdHlwZTogbGl0ZXJhbCgnY3JlYXRlZCcpLFxuICBzZW5kZXI6IFN1aUFkZHJlc3MsXG4gIG93bmVyOiBPYmplY3RPd25lcixcbiAgb2JqZWN0VHlwZTogc3RyaW5nKCksXG4gIG9iamVjdElkOiBPYmplY3RJZCxcbiAgdmVyc2lvbjogU2VxdWVuY2VOdW1iZXIsXG4gIGRpZ2VzdDogT2JqZWN0RGlnZXN0LFxufSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3RDaGFuZ2VDcmVhdGVkID0gSW5mZXI8dHlwZW9mIFN1aU9iamVjdENoYW5nZUNyZWF0ZWQ+O1xuXG5leHBvcnQgY29uc3QgU3VpT2JqZWN0Q2hhbmdlID0gdW5pb24oW1xuICBTdWlPYmplY3RDaGFuZ2VQdWJsaXNoZWQsXG4gIFN1aU9iamVjdENoYW5nZVRyYW5zZmVycmVkLFxuICBTdWlPYmplY3RDaGFuZ2VNdXRhdGVkLFxuICBTdWlPYmplY3RDaGFuZ2VEZWxldGVkLFxuICBTdWlPYmplY3RDaGFuZ2VXcmFwcGVkLFxuICBTdWlPYmplY3RDaGFuZ2VDcmVhdGVkLFxuXSk7XG5leHBvcnQgdHlwZSBTdWlPYmplY3RDaGFuZ2UgPSBJbmZlcjx0eXBlb2YgU3VpT2JqZWN0Q2hhbmdlPjtcblxuZXhwb3J0IGNvbnN0IEJhbGFuY2VDaGFuZ2UgPSBvYmplY3Qoe1xuICBvd25lcjogT2JqZWN0T3duZXIsXG4gIGNvaW5UeXBlOiBzdHJpbmcoKSxcbiAgLyogQ29pbiBiYWxhbmNlIGNoYW5nZShwb3NpdGl2ZSBtZWFucyByZWNlaXZlLCBuZWdhdGl2ZSBtZWFucyBzZW5kKSAqL1xuICBhbW91bnQ6IHN0cmluZygpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UgPSBvYmplY3Qoe1xuICBkaWdlc3Q6IFRyYW5zYWN0aW9uRGlnZXN0LFxuICB0cmFuc2FjdGlvbjogb3B0aW9uYWwoU3VpVHJhbnNhY3Rpb25CbG9jayksXG4gIGVmZmVjdHM6IG9wdGlvbmFsKFRyYW5zYWN0aW9uRWZmZWN0cyksXG4gIGV2ZW50czogb3B0aW9uYWwoVHJhbnNhY3Rpb25FdmVudHMpLFxuICB0aW1lc3RhbXBNczogb3B0aW9uYWwobnVtYmVyKCkpLFxuICBjaGVja3BvaW50OiBvcHRpb25hbChudW1iZXIoKSksXG4gIGNvbmZpcm1lZExvY2FsRXhlY3V0aW9uOiBvcHRpb25hbChib29sZWFuKCkpLFxuICBvYmplY3RDaGFuZ2VzOiBvcHRpb25hbChhcnJheShTdWlPYmplY3RDaGFuZ2UpKSxcbiAgYmFsYW5jZUNoYW5nZXM6IG9wdGlvbmFsKGFycmF5KEJhbGFuY2VDaGFuZ2UpKSxcbiAgLyogRXJyb3JzIHRoYXQgb2NjdXJyZWQgaW4gZmV0Y2hpbmcvc2VyaWFsaXppbmcgdGhlIHRyYW5zYWN0aW9uLiAqL1xuICBlcnJvcnM6IG9wdGlvbmFsKGFycmF5KHN0cmluZygpKSksXG59KTtcbmV4cG9ydCB0eXBlIFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSA9IEluZmVyPHR5cGVvZiBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2U+O1xuXG5leHBvcnQgY29uc3QgU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlT3B0aW9ucyA9IG9iamVjdCh7XG4gIC8qIFdoZXRoZXIgdG8gc2hvdyB0cmFuc2FjdGlvbiBpbnB1dCBkYXRhLiBEZWZhdWx0IHRvIGJlIGZhbHNlLiAqL1xuICBzaG93SW5wdXQ6IG9wdGlvbmFsKGJvb2xlYW4oKSksXG4gIC8qIFdoZXRoZXIgdG8gc2hvdyB0cmFuc2FjdGlvbiBlZmZlY3RzLiBEZWZhdWx0IHRvIGJlIGZhbHNlLiAqL1xuICBzaG93RWZmZWN0czogb3B0aW9uYWwoYm9vbGVhbigpKSxcbiAgLyogV2hldGhlciB0byBzaG93IHRyYW5zYWN0aW9uIGV2ZW50cy4gRGVmYXVsdCB0byBiZSBmYWxzZS4gKi9cbiAgc2hvd0V2ZW50czogb3B0aW9uYWwoYm9vbGVhbigpKSxcbiAgLyogV2hldGhlciB0byBzaG93IG9iamVjdCBjaGFuZ2VzLiBEZWZhdWx0IHRvIGJlIGZhbHNlLiAqL1xuICBzaG93T2JqZWN0Q2hhbmdlczogb3B0aW9uYWwoYm9vbGVhbigpKSxcbiAgLyogV2hldGhlciB0byBzaG93IGNvaW4gYmFsYW5jZSBjaGFuZ2VzLiBEZWZhdWx0IHRvIGJlIGZhbHNlLiAqL1xuICBzaG93QmFsYW5jZUNoYW5nZXM6IG9wdGlvbmFsKGJvb2xlYW4oKSksXG59KTtcblxuZXhwb3J0IHR5cGUgU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlT3B0aW9ucyA9IEluZmVyPHR5cGVvZiBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2VPcHRpb25zPjtcblxuZXhwb3J0IGNvbnN0IFBhZ2luYXRlZFRyYW5zYWN0aW9uUmVzcG9uc2UgPSBvYmplY3Qoe1xuICBkYXRhOiBhcnJheShTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UpLFxuICBuZXh0Q3Vyc29yOiB1bmlvbihbVHJhbnNhY3Rpb25EaWdlc3QsIGxpdGVyYWwobnVsbCldKSxcbiAgaGFzTmV4dFBhZ2U6IGJvb2xlYW4oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUGFnaW5hdGVkVHJhbnNhY3Rpb25SZXNwb25zZSA9IEluZmVyPHR5cGVvZiBQYWdpbmF0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPjtcbmV4cG9ydCBjb25zdCBEcnlSdW5UcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UgPSBvYmplY3Qoe1xuICBlZmZlY3RzOiBUcmFuc2FjdGlvbkVmZmVjdHMsXG4gIGV2ZW50czogVHJhbnNhY3Rpb25FdmVudHMsXG4gIG9iamVjdENoYW5nZXM6IGFycmF5KFN1aU9iamVjdENoYW5nZSksXG4gIGJhbGFuY2VDaGFuZ2VzOiBhcnJheShCYWxhbmNlQ2hhbmdlKSxcbn0pO1xuZXhwb3J0IHR5cGUgRHJ5UnVuVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlID0gSW5mZXI8dHlwZW9mIERyeVJ1blRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlbHBlciBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uKHR4OiBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UpOiBTdWlUcmFuc2FjdGlvbkJsb2NrIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR4LnRyYW5zYWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25EaWdlc3QodHg6IFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSk6IFRyYW5zYWN0aW9uRGlnZXN0IHtcbiAgcmV0dXJuIHR4LmRpZ2VzdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uU2lnbmF0dXJlKHR4OiBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eC50cmFuc2FjdGlvbj8udHhTaWduYXR1cmVzO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUcmFuc2FjdGlvbkRhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25TZW5kZXIodHg6IFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSk6IFN1aUFkZHJlc3MgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHgudHJhbnNhY3Rpb24/LmRhdGEuc2VuZGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2FzRGF0YSh0eDogU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlKTogU3VpR2FzRGF0YSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eC50cmFuc2FjdGlvbj8uZGF0YS5nYXNEYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25HYXNPYmplY3QodHg6IFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSk6IFN1aU9iamVjdFJlZltdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldEdhc0RhdGEodHgpPy5wYXltZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25HYXNQcmljZSh0eDogU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlKSB7XG4gIHJldHVybiBnZXRHYXNEYXRhKHR4KT8ucHJpY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkdhc0J1ZGdldCh0eDogU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlKSB7XG4gIHJldHVybiBnZXRHYXNEYXRhKHR4KT8uYnVkZ2V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhbmdlRXBvY2hUcmFuc2FjdGlvbihkYXRhOiBTdWlUcmFuc2FjdGlvbkJsb2NrS2luZCk6IFN1aUNoYW5nZUVwb2NoIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGRhdGEua2luZCA9PT0gJ0NoYW5nZUVwb2NoJyA/IGRhdGEgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25zZW5zdXNDb21taXRQcm9sb2d1ZVRyYW5zYWN0aW9uKFxuICBkYXRhOiBTdWlUcmFuc2FjdGlvbkJsb2NrS2luZFxuKTogU3VpQ29uc2Vuc3VzQ29tbWl0UHJvbG9ndWUgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YS5raW5kID09PSAnQ29uc2Vuc3VzQ29tbWl0UHJvbG9ndWUnID8gZGF0YSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uS2luZChkYXRhOiBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UpOiBTdWlUcmFuc2FjdGlvbkJsb2NrS2luZCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBkYXRhLnRyYW5zYWN0aW9uPy5kYXRhLnRyYW5zYWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25LaW5kTmFtZShkYXRhOiBTdWlUcmFuc2FjdGlvbkJsb2NrS2luZCk6IFRyYW5zYWN0aW9uS2luZE5hbWUge1xuICByZXR1cm4gZGF0YS5raW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24oZGF0YTogU3VpVHJhbnNhY3Rpb25CbG9ja0tpbmQpOiBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBkYXRhLmtpbmQgPT09ICdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbicgPyBkYXRhIDogdW5kZWZpbmVkO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeGVjdXRpb25TdGF0dXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhlY3V0aW9uU3RhdHVzVHlwZShkYXRhOiBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UpOiBFeGVjdXRpb25TdGF0dXNUeXBlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldEV4ZWN1dGlvblN0YXR1cyhkYXRhKT8uc3RhdHVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhlY3V0aW9uU3RhdHVzKGRhdGE6IFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSk6IEV4ZWN1dGlvblN0YXR1cyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRUcmFuc2FjdGlvbkVmZmVjdHMoZGF0YSk/LnN0YXR1cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4ZWN1dGlvblN0YXR1c0Vycm9yKGRhdGE6IFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRFeGVjdXRpb25TdGF0dXMoZGF0YSk/LmVycm9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhlY3V0aW9uU3RhdHVzR2FzU3VtbWFyeShcbiAgZGF0YTogU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlIHwgVHJhbnNhY3Rpb25FZmZlY3RzXG4pOiBHYXNDb3N0U3VtbWFyeSB8IHVuZGVmaW5lZCB7XG4gIGlmIChpcyhkYXRhLCBUcmFuc2FjdGlvbkVmZmVjdHMpKSB7XG4gICAgcmV0dXJuIGRhdGEuZ2FzVXNlZDtcbiAgfVxuICByZXR1cm4gZ2V0VHJhbnNhY3Rpb25FZmZlY3RzKGRhdGEpPy5nYXNVc2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG90YWxHYXNVc2VkKGRhdGE6IFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSB8IFRyYW5zYWN0aW9uRWZmZWN0cyk6IGJpZ2ludCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGdhc1N1bW1hcnkgPSBnZXRFeGVjdXRpb25TdGF0dXNHYXNTdW1tYXJ5KGRhdGEpO1xuICByZXR1cm4gZ2FzU3VtbWFyeVxuICAgID8gQmlnSW50KGdhc1N1bW1hcnkuY29tcHV0YXRpb25Db3N0KSArIEJpZ0ludChnYXNTdW1tYXJ5LnN0b3JhZ2VDb3N0KSAtIEJpZ0ludChnYXNTdW1tYXJ5LnN0b3JhZ2VSZWJhdGUpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3RhbEdhc1VzZWRVcHBlckJvdW5kKGRhdGE6IFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSB8IFRyYW5zYWN0aW9uRWZmZWN0cyk6IGJpZ2ludCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGdhc1N1bW1hcnkgPSBnZXRFeGVjdXRpb25TdGF0dXNHYXNTdW1tYXJ5KGRhdGEpO1xuICByZXR1cm4gZ2FzU3VtbWFyeSA/IEJpZ0ludChnYXNTdW1tYXJ5LmNvbXB1dGF0aW9uQ29zdCkgKyBCaWdJbnQoZ2FzU3VtbWFyeS5zdG9yYWdlQ29zdCkgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkVmZmVjdHMoZGF0YTogU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlKTogVHJhbnNhY3Rpb25FZmZlY3RzIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGRhdGEuZWZmZWN0cztcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUcmFuc2FjdGlvbiBFZmZlY3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZlbnRzKGRhdGE6IFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSk6IFN1aUV2ZW50W10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YS5ldmVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDcmVhdGVkT2JqZWN0cyhkYXRhOiBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UpOiBPd25lZE9iamVjdFJlZltdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldFRyYW5zYWN0aW9uRWZmZWN0cyhkYXRhKT8uY3JlYXRlZDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRyYW5zYWN0aW9uUmVzcG9uc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVzdGFtcEZyb21UcmFuc2FjdGlvblJlc3BvbnNlKGRhdGE6IFN1aVRyYW5zYWN0aW9uQmxvY2tSZXNwb25zZSk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBkYXRhLnRpbWVzdGFtcE1zID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG5ld2x5IGNyZWF0ZWQgY29pbiByZWZzIGFmdGVyIGEgc3BsaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdseUNyZWF0ZWRDb2luUmVmc0FmdGVyU3BsaXQoZGF0YTogU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlKTogU3VpT2JqZWN0UmVmW10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0VHJhbnNhY3Rpb25FZmZlY3RzKGRhdGEpPy5jcmVhdGVkPy5tYXAoKGMpID0+IGMucmVmZXJlbmNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdENoYW5nZXMoZGF0YTogU3VpVHJhbnNhY3Rpb25CbG9ja1Jlc3BvbnNlKTogU3VpT2JqZWN0Q2hhbmdlW10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YS5vYmplY3RDaGFuZ2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVibGlzaGVkT2JqZWN0Q2hhbmdlcyhkYXRhOiBTdWlUcmFuc2FjdGlvbkJsb2NrUmVzcG9uc2UpOiBTdWlPYmplY3RDaGFuZ2VQdWJsaXNoZWRbXSB7XG4gIHJldHVybiAoZGF0YS5vYmplY3RDaGFuZ2VzPy5maWx0ZXIoKGEpID0+IGlzKGEsIFN1aU9iamVjdENoYW5nZVB1Ymxpc2hlZCkpIGFzIFN1aU9iamVjdENoYW5nZVB1Ymxpc2hlZFtdKSA/PyBbXTtcbn1cbiJdfQ==