@bitgo/account-lib 2.20.0-rc.3 → 2.20.0-rc.32
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.
- package/.mocharc.js +1 -1
- package/CHANGELOG.md +311 -0
- package/dist/resources/README.md +8 -2
- package/dist/resources/trx/protobuf/tron.js +5 -1
- package/dist/src/coin/dot/addressInitializationBuilder.d.ts +1 -2
- package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/addressInitializationBuilder.js +60 -83
- package/dist/src/coin/dot/batchTransactionBuilder.d.ts +1 -1
- package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/batchTransactionBuilder.js +55 -78
- package/dist/src/coin/dot/claimBuilder.d.ts +1 -2
- package/dist/src/coin/dot/claimBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/claimBuilder.js +49 -69
- package/dist/src/coin/dot/errors.d.ts +1 -1
- package/dist/src/coin/dot/errors.d.ts.map +1 -1
- package/dist/src/coin/dot/errors.js +12 -33
- package/dist/src/coin/dot/iface.d.ts +1 -2
- package/dist/src/coin/dot/iface.d.ts.map +1 -1
- package/dist/src/coin/dot/iface.js +1 -1
- package/dist/src/coin/dot/index.js +3 -3
- package/dist/src/coin/dot/keyPair.d.ts +2 -3
- package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
- package/dist/src/coin/dot/keyPair.js +34 -56
- package/dist/src/coin/dot/singletonRegistry.js +6 -9
- package/dist/src/coin/dot/stakingBuilder.d.ts +1 -2
- package/dist/src/coin/dot/stakingBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/stakingBuilder.js +55 -73
- package/dist/src/coin/dot/transaction.d.ts +1 -2
- package/dist/src/coin/dot/transaction.d.ts.map +1 -1
- package/dist/src/coin/dot/transaction.js +154 -170
- package/dist/src/coin/dot/transactionBuilder.d.ts +2 -3
- package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilder.js +133 -205
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilderFactory.js +46 -65
- package/dist/src/coin/dot/transferBuilder.d.ts +1 -2
- package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transferBuilder.js +71 -88
- package/dist/src/coin/dot/txnSchema.js +17 -15
- package/dist/src/coin/dot/unnominateBuilder.d.ts +1 -1
- package/dist/src/coin/dot/unnominateBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/unnominateBuilder.js +24 -46
- package/dist/src/coin/dot/unstakeBuilder.d.ts +1 -1
- package/dist/src/coin/dot/unstakeBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/unstakeBuilder.js +38 -60
- package/dist/src/coin/dot/utils.d.ts +9 -3
- package/dist/src/coin/dot/utils.d.ts.map +1 -1
- package/dist/src/coin/dot/utils.js +112 -102
- package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +1 -1
- package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/withdrawUnstakedBuilder.js +38 -60
- package/dist/src/coin/etc/index.d.ts +2 -4
- package/dist/src/coin/etc/index.d.ts.map +1 -1
- package/dist/src/coin/etc/index.js +7 -9
- package/dist/src/coin/etc/resources.js +3 -3
- package/dist/src/coin/etc/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/etc/transactionBuilder.js +22 -41
- package/dist/src/coin/etc/transferBuilder.d.ts +1 -1
- package/dist/src/coin/etc/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/etc/transferBuilder.js +8 -28
- package/dist/src/coin/etc/utils.d.ts +1 -2
- package/dist/src/coin/etc/utils.d.ts.map +1 -1
- package/dist/src/coin/etc/utils.js +10 -50
- package/dist/src/coin/eth2/keyPair.d.ts +1 -2
- package/dist/src/coin/eth2/keyPair.d.ts.map +1 -1
- package/dist/src/coin/eth2/keyPair.js +19 -37
- package/dist/src/coin/hbar/coinTransferBuilder.d.ts +46 -0
- package/dist/src/coin/hbar/coinTransferBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/coinTransferBuilder.js +143 -0
- package/dist/src/coin/hbar/constants.d.ts +8 -0
- package/dist/src/coin/hbar/constants.d.ts.map +1 -0
- package/dist/src/coin/hbar/constants.js +12 -0
- package/dist/src/coin/hbar/iface.d.ts +49 -0
- package/dist/src/coin/hbar/iface.d.ts.map +1 -0
- package/dist/src/coin/hbar/iface.js +3 -0
- package/dist/src/coin/hbar/index.d.ts +3 -0
- package/dist/src/coin/hbar/index.d.ts.map +1 -1
- package/dist/src/coin/hbar/index.js +9 -3
- package/dist/src/coin/hbar/keyPair.d.ts +2 -3
- package/dist/src/coin/hbar/keyPair.d.ts.map +1 -1
- package/dist/src/coin/hbar/keyPair.js +31 -50
- package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts +38 -0
- package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/tokenAssociateBuilder.js +126 -0
- package/dist/src/coin/hbar/tokenTransferBuilder.d.ts +25 -0
- package/dist/src/coin/hbar/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/coin/hbar/tokenTransferBuilder.js +115 -0
- package/dist/src/coin/hbar/transaction.d.ts +30 -23
- package/dist/src/coin/hbar/transaction.d.ts.map +1 -1
- package/dist/src/coin/hbar/transaction.js +197 -193
- package/dist/src/coin/hbar/transactionBuilder.d.ts +23 -25
- package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/transactionBuilder.js +146 -223
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +14 -4
- package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/hbar/transactionBuilderFactory.js +50 -57
- package/dist/src/coin/hbar/transferBuilder.d.ts +9 -29
- package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/transferBuilder.js +37 -157
- package/dist/src/coin/hbar/utils.d.ts +99 -58
- package/dist/src/coin/hbar/utils.d.ts.map +1 -1
- package/dist/src/coin/hbar/utils.js +183 -105
- package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +5 -5
- package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/walletInitializationBuilder.js +68 -113
- package/dist/src/coin/near/contractCallWrapper.js +46 -65
- package/dist/src/coin/near/errors.d.ts +1 -1
- package/dist/src/coin/near/errors.d.ts.map +1 -1
- package/dist/src/coin/near/errors.js +7 -25
- package/dist/src/coin/near/iface.d.ts +1 -2
- package/dist/src/coin/near/iface.d.ts.map +1 -1
- package/dist/src/coin/near/iface.js +1 -1
- package/dist/src/coin/near/index.js +2 -2
- package/dist/src/coin/near/keyPair.d.ts +1 -2
- package/dist/src/coin/near/keyPair.d.ts.map +1 -1
- package/dist/src/coin/near/keyPair.js +23 -40
- package/dist/src/coin/near/stakingActivateBuilder.d.ts +1 -1
- package/dist/src/coin/near/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/stakingActivateBuilder.js +36 -105
- package/dist/src/coin/near/stakingDeactivateBuilder.d.ts +1 -1
- package/dist/src/coin/near/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/stakingDeactivateBuilder.js +36 -105
- package/dist/src/coin/near/stakingWithdrawBuilder.d.ts +1 -1
- package/dist/src/coin/near/stakingWithdrawBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/stakingWithdrawBuilder.js +36 -105
- package/dist/src/coin/near/transaction.d.ts +1 -2
- package/dist/src/coin/near/transaction.d.ts.map +1 -1
- package/dist/src/coin/near/transaction.js +125 -154
- package/dist/src/coin/near/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/transactionBuilder.js +81 -144
- package/dist/src/coin/near/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/near/transactionBuilderFactory.js +33 -51
- package/dist/src/coin/near/transferBuilder.d.ts +1 -1
- package/dist/src/coin/near/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/transferBuilder.js +27 -91
- package/dist/src/coin/near/utils.d.ts +1 -1
- package/dist/src/coin/near/utils.d.ts.map +1 -1
- package/dist/src/coin/near/utils.js +35 -45
- package/dist/src/coin/near/walletInitializationBuilder.d.ts +1 -1
- package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/near/walletInitializationBuilder.js +13 -70
- package/dist/src/coin/polygon/index.d.ts +6 -0
- package/dist/src/coin/polygon/index.d.ts.map +1 -0
- package/dist/src/coin/{celo → polygon}/index.js +7 -9
- package/dist/src/coin/polygon/resources.d.ts +10 -0
- package/dist/src/coin/polygon/resources.d.ts.map +1 -0
- package/dist/src/coin/polygon/resources.js +25 -0
- package/dist/src/coin/{avaxc → polygon}/transactionBuilder.d.ts +1 -1
- package/dist/src/coin/polygon/transactionBuilder.d.ts.map +1 -0
- package/dist/src/coin/polygon/transactionBuilder.js +44 -0
- package/dist/src/coin/{avaxc → polygon}/transferBuilder.d.ts +4 -2
- package/dist/src/coin/polygon/transferBuilder.d.ts.map +1 -0
- package/dist/src/coin/polygon/transferBuilder.js +27 -0
- package/dist/src/coin/polygon/utils.d.ts +17 -0
- package/dist/src/coin/polygon/utils.d.ts.map +1 -0
- package/dist/src/coin/polygon/utils.js +42 -0
- package/dist/src/coin/polygon/walletUtil.d.ts +48 -0
- package/dist/src/coin/polygon/walletUtil.d.ts.map +1 -0
- package/dist/src/coin/polygon/walletUtil.js +632 -0
- package/dist/src/coin/rbtc/index.d.ts +2 -4
- package/dist/src/coin/rbtc/index.d.ts.map +1 -1
- package/dist/src/coin/rbtc/index.js +7 -9
- package/dist/src/coin/rbtc/resources.js +3 -3
- package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/rbtc/transactionBuilder.js +21 -40
- package/dist/src/coin/rbtc/transferBuilder.d.ts +1 -1
- package/dist/src/coin/rbtc/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/rbtc/transferBuilder.js +8 -28
- package/dist/src/coin/rbtc/utils.d.ts +1 -2
- package/dist/src/coin/rbtc/utils.d.ts.map +1 -1
- package/dist/src/coin/rbtc/utils.js +10 -50
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts +12 -3
- package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/ataInitializationBuilder.js +74 -126
- package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +1 -1
- package/dist/src/coin/sol/ataInitializationTransaction.js +36 -59
- package/dist/src/coin/sol/iface.d.ts +2 -1
- package/dist/src/coin/sol/iface.d.ts.map +1 -1
- package/dist/src/coin/sol/iface.js +1 -1
- package/dist/src/coin/sol/index.js +3 -3
- package/dist/src/coin/sol/instructionParamsFactory.d.ts +1 -1
- package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -1
- package/dist/src/coin/sol/instructionParamsFactory.js +72 -70
- package/dist/src/coin/sol/keyPair.d.ts +1 -2
- package/dist/src/coin/sol/keyPair.d.ts.map +1 -1
- package/dist/src/coin/sol/keyPair.js +24 -42
- package/dist/src/coin/sol/solInstructionFactory.js +33 -33
- package/dist/src/coin/sol/stakingActivateBuilder.d.ts +1 -1
- package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/stakingActivateBuilder.js +45 -113
- package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +1 -1
- package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/stakingDeactivateBuilder.js +36 -104
- package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +1 -1
- package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/stakingWithdrawBuilder.js +41 -109
- package/dist/src/coin/sol/tokenEncodeDecode.js +46 -75
- package/dist/src/coin/sol/tokenTransferBuilder.d.ts +1 -1
- package/dist/src/coin/sol/tokenTransferBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/tokenTransferBuilder.js +42 -115
- package/dist/src/coin/sol/transaction.d.ts +1 -2
- package/dist/src/coin/sol/transaction.d.ts.map +1 -1
- package/dist/src/coin/sol/transaction.js +130 -221
- package/dist/src/coin/sol/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/transactionBuilder.js +104 -171
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/sol/transactionBuilderFactory.js +46 -64
- package/dist/src/coin/sol/transferBuilder.d.ts +1 -1
- package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/transferBuilder.js +37 -108
- package/dist/src/coin/sol/utils.d.ts +1 -1
- package/dist/src/coin/sol/utils.d.ts.map +1 -1
- package/dist/src/coin/sol/utils.js +49 -117
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts +1 -1
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/walletInitializationBuilder.js +39 -107
- package/dist/src/coin/trx/address.d.ts +1 -1
- package/dist/src/coin/trx/address.d.ts.map +1 -1
- package/dist/src/coin/trx/address.js +3 -6
- package/dist/src/coin/trx/contractCallBuilder.d.ts +1 -1
- package/dist/src/coin/trx/contractCallBuilder.d.ts.map +1 -1
- package/dist/src/coin/trx/contractCallBuilder.js +100 -160
- package/dist/src/coin/trx/iface.d.ts +1 -1
- package/dist/src/coin/trx/iface.d.ts.map +1 -1
- package/dist/src/coin/trx/iface.js +1 -1
- package/dist/src/coin/trx/index.js +4 -4
- package/dist/src/coin/trx/keyPair.d.ts +1 -3
- package/dist/src/coin/trx/keyPair.d.ts.map +1 -1
- package/dist/src/coin/trx/keyPair.js +37 -57
- package/dist/src/coin/trx/transaction.d.ts +1 -3
- package/dist/src/coin/trx/transaction.d.ts.map +1 -1
- package/dist/src/coin/trx/transaction.js +84 -124
- package/dist/src/coin/trx/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/trx/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/trx/transactionBuilder.js +72 -134
- package/dist/src/coin/trx/utils.js +57 -59
- package/dist/src/coin/trx/wrappedBuilder.d.ts +1 -2
- package/dist/src/coin/trx/wrappedBuilder.d.ts.map +1 -1
- package/dist/src/coin/trx/wrappedBuilder.js +43 -101
- package/dist/src/coin/xrp/index.js +2 -2
- package/dist/src/coin/xrp/keyPair.d.ts +1 -2
- package/dist/src/coin/xrp/keyPair.d.ts.map +1 -1
- package/dist/src/coin/xrp/keyPair.js +6 -23
- package/dist/src/coin/xrp/transaction.d.ts +1 -2
- package/dist/src/coin/xrp/transaction.d.ts.map +1 -1
- package/dist/src/coin/xrp/transaction.js +13 -34
- package/dist/src/coin/xrp/transactionBuilder.d.ts +1 -2
- package/dist/src/coin/xrp/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/xrp/transactionBuilder.js +29 -51
- package/dist/src/coin/xrp/transactionBuilderFactory.d.ts +1 -1
- package/dist/src/coin/xrp/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/xrp/transactionBuilderFactory.js +17 -35
- package/dist/src/coin/xrp/transferBuilder.d.ts +1 -1
- package/dist/src/coin/xrp/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/xrp/transferBuilder.js +16 -73
- package/dist/src/coin/xrp/utils.d.ts +1 -1
- package/dist/src/coin/xrp/utils.d.ts.map +1 -1
- package/dist/src/coin/xrp/utils.js +22 -25
- package/dist/src/coin/xrp/walletInitializationBuilder.d.ts +1 -1
- package/dist/src/coin/xrp/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/xrp/walletInitializationBuilder.js +16 -73
- package/dist/src/index.d.ts +24 -16
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +58 -50
- package/dist/src/keyPair/index.d.ts +1 -2
- package/dist/src/keyPair/index.d.ts.map +1 -1
- package/dist/src/keyPair/index.js +9 -9
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +9 -9
- package/dist/tsconfig.tsbuildinfo +29398 -22560
- package/package.json +25 -58
- package/resources/README.md +8 -2
- package/resources/trx/protobuf/tron.js +5 -1
- package/dist/browser/bitgo-account-lib.js +0 -2
- package/dist/browser/bitgo-account-lib.js.LICENSE.txt +0 -335
- package/dist/resources/hbar/protobuf/BasicTypes.proto +0 -424
- package/dist/resources/hbar/protobuf/CryptoCreate.proto +0 -47
- package/dist/resources/hbar/protobuf/CryptoTransfer.proto +0 -33
- package/dist/resources/hbar/protobuf/Duration.proto +0 -28
- package/dist/resources/hbar/protobuf/Timestamp.proto +0 -34
- package/dist/resources/hbar/protobuf/Transaction.proto +0 -35
- package/dist/resources/hbar/protobuf/TransactionBody.proto +0 -24
- package/dist/resources/hbar/protobuf/TransactionContents.proto +0 -33
- package/dist/resources/hbar/protobuf/hedera.d.ts +0 -4612
- package/dist/resources/hbar/protobuf/hedera.js +0 -12192
- package/dist/src/coin/algo/assetTransferBuilder.d.ts +0 -43
- package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +0 -1
- package/dist/src/coin/algo/assetTransferBuilder.js +0 -127
- package/dist/src/coin/algo/errors.d.ts +0 -11
- package/dist/src/coin/algo/errors.d.ts.map +0 -1
- package/dist/src/coin/algo/errors.js +0 -51
- package/dist/src/coin/algo/ifaces.d.ts +0 -46
- package/dist/src/coin/algo/ifaces.d.ts.map +0 -1
- package/dist/src/coin/algo/ifaces.js +0 -3
- package/dist/src/coin/algo/index.d.ts +0 -13
- package/dist/src/coin/algo/index.d.ts.map +0 -1
- package/dist/src/coin/algo/index.js +0 -47
- package/dist/src/coin/algo/keyPair.d.ts +0 -26
- package/dist/src/coin/algo/keyPair.d.ts.map +0 -1
- package/dist/src/coin/algo/keyPair.js +0 -95
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +0 -104
- package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +0 -1
- package/dist/src/coin/algo/keyRegistrationBuilder.js +0 -262
- package/dist/src/coin/algo/seedEncoding.d.ts +0 -25
- package/dist/src/coin/algo/seedEncoding.d.ts.map +0 -1
- package/dist/src/coin/algo/seedEncoding.js +0 -100
- package/dist/src/coin/algo/transaction.d.ts +0 -76
- package/dist/src/coin/algo/transaction.d.ts.map +0 -1
- package/dist/src/coin/algo/transaction.js +0 -287
- package/dist/src/coin/algo/transactionBuilder.d.ts +0 -205
- package/dist/src/coin/algo/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/algo/transactionBuilder.js +0 -445
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts +0 -16
- package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/coin/algo/transactionBuilderFactory.js +0 -70
- package/dist/src/coin/algo/transferBuilder.d.ts +0 -41
- package/dist/src/coin/algo/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/algo/transferBuilder.js +0 -111
- package/dist/src/coin/algo/txnSchema.d.ts +0 -7
- package/dist/src/coin/algo/txnSchema.d.ts.map +0 -1
- package/dist/src/coin/algo/txnSchema.js +0 -68
- package/dist/src/coin/algo/utils.d.ts +0 -249
- package/dist/src/coin/algo/utils.d.ts.map +0 -1
- package/dist/src/coin/algo/utils.js +0 -544
- package/dist/src/coin/avaxc/index.d.ts +0 -8
- package/dist/src/coin/avaxc/index.d.ts.map +0 -1
- package/dist/src/coin/avaxc/index.js +0 -35
- package/dist/src/coin/avaxc/keyPair.d.ts +0 -27
- package/dist/src/coin/avaxc/keyPair.d.ts.map +0 -1
- package/dist/src/coin/avaxc/keyPair.js +0 -102
- package/dist/src/coin/avaxc/resources.d.ts +0 -12
- package/dist/src/coin/avaxc/resources.d.ts.map +0 -1
- package/dist/src/coin/avaxc/resources.js +0 -27
- package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/avaxc/transactionBuilder.js +0 -64
- package/dist/src/coin/avaxc/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/avaxc/transferBuilder.js +0 -45
- package/dist/src/coin/avaxc/utils.d.ts +0 -39
- package/dist/src/coin/avaxc/utils.d.ts.map +0 -1
- package/dist/src/coin/avaxc/utils.js +0 -110
- package/dist/src/coin/avaxc/walletUtil.d.ts +0 -22
- package/dist/src/coin/avaxc/walletUtil.d.ts.map +0 -1
- package/dist/src/coin/avaxc/walletUtil.js +0 -62
- package/dist/src/coin/baseCoin/baseKeyPair.d.ts +0 -27
- package/dist/src/coin/baseCoin/baseKeyPair.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseKeyPair.js +0 -3
- package/dist/src/coin/baseCoin/baseTransaction.d.ts +0 -71
- package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseTransaction.js +0 -94
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts +0 -128
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilder.js +0 -179
- package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts +0 -30
- package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.js +0 -20
- package/dist/src/coin/baseCoin/baseUtils.d.ts +0 -45
- package/dist/src/coin/baseCoin/baseUtils.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/baseUtils.js +0 -3
- package/dist/src/coin/baseCoin/blsKeyPair.d.ts +0 -75
- package/dist/src/coin/baseCoin/blsKeyPair.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/blsKeyPair.js +0 -232
- package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts +0 -50
- package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/ed25519KeyPair.js +0 -141
- package/dist/src/coin/baseCoin/enum.d.ts +0 -43
- package/dist/src/coin/baseCoin/enum.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/enum.js +0 -70
- package/dist/src/coin/baseCoin/errors.d.ts +0 -65
- package/dist/src/coin/baseCoin/errors.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/errors.js +0 -156
- package/dist/src/coin/baseCoin/iface.d.ts +0 -162
- package/dist/src/coin/baseCoin/iface.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/iface.js +0 -38
- package/dist/src/coin/baseCoin/index.d.ts +0 -12
- package/dist/src/coin/baseCoin/index.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/index.js +0 -41
- package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts +0 -55
- package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +0 -1
- package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.js +0 -124
- package/dist/src/coin/celo/index.d.ts +0 -8
- package/dist/src/coin/celo/index.d.ts.map +0 -1
- package/dist/src/coin/celo/resources.d.ts +0 -10
- package/dist/src/coin/celo/resources.d.ts.map +0 -1
- package/dist/src/coin/celo/resources.js +0 -26
- package/dist/src/coin/celo/stakingBuilder.d.ts +0 -91
- package/dist/src/coin/celo/stakingBuilder.d.ts.map +0 -1
- package/dist/src/coin/celo/stakingBuilder.js +0 -279
- package/dist/src/coin/celo/stakingCall.d.ts +0 -7
- package/dist/src/coin/celo/stakingCall.d.ts.map +0 -1
- package/dist/src/coin/celo/stakingCall.js +0 -31
- package/dist/src/coin/celo/stakingUtils.d.ts +0 -15
- package/dist/src/coin/celo/stakingUtils.d.ts.map +0 -1
- package/dist/src/coin/celo/stakingUtils.js +0 -99
- package/dist/src/coin/celo/transaction.d.ts +0 -10
- package/dist/src/coin/celo/transaction.d.ts.map +0 -1
- package/dist/src/coin/celo/transaction.js +0 -57
- package/dist/src/coin/celo/transactionBuilder.d.ts +0 -86
- package/dist/src/coin/celo/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/celo/transactionBuilder.js +0 -247
- package/dist/src/coin/celo/transferBuilder.d.ts +0 -19
- package/dist/src/coin/celo/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/celo/transferBuilder.js +0 -47
- package/dist/src/coin/celo/types.d.ts +0 -52
- package/dist/src/coin/celo/types.d.ts.map +0 -1
- package/dist/src/coin/celo/types.js +0 -276
- package/dist/src/coin/celo/utils.d.ts +0 -18
- package/dist/src/coin/celo/utils.d.ts.map +0 -1
- package/dist/src/coin/celo/utils.js +0 -99
- package/dist/src/coin/cspr/constants.d.ts +0 -19
- package/dist/src/coin/cspr/constants.d.ts.map +0 -1
- package/dist/src/coin/cspr/constants.js +0 -28
- package/dist/src/coin/cspr/delegateBuilder.d.ts +0 -49
- package/dist/src/coin/cspr/delegateBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/delegateBuilder.js +0 -175
- package/dist/src/coin/cspr/ifaces.d.ts +0 -69
- package/dist/src/coin/cspr/ifaces.d.ts.map +0 -1
- package/dist/src/coin/cspr/ifaces.js +0 -3
- package/dist/src/coin/cspr/index.d.ts +0 -5
- package/dist/src/coin/cspr/index.d.ts.map +0 -1
- package/dist/src/coin/cspr/index.js +0 -29
- package/dist/src/coin/cspr/keyPair.d.ts +0 -19
- package/dist/src/coin/cspr/keyPair.d.ts.map +0 -1
- package/dist/src/coin/cspr/keyPair.js +0 -94
- package/dist/src/coin/cspr/transaction.d.ts +0 -56
- package/dist/src/coin/cspr/transaction.d.ts.map +0 -1
- package/dist/src/coin/cspr/transaction.js +0 -251
- package/dist/src/coin/cspr/transactionBuilder.d.ts +0 -125
- package/dist/src/coin/cspr/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/transactionBuilder.js +0 -383
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +0 -46
- package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/coin/cspr/transactionBuilderFactory.js +0 -116
- package/dist/src/coin/cspr/transferBuilder.d.ts +0 -39
- package/dist/src/coin/cspr/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/transferBuilder.js +0 -169
- package/dist/src/coin/cspr/undelegateBuilder.d.ts +0 -49
- package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/undelegateBuilder.js +0 -175
- package/dist/src/coin/cspr/utils.d.ts +0 -189
- package/dist/src/coin/cspr/utils.d.ts.map +0 -1
- package/dist/src/coin/cspr/utils.js +0 -483
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +0 -27
- package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +0 -1
- package/dist/src/coin/cspr/walletInitializationBuilder.js +0 -160
- package/dist/src/coin/eth/contractCall.d.ts +0 -8
- package/dist/src/coin/eth/contractCall.d.ts.map +0 -1
- package/dist/src/coin/eth/contractCall.js +0 -18
- package/dist/src/coin/eth/iface.d.ts +0 -122
- package/dist/src/coin/eth/iface.d.ts.map +0 -1
- package/dist/src/coin/eth/iface.js +0 -8
- package/dist/src/coin/eth/index.d.ts +0 -10
- package/dist/src/coin/eth/index.d.ts.map +0 -1
- package/dist/src/coin/eth/index.js +0 -39
- package/dist/src/coin/eth/keyPair.d.ts +0 -27
- package/dist/src/coin/eth/keyPair.d.ts.map +0 -1
- package/dist/src/coin/eth/keyPair.js +0 -104
- package/dist/src/coin/eth/transaction.d.ts +0 -65
- package/dist/src/coin/eth/transaction.d.ts.map +0 -1
- package/dist/src/coin/eth/transaction.js +0 -203
- package/dist/src/coin/eth/transactionBuilder.d.ts +0 -195
- package/dist/src/coin/eth/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/eth/transactionBuilder.js +0 -695
- package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts +0 -47
- package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts.map +0 -1
- package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.js +0 -114
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts +0 -14
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts.map +0 -1
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.js +0 -100
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts +0 -13
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts.map +0 -1
- package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.js +0 -85
- package/dist/src/coin/eth/transferBuilder.d.ts +0 -65
- package/dist/src/coin/eth/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/eth/transferBuilder.js +0 -198
- package/dist/src/coin/eth/types.d.ts +0 -39
- package/dist/src/coin/eth/types.d.ts.map +0 -1
- package/dist/src/coin/eth/types.js +0 -139
- package/dist/src/coin/eth/utils.d.ts +0 -201
- package/dist/src/coin/eth/utils.d.ts.map +0 -1
- package/dist/src/coin/eth/utils.js +0 -533
- package/dist/src/coin/eth/walletUtil.d.ts +0 -19
- package/dist/src/coin/eth/walletUtil.d.ts.map +0 -1
- package/dist/src/coin/eth/walletUtil.js +0 -29
- package/dist/src/coin/hbar/ifaces.d.ts +0 -26
- package/dist/src/coin/hbar/ifaces.d.ts.map +0 -1
- package/dist/src/coin/hbar/ifaces.js +0 -3
- package/dist/src/coin/stx/abstractContractBuilder.d.ts +0 -19
- package/dist/src/coin/stx/abstractContractBuilder.d.ts.map +0 -1
- package/dist/src/coin/stx/abstractContractBuilder.js +0 -140
- package/dist/src/coin/stx/constants.d.ts +0 -8
- package/dist/src/coin/stx/constants.d.ts.map +0 -1
- package/dist/src/coin/stx/constants.js +0 -19
- package/dist/src/coin/stx/contractBuilder.d.ts +0 -33
- package/dist/src/coin/stx/contractBuilder.d.ts.map +0 -1
- package/dist/src/coin/stx/contractBuilder.js +0 -135
- package/dist/src/coin/stx/iface.d.ts +0 -48
- package/dist/src/coin/stx/iface.d.ts.map +0 -1
- package/dist/src/coin/stx/iface.js +0 -3
- package/dist/src/coin/stx/index.d.ts +0 -6
- package/dist/src/coin/stx/index.d.ts.map +0 -1
- package/dist/src/coin/stx/index.js +0 -32
- package/dist/src/coin/stx/keyPair.d.ts +0 -56
- package/dist/src/coin/stx/keyPair.d.ts.map +0 -1
- package/dist/src/coin/stx/keyPair.js +0 -163
- package/dist/src/coin/stx/sendmanyBuilder.d.ts +0 -23
- package/dist/src/coin/stx/sendmanyBuilder.d.ts.map +0 -1
- package/dist/src/coin/stx/sendmanyBuilder.js +0 -140
- package/dist/src/coin/stx/transaction.d.ts +0 -50
- package/dist/src/coin/stx/transaction.d.ts.map +0 -1
- package/dist/src/coin/stx/transaction.js +0 -306
- package/dist/src/coin/stx/transactionBuilder.d.ts +0 -87
- package/dist/src/coin/stx/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/stx/transactionBuilder.js +0 -360
- package/dist/src/coin/stx/transactionBuilderFactory.d.ts +0 -30
- package/dist/src/coin/stx/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/coin/stx/transactionBuilderFactory.js +0 -99
- package/dist/src/coin/stx/transferBuilder.d.ts +0 -30
- package/dist/src/coin/stx/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/stx/transferBuilder.js +0 -169
- package/dist/src/coin/stx/utils.d.ts +0 -207
- package/dist/src/coin/stx/utils.d.ts.map +0 -1
- package/dist/src/coin/stx/utils.js +0 -510
- package/dist/src/coin/xtz/address.d.ts +0 -8
- package/dist/src/coin/xtz/address.d.ts.map +0 -1
- package/dist/src/coin/xtz/address.js +0 -13
- package/dist/src/coin/xtz/iface.d.ts +0 -81
- package/dist/src/coin/xtz/iface.d.ts.map +0 -1
- package/dist/src/coin/xtz/iface.js +0 -3
- package/dist/src/coin/xtz/index.d.ts +0 -8
- package/dist/src/coin/xtz/index.d.ts.map +0 -1
- package/dist/src/coin/xtz/index.js +0 -37
- package/dist/src/coin/xtz/keyPair.d.ts +0 -41
- package/dist/src/coin/xtz/keyPair.d.ts.map +0 -1
- package/dist/src/coin/xtz/keyPair.js +0 -156
- package/dist/src/coin/xtz/multisigUtils.d.ts +0 -134
- package/dist/src/coin/xtz/multisigUtils.d.ts.map +0 -1
- package/dist/src/coin/xtz/multisigUtils.js +0 -1193
- package/dist/src/coin/xtz/transaction.d.ts +0 -120
- package/dist/src/coin/xtz/transaction.d.ts.map +0 -1
- package/dist/src/coin/xtz/transaction.js +0 -485
- package/dist/src/coin/xtz/transactionBuilder.d.ts +0 -172
- package/dist/src/coin/xtz/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/xtz/transactionBuilder.js +0 -588
- package/dist/src/coin/xtz/transferBuilder.d.ts +0 -24
- package/dist/src/coin/xtz/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/xtz/transferBuilder.js +0 -67
- package/dist/src/coin/xtz/utils.d.ts +0 -265
- package/dist/src/coin/xtz/utils.d.ts.map +0 -1
- package/dist/src/coin/xtz/utils.js +0 -531
- package/dist/src/mpc/curves/baseCurve.d.ts +0 -18
- package/dist/src/mpc/curves/baseCurve.d.ts.map +0 -1
- package/dist/src/mpc/curves/baseCurve.js +0 -6
- package/dist/src/mpc/curves/ed25519.d.ts +0 -17
- package/dist/src/mpc/curves/ed25519.d.ts.map +0 -1
- package/dist/src/mpc/curves/ed25519.js +0 -96
- package/dist/src/mpc/curves/index.d.ts +0 -5
- package/dist/src/mpc/curves/index.d.ts.map +0 -1
- package/dist/src/mpc/curves/index.js +0 -6
- package/dist/src/mpc/hdTree.d.ts +0 -24
- package/dist/src/mpc/hdTree.d.ts.map +0 -1
- package/dist/src/mpc/hdTree.js +0 -143
- package/dist/src/mpc/shamir.d.ts +0 -26
- package/dist/src/mpc/shamir.d.ts.map +0 -1
- package/dist/src/mpc/shamir.js +0 -87
- package/dist/src/mpc/tss.d.ts +0 -98
- package/dist/src/mpc/tss.d.ts.map +0 -1
- package/dist/src/mpc/tss.js +0 -346
- package/dist/src/mpc/util.d.ts +0 -7
- package/dist/src/mpc/util.d.ts.map +0 -1
- package/dist/src/mpc/util.js +0 -38
- package/dist/src/utils/crypto.d.ts +0 -99
- package/dist/src/utils/crypto.d.ts.map +0 -1
- package/dist/src/utils/crypto.js +0 -260
- package/dist/src/utils/ed25519KeyDeriver.d.ts +0 -49
- package/dist/src/utils/ed25519KeyDeriver.d.ts.map +0 -1
- package/dist/src/utils/ed25519KeyDeriver.js +0 -92
- package/resources/hbar/protobuf/BasicTypes.proto +0 -424
- package/resources/hbar/protobuf/CryptoCreate.proto +0 -47
- package/resources/hbar/protobuf/CryptoTransfer.proto +0 -33
- package/resources/hbar/protobuf/Duration.proto +0 -28
- package/resources/hbar/protobuf/Timestamp.proto +0 -34
- package/resources/hbar/protobuf/Transaction.proto +0 -35
- package/resources/hbar/protobuf/TransactionBody.proto +0 -24
- package/resources/hbar/protobuf/TransactionContents.proto +0 -33
- package/resources/hbar/protobuf/hedera.d.ts +0 -4612
- package/resources/hbar/protobuf/hedera.js +0 -12192
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
3
|
if (k2 === undefined) k2 = k;
|
|
19
4
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
@@ -33,105 +18,83 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
18
|
__setModuleDefault(result, mod);
|
|
34
19
|
return result;
|
|
35
20
|
};
|
|
36
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
47
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
-
function step(op) {
|
|
50
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
-
while (_) try {
|
|
52
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
53
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
-
switch (op[0]) {
|
|
55
|
-
case 0: case 1: t = op; break;
|
|
56
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
-
default:
|
|
60
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
-
if (t[2]) _.ops.pop();
|
|
65
|
-
_.trys.pop(); continue;
|
|
66
|
-
}
|
|
67
|
-
op = body.call(thisArg, _);
|
|
68
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
21
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
73
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
74
23
|
};
|
|
75
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
76
25
|
exports.Transaction = void 0;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return _super.call(this, _coinConfig) || this;
|
|
26
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
27
|
+
const sha384_1 = require("@stablelib/sha384");
|
|
28
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
29
|
+
const nacl = __importStar(require("tweetnacl"));
|
|
30
|
+
const Long = __importStar(require("long"));
|
|
31
|
+
const proto = __importStar(require("@hashgraph/proto"));
|
|
32
|
+
const utils_1 = require("./utils");
|
|
33
|
+
const constants_1 = require("./constants");
|
|
34
|
+
class Transaction extends sdk_core_1.BaseTransaction {
|
|
35
|
+
constructor(_coinConfig) {
|
|
36
|
+
super(_coinConfig);
|
|
89
37
|
}
|
|
90
38
|
/** @inheritdoc */
|
|
91
|
-
|
|
39
|
+
canSign(key) {
|
|
92
40
|
return true;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
signature = nacl.sign.detached(this._hederaTx.bodyBytes, secretKey);
|
|
104
|
-
this.addSignature(utils_1.toHex(signature), keyPair);
|
|
105
|
-
return [2 /*return*/];
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
};
|
|
41
|
+
}
|
|
42
|
+
async sign(keyPair) {
|
|
43
|
+
const keys = keyPair.getKeys(true);
|
|
44
|
+
if (!keys.prv) {
|
|
45
|
+
throw new sdk_core_1.SigningError('Missing private key');
|
|
46
|
+
}
|
|
47
|
+
const secretKey = sdk_core_1.toUint8Array(keys.prv + keys.pub);
|
|
48
|
+
const signature = nacl.sign.detached(this._hederaTx.bodyBytes, secretKey);
|
|
49
|
+
this.addSignature(sdk_core_1.toHex(signature), keyPair);
|
|
50
|
+
}
|
|
109
51
|
/**
|
|
110
52
|
* Add a signature to this transaction
|
|
111
53
|
*
|
|
112
|
-
* @param {string} signature The signature to add, in string hex format
|
|
113
|
-
* @param {KeyPair} key The key of the key that created the signature
|
|
54
|
+
* @param {string} signature - The signature to add, in string hex format
|
|
55
|
+
* @param {KeyPair} key - The key of the key that created the signature
|
|
114
56
|
*/
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
sigPair.pubKeyPrefix =
|
|
118
|
-
sigPair.ed25519 =
|
|
119
|
-
|
|
57
|
+
addSignature(signature, key) {
|
|
58
|
+
const sigPair = new proto.SignaturePair();
|
|
59
|
+
sigPair.pubKeyPrefix = sdk_core_1.toUint8Array(key.getKeys(true).pub);
|
|
60
|
+
sigPair.ed25519 = sdk_core_1.toUint8Array(signature);
|
|
61
|
+
const sigMap = this._hederaTx.sigMap || new proto.SignatureMap();
|
|
120
62
|
sigMap.sigPair.push(sigPair);
|
|
121
63
|
this._hederaTx.sigMap = sigMap;
|
|
122
64
|
this._signatures.push(signature);
|
|
123
|
-
}
|
|
65
|
+
}
|
|
124
66
|
/** @inheritdoc */
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
67
|
+
toBroadcastFormat() {
|
|
68
|
+
const encoder = proto.Transaction;
|
|
69
|
+
return sdk_core_1.toHex(this.encode(this._hederaTx, encoder));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Sets this transaction payload
|
|
73
|
+
*
|
|
74
|
+
* @param rawTransaction
|
|
75
|
+
*/
|
|
76
|
+
fromRawTransaction(rawTransaction) {
|
|
77
|
+
const buffer = typeof rawTransaction === 'string' ? sdk_core_1.toUint8Array(rawTransaction) : rawTransaction;
|
|
78
|
+
this.bodyBytes(buffer);
|
|
79
|
+
switch (this.txBody.data) {
|
|
80
|
+
case constants_1.HederaTransactionTypes.Transfer:
|
|
81
|
+
this.setTransactionType(sdk_core_1.TransactionType.Send);
|
|
82
|
+
break;
|
|
83
|
+
case constants_1.HederaTransactionTypes.CreateAccount:
|
|
84
|
+
this.setTransactionType(sdk_core_1.TransactionType.WalletInitialization);
|
|
85
|
+
break;
|
|
86
|
+
case constants_1.HederaTransactionTypes.TokenAssociateToAccount:
|
|
87
|
+
this.setTransactionType(sdk_core_1.TransactionType.AssociatedTokenAccountInitialization);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
128
91
|
/** @inheritdoc */
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
92
|
+
toJson() {
|
|
93
|
+
const [acc, time] = this.getTxIdParts();
|
|
94
|
+
const result = {
|
|
132
95
|
id: acc + '@' + time,
|
|
133
96
|
hash: this.getTxHash(),
|
|
134
|
-
data:
|
|
97
|
+
data: sdk_core_1.toHex(this._hederaTx.bodyBytes),
|
|
135
98
|
fee: new bignumber_js_1.default(this._txBody.transactionFee.toString()).toNumber(),
|
|
136
99
|
from: acc,
|
|
137
100
|
startTime: time,
|
|
@@ -139,119 +102,172 @@ var Transaction = /** @class */ (function (_super) {
|
|
|
139
102
|
node: utils_1.stringifyAccountId(this._txBody.nodeAccountID),
|
|
140
103
|
memo: this._txBody.memo,
|
|
141
104
|
};
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
105
|
+
switch (this._txBody.data) {
|
|
106
|
+
case constants_1.HederaTransactionTypes.Transfer:
|
|
107
|
+
const transferData = this.getTransferData();
|
|
108
|
+
result.instructionsData = {
|
|
109
|
+
type: constants_1.HederaTransactionTypes.Transfer,
|
|
110
|
+
params: transferData,
|
|
111
|
+
};
|
|
112
|
+
result.to = result.instructionsData.params.recipients[0].address;
|
|
113
|
+
result.amount = result.instructionsData.params.recipients[0].amount;
|
|
114
|
+
break;
|
|
115
|
+
case constants_1.HederaTransactionTypes.TokenAssociateToAccount:
|
|
116
|
+
result.instructionsData = {
|
|
117
|
+
type: constants_1.HederaTransactionTypes.TokenAssociateToAccount,
|
|
118
|
+
params: this.getAccountAssociateData(),
|
|
119
|
+
};
|
|
120
|
+
break;
|
|
146
121
|
}
|
|
147
122
|
return result;
|
|
148
|
-
}
|
|
123
|
+
}
|
|
149
124
|
/**
|
|
150
125
|
* Get the recipient account and the amount
|
|
151
126
|
* transferred on this transaction
|
|
152
127
|
*
|
|
153
|
-
* @returns {
|
|
128
|
+
* @returns { tokenName, Recipient[]} is object consisting of tokenName if it's a token transfer and recipients consisting
|
|
129
|
+
* the recipient address, the transfer amount, and the token name for token transfer
|
|
154
130
|
*/
|
|
155
|
-
|
|
156
|
-
var
|
|
157
|
-
this.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
131
|
+
getTransferData() {
|
|
132
|
+
var _a, _b, _c, _d, _e;
|
|
133
|
+
const [acc] = this.getTxIdParts();
|
|
134
|
+
const transferData = [];
|
|
135
|
+
const tokenTransfers = ((_a = this._txBody.cryptoTransfer) === null || _a === void 0 ? void 0 : _a.tokenTransfers) || [];
|
|
136
|
+
const transfers = ((_b = tokenTransfers[0]) === null || _b === void 0 ? void 0 : _b.transfers) || ((_d = (_c = this._txBody.cryptoTransfer) === null || _c === void 0 ? void 0 : _c.transfers) === null || _d === void 0 ? void 0 : _d.accountAmounts) || [];
|
|
137
|
+
const tokenName = tokenTransfers.length
|
|
138
|
+
? (_e = utils_1.getHederaTokenNameFromId(utils_1.stringifyTokenId(tokenTransfers[0].token))) === null || _e === void 0 ? void 0 : _e.name
|
|
139
|
+
: undefined;
|
|
140
|
+
transfers.forEach((transfer) => {
|
|
141
|
+
const amount = Long.fromValue(transfer.amount);
|
|
142
|
+
if (amount.isPositive() && utils_1.stringifyAccountId(transfer.accountID) !== acc) {
|
|
143
|
+
transferData.push({
|
|
144
|
+
address: utils_1.stringifyAccountId(transfer.accountID),
|
|
145
|
+
amount: amount.toString(),
|
|
146
|
+
...(tokenTransfers.length && {
|
|
147
|
+
tokenName: tokenName,
|
|
148
|
+
}),
|
|
149
|
+
});
|
|
161
150
|
}
|
|
162
151
|
});
|
|
163
|
-
return
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
152
|
+
return {
|
|
153
|
+
...(tokenTransfers.length && {
|
|
154
|
+
tokenName: tokenName,
|
|
155
|
+
}),
|
|
156
|
+
recipients: transferData,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get the recipient account and the amount
|
|
161
|
+
* transferred on this transaction
|
|
162
|
+
*
|
|
163
|
+
* @returns { accountId: string; tokenNames[]} is an object consisting of accountId for the token owner
|
|
164
|
+
* and list of tokenNames that will be enabled
|
|
165
|
+
*/
|
|
166
|
+
getAccountAssociateData() {
|
|
167
|
+
const tokens = this._txBody.tokenAssociate.tokens || [];
|
|
168
|
+
return {
|
|
169
|
+
accountId: utils_1.stringifyAccountId(this._txBody.tokenAssociate.account),
|
|
170
|
+
tokenNames: tokens.map((token) => utils_1.getHederaTokenNameFromId(utils_1.stringifyTokenId(token)).name),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
// region getters & setters
|
|
174
|
+
get txBody() {
|
|
175
|
+
return this._txBody;
|
|
176
|
+
}
|
|
177
|
+
get hederaTx() {
|
|
178
|
+
return this._hederaTx;
|
|
179
|
+
}
|
|
180
180
|
/**
|
|
181
181
|
* Sets this transaction body components
|
|
182
182
|
*
|
|
183
|
-
* @param {proto.Transaction} tx
|
|
183
|
+
* @param {proto.Transaction} tx - Body Transaction
|
|
184
184
|
*/
|
|
185
|
-
|
|
186
|
-
this._txBody =
|
|
185
|
+
body(tx) {
|
|
186
|
+
this._txBody = proto.TransactionBody.decode(tx.bodyBytes);
|
|
187
187
|
this._hederaTx = tx;
|
|
188
|
-
// this.loadPreviousSignatures();
|
|
189
188
|
this.loadInputsAndOutputs();
|
|
190
|
-
}
|
|
189
|
+
}
|
|
191
190
|
/**
|
|
192
191
|
* Set the transaction type
|
|
193
192
|
*
|
|
194
|
-
* @param {TransactionType} transactionType The transaction type to be set
|
|
193
|
+
* @param {TransactionType} transactionType - The transaction type to be set
|
|
195
194
|
*/
|
|
196
|
-
|
|
195
|
+
setTransactionType(transactionType) {
|
|
197
196
|
this._type = transactionType;
|
|
198
|
-
}
|
|
197
|
+
}
|
|
199
198
|
/**
|
|
200
199
|
* Decode previous signatures from the inner hedera transaction
|
|
201
200
|
* and save them into the base transaction signature list.
|
|
202
201
|
*/
|
|
203
|
-
|
|
204
|
-
var _this = this;
|
|
202
|
+
loadPreviousSignatures() {
|
|
205
203
|
if (this._hederaTx.sigMap && this._hederaTx.sigMap.sigPair) {
|
|
206
|
-
|
|
207
|
-
sigPairs.forEach(
|
|
208
|
-
|
|
204
|
+
const sigPairs = this._hederaTx.sigMap.sigPair;
|
|
205
|
+
sigPairs.forEach((sigPair) => {
|
|
206
|
+
const signature = sigPair.ed25519;
|
|
209
207
|
if (signature) {
|
|
210
|
-
|
|
208
|
+
this._signatures.push(sdk_core_1.toHex(signature));
|
|
211
209
|
}
|
|
212
210
|
});
|
|
213
211
|
}
|
|
214
|
-
}
|
|
212
|
+
}
|
|
215
213
|
/**
|
|
216
214
|
* Load the input and output data on this transaction using the transaction json
|
|
217
215
|
* if there are outputs. For transactions without outputs (e.g. wallet initializations),
|
|
218
216
|
* this function will not do anything
|
|
219
217
|
*/
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
218
|
+
loadInputsAndOutputs() {
|
|
219
|
+
const txJson = this.toJson();
|
|
220
|
+
const instruction = txJson.instructionsData;
|
|
221
|
+
const outputs = [];
|
|
222
|
+
const inputs = [];
|
|
223
|
+
switch (instruction === null || instruction === void 0 ? void 0 : instruction.type) {
|
|
224
|
+
case constants_1.HederaTransactionTypes.Transfer:
|
|
225
|
+
let totalAmount = new bignumber_js_1.default(0);
|
|
226
|
+
instruction.params.recipients.forEach((recipient) => {
|
|
227
|
+
totalAmount = totalAmount.plus(recipient.amount);
|
|
228
|
+
outputs.push({
|
|
229
|
+
address: recipient.address,
|
|
230
|
+
value: recipient.amount,
|
|
231
|
+
coin: recipient.tokenName || this._coinConfig.name,
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
inputs.push({
|
|
232
235
|
address: txJson.from,
|
|
233
|
-
value:
|
|
234
|
-
coin: this._coinConfig.name,
|
|
235
|
-
}
|
|
236
|
-
|
|
236
|
+
value: totalAmount.toString(),
|
|
237
|
+
coin: instruction.params.tokenName || this._coinConfig.name,
|
|
238
|
+
});
|
|
239
|
+
break;
|
|
240
|
+
case constants_1.HederaTransactionTypes.TokenAssociateToAccount:
|
|
241
|
+
instruction.params.tokenNames.forEach((tokenName) => {
|
|
242
|
+
const tokenEntry = {
|
|
243
|
+
address: instruction.params.accountId,
|
|
244
|
+
value: '0',
|
|
245
|
+
coin: tokenName,
|
|
246
|
+
};
|
|
247
|
+
inputs.push(tokenEntry);
|
|
248
|
+
outputs.push(tokenEntry);
|
|
249
|
+
});
|
|
250
|
+
break;
|
|
237
251
|
}
|
|
238
|
-
|
|
252
|
+
this._inputs = inputs;
|
|
253
|
+
this._outputs = outputs;
|
|
254
|
+
}
|
|
239
255
|
/**
|
|
240
256
|
* Sets this transaction body components
|
|
241
257
|
*
|
|
242
|
-
* @param {Uint8Array} bytes
|
|
258
|
+
* @param {Uint8Array} bytes - Encoded body transaction
|
|
243
259
|
*/
|
|
244
|
-
|
|
245
|
-
this.body(
|
|
246
|
-
}
|
|
260
|
+
bodyBytes(bytes) {
|
|
261
|
+
this.body(proto.Transaction.decode(bytes));
|
|
262
|
+
}
|
|
247
263
|
// endregion
|
|
248
264
|
// region helpers
|
|
249
265
|
/**
|
|
250
266
|
* Returns this hedera transaction id components in a readable format
|
|
251
267
|
*
|
|
252
|
-
* @returns {[string, string]} -
|
|
268
|
+
* @returns {[string, string]} - Transaction id parts [<account id>, <startTime in seconds>]
|
|
253
269
|
*/
|
|
254
|
-
|
|
270
|
+
getTxIdParts() {
|
|
255
271
|
if (this._txBody &&
|
|
256
272
|
this._txBody.transactionID &&
|
|
257
273
|
this._txBody.transactionID.accountID &&
|
|
@@ -262,53 +278,41 @@ var Transaction = /** @class */ (function (_super) {
|
|
|
262
278
|
];
|
|
263
279
|
}
|
|
264
280
|
throw new Error('Missing transaction id information');
|
|
265
|
-
}
|
|
281
|
+
}
|
|
266
282
|
/**
|
|
267
283
|
* Returns this transaction hash
|
|
268
284
|
*
|
|
269
285
|
* @returns {string} - The transaction hash
|
|
270
286
|
*/
|
|
271
|
-
|
|
287
|
+
getTxHash() {
|
|
272
288
|
if (!this._txBody.nodeAccountID) {
|
|
273
289
|
throw new Error('Missing transaction node id');
|
|
274
290
|
}
|
|
275
|
-
|
|
291
|
+
const _signedTx = new proto.SignedTransaction();
|
|
276
292
|
_signedTx.sigMap = this._hederaTx.sigMap;
|
|
277
293
|
_signedTx.bodyBytes = this._hederaTx.bodyBytes;
|
|
278
|
-
|
|
279
|
-
|
|
294
|
+
const encoder = proto.SignedTransaction;
|
|
295
|
+
return this.sha(this.encode(_signedTx, encoder));
|
|
296
|
+
}
|
|
280
297
|
/**
|
|
281
298
|
* Encode an object using the given encoder class
|
|
282
299
|
*
|
|
283
|
-
* @param {proto} obj -
|
|
300
|
+
* @param {proto} obj - The object to be encoded, must be in proto namespace
|
|
284
301
|
* @param encoder - Object encoder
|
|
285
|
-
* @returns {Uint8Array} -
|
|
302
|
+
* @returns {Uint8Array} - Encoded object byte array
|
|
286
303
|
*/
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
}
|
|
291
|
-
return this.encode(obj, hedera_1.proto[obj.constructor.name]);
|
|
292
|
-
};
|
|
293
|
-
/**
|
|
294
|
-
* Returns an sha-384 hash
|
|
295
|
-
*
|
|
296
|
-
* @param {Uint8Array} bytes - bytes to be hashed
|
|
297
|
-
* @returns {string} - the resulting hash string
|
|
298
|
-
*/
|
|
299
|
-
Transaction.prototype.sha = function (bytes) {
|
|
300
|
-
return utils_1.toHex(sha384_1.hash(bytes));
|
|
301
|
-
};
|
|
304
|
+
encode(obj, encoder) {
|
|
305
|
+
return encoder.encode(obj).finish();
|
|
306
|
+
}
|
|
302
307
|
/**
|
|
303
|
-
* Returns a hash
|
|
308
|
+
* Returns a sha-384 hash
|
|
304
309
|
*
|
|
305
|
-
* @param {
|
|
306
|
-
* @returns {string} -
|
|
310
|
+
* @param {Uint8Array} bytes - Bytes to be hashed
|
|
311
|
+
* @returns {string} - The resulting hash string
|
|
307
312
|
*/
|
|
308
|
-
|
|
309
|
-
return
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
}(baseCoin_1.BaseTransaction));
|
|
313
|
+
sha(bytes) {
|
|
314
|
+
return sdk_core_1.toHex(sha384_1.hash(bytes));
|
|
315
|
+
}
|
|
316
|
+
}
|
|
313
317
|
exports.Transaction = Transaction;
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9oYmFyL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw0Q0FBeUM7QUFDekMsOERBQXFDO0FBRXJDLDhDQUFrQztBQUNsQyx5Q0FBNkI7QUFDN0Isa0VBQWdFO0FBQ2hFLHdDQUErRDtBQUUvRCw2Q0FBa0Q7QUFFbEQsaUNBQW1GO0FBR25GO0lBQWlDLCtCQUFlO0lBSzlDLHFCQUFZLFdBQWlDO2VBQzNDLGtCQUFNLFdBQVcsQ0FBQztJQUNwQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDZCQUFPLEdBQVAsVUFBUSxHQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVLLDBCQUFJLEdBQVYsVUFBVyxPQUFnQjs7OztnQkFDbkIsSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNiLE1BQU0sSUFBSSxxQkFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7aUJBQy9DO2dCQUNLLFNBQVMsR0FBRyxvQkFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDOzs7O0tBQzlDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQ0FBWSxHQUFaLFVBQWEsU0FBaUIs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QU8sQ0FBQyxhQUFhLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRCxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyw0QkFBTSxHQUFkLFVBQ0UsR0FBTSxFQUNOLE9BQW9DO1FBRXBDLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxjQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHlCQUFHLEdBQUgsVUFBSSxLQUFpQjtRQUNuQixPQUFPLGFBQUssQ0FBQyxhQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSywrQkFBUyxHQUFqQixVQUFxQixHQUFNO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVILGtCQUFDO0FBQUQsQ0FBQyxBQWxQRCxDQUFpQywwQkFBZSxHQWtQL0M7QUFsUFksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gJ0BzdGFibGVsaWIvc2hhMzg0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFdyaXRlciB9IGZyb20gJ3Byb3RvYnVmanMnO1xuaW1wb3J0ICogYXMgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0ICogYXMgTG9uZyBmcm9tICdsb25nJztcbmltcG9ydCB7IHByb3RvIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzL2hiYXIvcHJvdG9idWYvaGVkZXJhJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQmFzZUtleSB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IFNpZ25pbmdFcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBUeERhdGEgfSBmcm9tICcuL2lmYWNlcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnlBY2NvdW50SWQsIHN0cmluZ2lmeVR4VGltZSwgdG9IZXgsIHRvVWludDhBcnJheSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4vJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfaGVkZXJhVHg6IHByb3RvLlRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF90eEJvZHk6IHByb3RvLlRyYW5zYWN0aW9uQm9keTtcbiAgcHJvdGVjdGVkIF90eXBlOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBzaWduKGtleVBhaXI6IEtleVBhaXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKHRydWUpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcmV0S2V5ID0gdG9VaW50OEFycmF5KGtleXMucHJ2ICsga2V5cy5wdWIpO1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IG5hY2wuc2lnbi5kZXRhY2hlZCh0aGlzLl9oZWRlcmFUeC5ib2R5Qnl0ZXMsIHNlY3JldEtleSk7XG4gICAgdGhpcy5hZGRTaWduYXR1cmUodG9IZXgoc2lnbmF0dXJlKSwga2V5UGFpcik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc2lnbmF0dXJlIHRvIHRoaXMgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSBUaGUgc2lnbmF0dXJlIHRvIGFkZCwgaW4gc3RyaW5nIGhleCBmb3JtYXRcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXkgVGhlIGtleSBvZiB0aGUga2V5IHRoYXQgY3JlYXRlZCB0aGUgc2lnbmF0dXJlXG4gICAqL1xuICBhZGRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcsIGtleTogS2V5UGFpcik6IHZvaWQge1xuICAgIGNvbnN0IHNpZ1BhaXIgPSBuZXcgcHJvdG8uU2lnbmF0dXJlUGFpcigpO1xuICAgIHNpZ1BhaXIucHViS2V5UHJlZml4ID0gdG9VaW50OEFycmF5KGtleS5nZXRLZXlzKHRydWUpLnB1Yik7XG4gICAgc2lnUGFpci5lZDI1NTE5ID0gdG9VaW50OEFycmF5KHNpZ25hdHVyZSk7XG5cbiAgICBjb25zdCBzaWdNYXAgPSB0aGlzLl9oZWRlcmFUeC5zaWdNYXAgfHwgbmV3IHByb3RvLlNpZ25hdHVyZU1hcCgpO1xuICAgIHNpZ01hcC5zaWdQYWlyIS5wdXNoKHNpZ1BhaXIpO1xuICAgIHRoaXMuX2hlZGVyYVR4LnNpZ01hcCA9IHNpZ01hcDtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0b0hleCh0aGlzLmVuY29kZSh0aGlzLl9oZWRlcmFUeCkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGNvbnN0IFthY2MsIHRpbWVdID0gdGhpcy5nZXRUeElkUGFydHMoKTtcbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiBhY2MgKyAnQCcgKyB0aW1lLFxuICAgICAgaGFzaDogdGhpcy5nZXRUeEhhc2goKSwgLy8gVE9ETzogVXBkYXRlIG9uY2UgaGVkZXJhLXNkayByZWxlYXNlIHRoaXMgZnVuY3Rpb25hbGl0eSBCR0EtMjg0XG4gICAgICBkYXRhOiB0b0hleCh0aGlzLl9oZWRlcmFUeC5ib2R5Qnl0ZXMpLFxuICAgICAgZmVlOiBuZXcgQmlnTnVtYmVyKHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbkZlZSEudG9TdHJpbmcoKSkudG9OdW1iZXIoKSxcbiAgICAgIGZyb206IGFjYyxcbiAgICAgIHN0YXJ0VGltZTogdGltZSxcbiAgICAgIHZhbGlkRHVyYXRpb246IHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvblZhbGlkRHVyYXRpb24hLnNlY29uZHMhLnRvU3RyaW5nKCksXG4gICAgICBub2RlOiBzdHJpbmdpZnlBY2NvdW50SWQodGhpcy5fdHhCb2R5Lm5vZGVBY2NvdW50SUQhKSxcbiAgICAgIG1lbW86IHRoaXMuX3R4Qm9keS5tZW1vLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5fdHhCb2R5LmRhdGEgPT09ICdjcnlwdG9UcmFuc2ZlcicpIHtcbiAgICAgIGNvbnN0IFtyZWNpcGllbnQsIGFtb3VudF0gPSB0aGlzLmdldFRyYW5zZmVyRGF0YSgpO1xuICAgICAgcmVzdWx0LmFtb3VudCA9IGFtb3VudDtcbiAgICAgIHJlc3VsdC50byA9IHJlY2lwaWVudDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlY2lwaWVudCBhY2NvdW50IGFuZCB0aGUgYW1vdW50XG4gICAqIHRyYW5zZmVycmVkIG9uIHRoaXMgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHJldHVybnMge1tzdHJpbmcsIHN0cmluZ119IGZpcnN0IGVsZW1lbnQgaXMgdGhlIHJlY2lwaWVudCwgc2Vjb25kIGVsZW1lbnQgaXMgdGhlIGFtb3VudFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUcmFuc2ZlckRhdGEoKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgbGV0IHRyYW5zZmVyRGF0YTtcbiAgICB0aGlzLl90eEJvZHkuY3J5cHRvVHJhbnNmZXIhLnRyYW5zZmVycyEuYWNjb3VudEFtb3VudHMhLmZvckVhY2goKHRyYW5zZmVyKSA9PiB7XG4gICAgICBjb25zdCBhbW91bnQgPSBMb25nLmZyb21WYWx1ZSh0cmFuc2Zlci5hbW91bnQhKTtcbiAgICAgIGlmIChhbW91bnQuaXNQb3NpdGl2ZSgpKSB7XG4gICAgICAgIHRyYW5zZmVyRGF0YSA9IFtzdHJpbmdpZnlBY2NvdW50SWQodHJhbnNmZXIuYWNjb3VudElEISksIGFtb3VudC50b1N0cmluZygpXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0cmFuc2ZlckRhdGE7XG4gIH1cblxuICAvLyByZWdpb24gZ2V0dGVycyAmIHNldHRlcnNcbiAgZ2V0IHR4Qm9keSgpOiBwcm90by5UcmFuc2FjdGlvbkJvZHkge1xuICAgIHJldHVybiB0aGlzLl90eEJvZHk7XG4gIH1cblxuICBnZXQgaGVkZXJhVHgoKTogcHJvdG8uVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9oZWRlcmFUeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gYm9keSBjb21wb25lbnRzXG4gICAqXG4gICAqIEBwYXJhbSB7cHJvdG8uVHJhbnNhY3Rpb259IHR4IGJvZHkgdHJhbnNhY3Rpb25cbiAgICovXG4gIGJvZHkodHg6IHByb3RvLlRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHhCb2R5ID0gcHJvdG8uVHJhbnNhY3Rpb25Cb2R5LmRlY29kZSh0eC5ib2R5Qnl0ZXMpO1xuICAgIHRoaXMuX2hlZGVyYVR4ID0gdHg7XG4gICAgLy8gdGhpcy5sb2FkUHJldmlvdXNTaWduYXR1cmVzKCk7XG4gICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldFxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGUgcHJldmlvdXMgc2lnbmF0dXJlcyBmcm9tIHRoZSBpbm5lciBoZWRlcmEgdHJhbnNhY3Rpb25cbiAgICogYW5kIHNhdmUgdGhlbSBpbnRvIHRoZSBiYXNlIHRyYW5zYWN0aW9uIHNpZ25hdHVyZSBsaXN0LlxuICAgKi9cbiAgbG9hZFByZXZpb3VzU2lnbmF0dXJlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faGVkZXJhVHguc2lnTWFwICYmIHRoaXMuX2hlZGVyYVR4LnNpZ01hcC5zaWdQYWlyKSB7XG4gICAgICBjb25zdCBzaWdQYWlycyA9IHRoaXMuX2hlZGVyYVR4LnNpZ01hcC5zaWdQYWlyO1xuICAgICAgc2lnUGFpcnMuZm9yRWFjaCgoc2lnUGFpcikgPT4ge1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBzaWdQYWlyLmVkMjU1MTk7XG4gICAgICAgIGlmIChzaWduYXR1cmUpIHtcbiAgICAgICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2godG9IZXgoc2lnbmF0dXJlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgdHJhbnNhY3Rpb24ganNvblxuICAgKiBpZiB0aGVyZSBhcmUgb3V0cHV0cy4gRm9yIHRyYW5zYWN0aW9ucyB3aXRob3V0IG91dHB1dHMgKGUuZy4gd2FsbGV0IGluaXRpYWxpemF0aW9ucyksXG4gICAqIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZG8gYW55dGhpbmdcbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHR4SnNvbiA9IHRoaXMudG9Kc29uKCk7XG4gICAgaWYgKHR4SnNvbi50byAmJiB0eEpzb24uYW1vdW50KSB7XG4gICAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYWRkcmVzczogdHhKc29uLnRvLFxuICAgICAgICAgIHZhbHVlOiB0eEpzb24uYW1vdW50LFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IHR4SnNvbi5mcm9tLFxuICAgICAgICAgIHZhbHVlOiB0eEpzb24uYW1vdW50LFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBib2R5IGNvbXBvbmVudHNcbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBieXRlcyBlbmNvZGVkIGJvZHkgdHJhbnNhY3Rpb25cbiAgICovXG4gIGJvZHlCeXRlcyhieXRlczogVWludDhBcnJheSkge1xuICAgIHRoaXMuYm9keShwcm90by5UcmFuc2FjdGlvbi5kZWNvZGUoYnl0ZXMpKTtcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gaGVscGVyc1xuICAvKipcbiAgICogUmV0dXJucyB0aGlzIGhlZGVyYSB0cmFuc2FjdGlvbiBpZCBjb21wb25lbnRzIGluIGEgcmVhZGFibGUgZm9ybWF0XG4gICAqXG4gICAqIEByZXR1cm5zIHtbc3RyaW5nLCBzdHJpbmddfSAtIHRyYW5zYWN0aW9uIGlkIHBhcnRzIFs8YWNjb3VudCBpZD4sIDxzdGFydFRpbWUgaW4gc2Vjb25kcz5dXG4gICAqL1xuICBnZXRUeElkUGFydHMoKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fdHhCb2R5ICYmXG4gICAgICB0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRCAmJlxuICAgICAgdGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQuYWNjb3VudElEICYmXG4gICAgICB0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRC50cmFuc2FjdGlvblZhbGlkU3RhcnRcbiAgICApIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHN0cmluZ2lmeUFjY291bnRJZCh0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRC5hY2NvdW50SUQpLFxuICAgICAgICBzdHJpbmdpZnlUeFRpbWUodGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQudHJhbnNhY3Rpb25WYWxpZFN0YXJ0KSxcbiAgICAgIF07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0cmFuc2FjdGlvbiBpZCBpbmZvcm1hdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyB0cmFuc2FjdGlvbiBoYXNoXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHRyYW5zYWN0aW9uIGhhc2hcbiAgICovXG4gIGdldFR4SGFzaCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fdHhCb2R5Lm5vZGVBY2NvdW50SUQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0cmFuc2FjdGlvbiBub2RlIGlkJyk7XG4gICAgfVxuICAgIGNvbnN0IF9zaWduZWRUeCA9IG5ldyBwcm90by5TaWduZWRUcmFuc2FjdGlvbigpO1xuICAgIF9zaWduZWRUeC5zaWdNYXAgPSB0aGlzLl9oZWRlcmFUeC5zaWdNYXA7XG4gICAgX3NpZ25lZFR4LmJvZHlCeXRlcyA9IHRoaXMuX2hlZGVyYVR4LmJvZHlCeXRlcztcbiAgICByZXR1cm4gdGhpcy5nZXRIYXNoT2YoX3NpZ25lZFR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGUgYW4gb2JqZWN0IHVzaW5nIHRoZSBnaXZlbiBlbmNvZGVyIGNsYXNzXG4gICAqXG4gICAqIEBwYXJhbSB7cHJvdG99IG9iaiAtIHRoZSBvYmplY3QgdG8gYmUgZW5jb2RlZCwgaXQgbXVzdCBiZSBhbiBwcm90byBuYW1lc3BhY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSBlbmNvZGVyIC0gT2JqZWN0IGVuY29kZXJcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IC0gZW5jb2RlZCBvYmplY3QgYnl0ZSBhcnJheVxuICAgKi9cbiAgcHJpdmF0ZSBlbmNvZGU8Q3RvckZuIGV4dGVuZHMgeyBuZXcgKCk6IFQgfSwgVCBleHRlbmRzIHsgY29uc3RydWN0b3I6IEN0b3JGbiB9PihcbiAgICBvYmo6IFQsXG4gICAgZW5jb2Rlcj86IHsgZW5jb2RlKGFyZzogVCk6IFdyaXRlciB9LFxuICApOiBVaW50OEFycmF5IHtcbiAgICBpZiAoZW5jb2Rlcikge1xuICAgICAgcmV0dXJuIGVuY29kZXIuZW5jb2RlKG9iaikuZmluaXNoKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmVuY29kZShvYmosIHByb3RvW29iai5jb25zdHJ1Y3Rvci5uYW1lXSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBzaGEtMzg0IGhhc2hcbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBieXRlcyAtIGJ5dGVzIHRvIGJlIGhhc2hlZFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSByZXN1bHRpbmcgaGFzaCBzdHJpbmdcbiAgICovXG4gIHNoYShieXRlczogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRvSGV4KGhhc2goYnl0ZXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgaGFzaCBvZiB0aGUgZ2l2ZW4gcHJvdG8gb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge3Byb3RvfSBvYmogLSBUaGUgb2JqZWN0IHRvIGJlIGhhc2hlZCwgaXQgbXVzdCBiZSBhbiBwcm90byBuYW1lc3BhY2Ugb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIHJlc3VsdGluZyBoYXNoIHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRIYXNoT2Y8VD4ob2JqOiBUKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zaGEodGhpcy5lbmNvZGUob2JqKSk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9oYmFyL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw4Q0FBc0g7QUFDdEgsOENBQXlDO0FBQ3pDLGdFQUFxQztBQUVyQyxnREFBa0M7QUFDbEMsMkNBQTZCO0FBQzdCLHdEQUEwQztBQUUxQyxtQ0FBMEc7QUFFMUcsMkNBQXFEO0FBRXJELE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSzlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFnQjtRQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxJQUFJLHVCQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUMvQztRQUNELE1BQU0sU0FBUyxHQUFHLHVCQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxTQUFpQixFQUFFLEdBQVk7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFB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O1FBQ2hELFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDekMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUUvQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLE1BQU0sQ0FDWixHQUFNLEVBQ04sT0FBbUM7UUFFbkMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBQyxLQUFpQjtRQUNuQixPQUFPLGdCQUFLLENBQUMsYUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBOVRELGtDQThUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlS2V5LCBCYXNlVHJhbnNhY3Rpb24sIEVudHJ5LCBTaWduaW5nRXJyb3IsIHRvSGV4LCB0b1VpbnQ4QXJyYXksIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSAnQHN0YWJsZWxpYi9zaGEzODQnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgV3JpdGVyIH0gZnJvbSAncHJvdG9idWZqcyc7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgKiBhcyBMb25nIGZyb20gJ2xvbmcnO1xuaW1wb3J0ICogYXMgcHJvdG8gZnJvbSAnQGhhc2hncmFwaC9wcm90byc7XG5pbXBvcnQgeyBUeERhdGEsIFJlY2lwaWVudCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgc3RyaW5naWZ5QWNjb3VudElkLCBzdHJpbmdpZnlUeFRpbWUsIHN0cmluZ2lmeVRva2VuSWQsIGdldEhlZGVyYVRva2VuTmFtZUZyb21JZCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4vJztcbmltcG9ydCB7IEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX2hlZGVyYVR4OiBwcm90by5UcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfdHhCb2R5OiBwcm90by5UcmFuc2FjdGlvbkJvZHk7XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgc2lnbihrZXlQYWlyOiBLZXlQYWlyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cyh0cnVlKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IHNlY3JldEtleSA9IHRvVWludDhBcnJheShrZXlzLnBydiArIGtleXMucHViKTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBuYWNsLnNpZ24uZGV0YWNoZWQodGhpcy5faGVkZXJhVHguYm9keUJ5dGVzLCBzZWNyZXRLZXkpO1xuICAgIHRoaXMuYWRkU2lnbmF0dXJlKHRvSGV4KHNpZ25hdHVyZSksIGtleVBhaXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNpZ25hdHVyZSB0byB0aGlzIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgLSBUaGUgc2lnbmF0dXJlIHRvIGFkZCwgaW4gc3RyaW5nIGhleCBmb3JtYXRcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBrZXkgdGhhdCBjcmVhdGVkIHRoZSBzaWduYXR1cmVcbiAgICovXG4gIGFkZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywga2V5OiBLZXlQYWlyKTogdm9pZCB7XG4gICAgY29uc3Qgc2lnUGFpciA9IG5ldyBwcm90by5TaWduYXR1cmVQYWlyKCk7XG4gICAgc2lnUGFpci5wdWJLZXlQcmVmaXggPSB0b1VpbnQ4QXJyYXkoa2V5LmdldEtleXModHJ1ZSkucHViKTtcbiAgICBzaWdQYWlyLmVkMjU1MTkgPSB0b1VpbnQ4QXJyYXkoc2lnbmF0dXJlKTtcblxuICAgIGNvbnN0IHNpZ01hcCA9IHRoaXMuX2hlZGVyYVR4LnNpZ01hcCB8fCBuZXcgcHJvdG8uU2lnbmF0dXJlTWFwKCk7XG4gICAgc2lnTWFwLnNpZ1BhaXIhLnB1c2goc2lnUGFpcik7XG4gICAgdGhpcy5faGVkZXJhVHguc2lnTWFwID0gc2lnTWFwO1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5jb2RlciA9IHByb3RvLlRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB0b0hleCh0aGlzLmVuY29kZSh0aGlzLl9oZWRlcmFUeCwgZW5jb2RlcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBwYXlsb2FkXG4gICAqXG4gICAqIEBwYXJhbSByYXdUcmFuc2FjdGlvblxuICAgKi9cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBVaW50OEFycmF5IHwgc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYnVmZmVyID0gdHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJyA/IHRvVWludDhBcnJheShyYXdUcmFuc2FjdGlvbikgOiByYXdUcmFuc2FjdGlvbjtcbiAgICB0aGlzLmJvZHlCeXRlcyhidWZmZXIpO1xuICAgIHN3aXRjaCAodGhpcy50eEJvZHkuZGF0YSkge1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRyYW5zZmVyOlxuICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLkNyZWF0ZUFjY291bnQ6XG4gICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRva2VuQXNzb2NpYXRlVG9BY2NvdW50OlxuICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGNvbnN0IFthY2MsIHRpbWVdID0gdGhpcy5nZXRUeElkUGFydHMoKTtcbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiBhY2MgKyAnQCcgKyB0aW1lLFxuICAgICAgaGFzaDogdGhpcy5nZXRUeEhhc2goKSwgLy8gVE9ETzogVXBkYXRlIG9uY2UgaGVkZXJhLXNkayByZWxlYXNlIHRoaXMgZnVuY3Rpb25hbGl0eSBCR0EtMjg0XG4gICAgICBkYXRhOiB0b0hleCh0aGlzLl9oZWRlcmFUeC5ib2R5Qnl0ZXMpLFxuICAgICAgZmVlOiBuZXcgQmlnTnVtYmVyKHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbkZlZSEudG9TdHJpbmcoKSkudG9OdW1iZXIoKSxcbiAgICAgIGZyb206IGFjYyxcbiAgICAgIHN0YXJ0VGltZTogdGltZSxcbiAgICAgIHZhbGlkRHVyYXRpb246IHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvblZhbGlkRHVyYXRpb24hLnNlY29uZHMhLnRvU3RyaW5nKCksXG4gICAgICBub2RlOiBzdHJpbmdpZnlBY2NvdW50SWQodGhpcy5fdHhCb2R5Lm5vZGVBY2NvdW50SUQhKSxcbiAgICAgIG1lbW86IHRoaXMuX3R4Qm9keS5tZW1vLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3R4Qm9keS5kYXRhKSB7XG4gICAgICBjYXNlIEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVHJhbnNmZXI6XG4gICAgICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IHRoaXMuZ2V0VHJhbnNmZXJEYXRhKCk7XG4gICAgICAgIHJlc3VsdC5pbnN0cnVjdGlvbnNEYXRhID0ge1xuICAgICAgICAgIHR5cGU6IEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVHJhbnNmZXIsXG4gICAgICAgICAgcGFyYW1zOiB0cmFuc2ZlckRhdGEsXG4gICAgICAgIH07XG4gICAgICAgIHJlc3VsdC50byA9IHJlc3VsdC5pbnN0cnVjdGlvbnNEYXRhLnBhcmFtcy5yZWNpcGllbnRzWzBdLmFkZHJlc3M7XG4gICAgICAgIHJlc3VsdC5hbW91bnQgPSByZXN1bHQuaW5zdHJ1Y3Rpb25zRGF0YS5wYXJhbXMucmVjaXBpZW50c1swXS5hbW91bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRva2VuQXNzb2NpYXRlVG9BY2NvdW50OlxuICAgICAgICByZXN1bHQuaW5zdHJ1Y3Rpb25zRGF0YSA9IHtcbiAgICAgICAgICB0eXBlOiBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRva2VuQXNzb2NpYXRlVG9BY2NvdW50LFxuICAgICAgICAgIHBhcmFtczogdGhpcy5nZXRBY2NvdW50QXNzb2NpYXRlRGF0YSgpLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVjaXBpZW50IGFjY291bnQgYW5kIHRoZSBhbW91bnRcbiAgICogdHJhbnNmZXJyZWQgb24gdGhpcyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcmV0dXJucyB7IHRva2VuTmFtZSwgUmVjaXBpZW50W119IGlzIG9iamVjdCBjb25zaXN0aW5nIG9mIHRva2VuTmFtZSBpZiBpdCdzIGEgdG9rZW4gdHJhbnNmZXIgYW5kIHJlY2lwaWVudHMgY29uc2lzdGluZ1xuICAgKiAgdGhlIHJlY2lwaWVudCBhZGRyZXNzLCB0aGUgdHJhbnNmZXIgYW1vdW50LCBhbmQgdGhlIHRva2VuIG5hbWUgZm9yIHRva2VuIHRyYW5zZmVyXG4gICAqL1xuICBwcml2YXRlIGdldFRyYW5zZmVyRGF0YSgpOiB7IHRva2VuTmFtZT86IHN0cmluZzsgcmVjaXBpZW50czogUmVjaXBpZW50W10gfSB7XG4gICAgY29uc3QgW2FjY10gPSB0aGlzLmdldFR4SWRQYXJ0cygpO1xuICAgIGNvbnN0IHRyYW5zZmVyRGF0YTogUmVjaXBpZW50W10gPSBbXTtcbiAgICBjb25zdCB0b2tlblRyYW5zZmVyczogcHJvdG8uSVRva2VuVHJhbnNmZXJMaXN0W10gPSB0aGlzLl90eEJvZHkuY3J5cHRvVHJhbnNmZXI/LnRva2VuVHJhbnNmZXJzIHx8IFtdO1xuICAgIGNvbnN0IHRyYW5zZmVyczogcHJvdG8uSUFjY291bnRBbW91bnRbXSA9XG4gICAgICB0b2tlblRyYW5zZmVyc1swXT8udHJhbnNmZXJzIHx8IHRoaXMuX3R4Qm9keS5jcnlwdG9UcmFuc2Zlcj8udHJhbnNmZXJzPy5hY2NvdW50QW1vdW50cyB8fCBbXTtcbiAgICBjb25zdCB0b2tlbk5hbWUgPSB0b2tlblRyYW5zZmVycy5sZW5ndGhcbiAgICAgID8gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHN0cmluZ2lmeVRva2VuSWQodG9rZW5UcmFuc2ZlcnNbMF0udG9rZW4hKSk/Lm5hbWVcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgdHJhbnNmZXJzLmZvckVhY2goKHRyYW5zZmVyKSA9PiB7XG4gICAgICBjb25zdCBhbW91bnQgPSBMb25nLmZyb21WYWx1ZSh0cmFuc2Zlci5hbW91bnQhKTtcbiAgICAgIGlmIChhbW91bnQuaXNQb3NpdGl2ZSgpICYmIHN0cmluZ2lmeUFjY291bnRJZCh0cmFuc2Zlci5hY2NvdW50SUQhKSAhPT0gYWNjKSB7XG4gICAgICAgIHRyYW5zZmVyRGF0YS5wdXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiBzdHJpbmdpZnlBY2NvdW50SWQodHJhbnNmZXIuYWNjb3VudElEISksXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAuLi4odG9rZW5UcmFuc2ZlcnMubGVuZ3RoICYmIHtcbiAgICAgICAgICAgIHRva2VuTmFtZTogdG9rZW5OYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi4odG9rZW5UcmFuc2ZlcnMubGVuZ3RoICYmIHtcbiAgICAgICAgdG9rZW5OYW1lOiB0b2tlbk5hbWUsXG4gICAgICB9KSxcbiAgICAgIHJlY2lwaWVudHM6IHRyYW5zZmVyRGF0YSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVjaXBpZW50IGFjY291bnQgYW5kIHRoZSBhbW91bnRcbiAgICogdHJhbnNmZXJyZWQgb24gdGhpcyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcmV0dXJucyB7IGFjY291bnRJZDogc3RyaW5nOyB0b2tlbk5hbWVzW119IGlzIGFuIG9iamVjdCBjb25zaXN0aW5nIG9mIGFjY291bnRJZCBmb3IgdGhlIHRva2VuIG93bmVyXG4gICAqICBhbmQgbGlzdCBvZiB0b2tlbk5hbWVzIHRoYXQgd2lsbCBiZSBlbmFibGVkXG4gICAqL1xuICBwcml2YXRlIGdldEFjY291bnRBc3NvY2lhdGVEYXRhKCk6IHsgYWNjb3VudElkOiBzdHJpbmc7IHRva2VuTmFtZXM6IHN0cmluZ1tdIH0ge1xuICAgIGNvbnN0IHRva2VuczogcHJvdG8uSVRva2VuSURbXSA9IHRoaXMuX3R4Qm9keS50b2tlbkFzc29jaWF0ZSEudG9rZW5zIHx8IFtdO1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50SWQ6IHN0cmluZ2lmeUFjY291bnRJZCh0aGlzLl90eEJvZHkudG9rZW5Bc3NvY2lhdGUhLmFjY291bnQhKSxcbiAgICAgIHRva2VuTmFtZXM6IHRva2Vucy5tYXAoKHRva2VuOiBwcm90by5JVG9rZW5JRCkgPT4gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHN0cmluZ2lmeVRva2VuSWQodG9rZW4pKSEubmFtZSksXG4gICAgfTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBnZXR0ZXJzICYgc2V0dGVyc1xuICBnZXQgdHhCb2R5KCk6IHByb3RvLlRyYW5zYWN0aW9uQm9keSB7XG4gICAgcmV0dXJuIHRoaXMuX3R4Qm9keTtcbiAgfVxuXG4gIGdldCBoZWRlcmFUeCgpOiBwcm90by5UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hlZGVyYVR4O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBib2R5IGNvbXBvbmVudHNcbiAgICpcbiAgICogQHBhcmFtIHtwcm90by5UcmFuc2FjdGlvbn0gdHggLSBCb2R5IFRyYW5zYWN0aW9uXG4gICAqL1xuICBib2R5KHR4OiBwcm90by5UcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3R4Qm9keSA9IHByb3RvLlRyYW5zYWN0aW9uQm9keS5kZWNvZGUodHguYm9keUJ5dGVzKTtcbiAgICB0aGlzLl9oZWRlcmFUeCA9IHR4O1xuICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSAtIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldFxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGUgcHJldmlvdXMgc2lnbmF0dXJlcyBmcm9tIHRoZSBpbm5lciBoZWRlcmEgdHJhbnNhY3Rpb25cbiAgICogYW5kIHNhdmUgdGhlbSBpbnRvIHRoZSBiYXNlIHRyYW5zYWN0aW9uIHNpZ25hdHVyZSBsaXN0LlxuICAgKi9cbiAgbG9hZFByZXZpb3VzU2lnbmF0dXJlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faGVkZXJhVHguc2lnTWFwICYmIHRoaXMuX2hlZGVyYVR4LnNpZ01hcC5zaWdQYWlyKSB7XG4gICAgICBjb25zdCBzaWdQYWlycyA9IHRoaXMuX2hlZGVyYVR4LnNpZ01hcC5zaWdQYWlyO1xuICAgICAgc2lnUGFpcnMuZm9yRWFjaCgoc2lnUGFpcikgPT4ge1xuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBzaWdQYWlyLmVkMjU1MTk7XG4gICAgICAgIGlmIChzaWduYXR1cmUpIHtcbiAgICAgICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2godG9IZXgoc2lnbmF0dXJlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGRhdGEgb24gdGhpcyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgdHJhbnNhY3Rpb24ganNvblxuICAgKiBpZiB0aGVyZSBhcmUgb3V0cHV0cy4gRm9yIHRyYW5zYWN0aW9ucyB3aXRob3V0IG91dHB1dHMgKGUuZy4gd2FsbGV0IGluaXRpYWxpemF0aW9ucyksXG4gICAqIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZG8gYW55dGhpbmdcbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHR4SnNvbiA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb24gPSB0eEpzb24uaW5zdHJ1Y3Rpb25zRGF0YTtcbiAgICBjb25zdCBvdXRwdXRzOiBFbnRyeVtdID0gW107XG4gICAgY29uc3QgaW5wdXRzOiBFbnRyeVtdID0gW107XG5cbiAgICBzd2l0Y2ggKGluc3RydWN0aW9uPy50eXBlKSB7XG4gICAgICBjYXNlIEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVHJhbnNmZXI6XG4gICAgICAgIGxldCB0b3RhbEFtb3VudCA9IG5ldyBCaWdOdW1iZXIoMCk7XG4gICAgICAgIGluc3RydWN0aW9uLnBhcmFtcy5yZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICAgIHRvdGFsQW1vdW50ID0gdG90YWxBbW91bnQucGx1cyhyZWNpcGllbnQuYW1vdW50KTtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogcmVjaXBpZW50LmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHJlY2lwaWVudC50b2tlbk5hbWUgfHwgdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IHR4SnNvbi5mcm9tLFxuICAgICAgICAgIHZhbHVlOiB0b3RhbEFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIGNvaW46IGluc3RydWN0aW9uLnBhcmFtcy50b2tlbk5hbWUgfHwgdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgSGVkZXJhVHJhbnNhY3Rpb25UeXBlcy5Ub2tlbkFzc29jaWF0ZVRvQWNjb3VudDpcbiAgICAgICAgaW5zdHJ1Y3Rpb24ucGFyYW1zLnRva2VuTmFtZXMuZm9yRWFjaCgodG9rZW5OYW1lKSA9PiB7XG4gICAgICAgICAgY29uc3QgdG9rZW5FbnRyeTogRW50cnkgPSB7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuYWNjb3VudElkLFxuICAgICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgICAgIGNvaW46IHRva2VuTmFtZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlucHV0cy5wdXNoKHRva2VuRW50cnkpO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh0b2tlbkVudHJ5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHM7XG4gICAgdGhpcy5fb3V0cHV0cyA9IG91dHB1dHM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIGJvZHkgY29tcG9uZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ5dGVzIC0gRW5jb2RlZCBib2R5IHRyYW5zYWN0aW9uXG4gICAqL1xuICBib2R5Qnl0ZXMoYnl0ZXM6IFVpbnQ4QXJyYXkpOiB2b2lkIHtcbiAgICB0aGlzLmJvZHkocHJvdG8uVHJhbnNhY3Rpb24uZGVjb2RlKGJ5dGVzKSk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIGhlbHBlcnNcbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyBoZWRlcmEgdHJhbnNhY3Rpb24gaWQgY29tcG9uZW50cyBpbiBhIHJlYWRhYmxlIGZvcm1hdFxuICAgKlxuICAgKiBAcmV0dXJucyB7W3N0cmluZywgc3RyaW5nXX0gLSBUcmFuc2FjdGlvbiBpZCBwYXJ0cyBbPGFjY291bnQgaWQ+LCA8c3RhcnRUaW1lIGluIHNlY29uZHM+XVxuICAgKi9cbiAgZ2V0VHhJZFBhcnRzKCk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICAgIGlmIChcbiAgICAgIHRoaXMuX3R4Qm9keSAmJlxuICAgICAgdGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQgJiZcbiAgICAgIHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbklELmFjY291bnRJRCAmJlxuICAgICAgdGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQudHJhbnNhY3Rpb25WYWxpZFN0YXJ0XG4gICAgKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBzdHJpbmdpZnlBY2NvdW50SWQodGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQuYWNjb3VudElEKSxcbiAgICAgICAgc3RyaW5naWZ5VHhUaW1lKHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbklELnRyYW5zYWN0aW9uVmFsaWRTdGFydCksXG4gICAgICBdO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgdHJhbnNhY3Rpb24gaWQgaW5mb3JtYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoaXMgdHJhbnNhY3Rpb24gaGFzaFxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0cmFuc2FjdGlvbiBoYXNoXG4gICAqL1xuICBnZXRUeEhhc2goKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3R4Qm9keS5ub2RlQWNjb3VudElEKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgdHJhbnNhY3Rpb24gbm9kZSBpZCcpO1xuICAgIH1cbiAgICBjb25zdCBfc2lnbmVkVHggPSBuZXcgcHJvdG8uU2lnbmVkVHJhbnNhY3Rpb24oKTtcbiAgICBfc2lnbmVkVHguc2lnTWFwID0gdGhpcy5faGVkZXJhVHguc2lnTWFwO1xuICAgIF9zaWduZWRUeC5ib2R5Qnl0ZXMgPSB0aGlzLl9oZWRlcmFUeC5ib2R5Qnl0ZXM7XG5cbiAgICBjb25zdCBlbmNvZGVyID0gcHJvdG8uU2lnbmVkVHJhbnNhY3Rpb247XG4gICAgcmV0dXJuIHRoaXMuc2hhKHRoaXMuZW5jb2RlKF9zaWduZWRUeCwgZW5jb2RlcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSBhbiBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIGVuY29kZXIgY2xhc3NcbiAgICpcbiAgICogQHBhcmFtIHtwcm90b30gb2JqIC0gVGhlIG9iamVjdCB0byBiZSBlbmNvZGVkLCBtdXN0IGJlIGluIHByb3RvIG5hbWVzcGFjZVxuICAgKiBAcGFyYW0gZW5jb2RlciAtIE9iamVjdCBlbmNvZGVyXG4gICAqIEByZXR1cm5zIHtVaW50OEFycmF5fSAtIEVuY29kZWQgb2JqZWN0IGJ5dGUgYXJyYXlcbiAgICovXG4gIHByaXZhdGUgZW5jb2RlPEN0b3JGbiBleHRlbmRzIHsgbmV3ICgpOiBUIH0sIFQgZXh0ZW5kcyB7IGNvbnN0cnVjdG9yOiBDdG9yRm4gfT4oXG4gICAgb2JqOiBULFxuICAgIGVuY29kZXI6IHsgZW5jb2RlKGFyZzogVCk6IFdyaXRlciB9LFxuICApOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gZW5jb2Rlci5lbmNvZGUob2JqKS5maW5pc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc2hhLTM4NCBoYXNoXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnl0ZXMgLSBCeXRlcyB0byBiZSBoYXNoZWRcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcmVzdWx0aW5nIGhhc2ggc3RyaW5nXG4gICAqL1xuICBzaGEoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0b0hleChoYXNoKGJ5dGVzKSk7XG4gIH1cbn1cbiJdfQ==
|