@allbridge/bridge-core-sdk 3.26.0-beta.1 → 3.27.0-alpha.1
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/dist/browser/index.js +6 -1
- package/dist/browser/index.js.map +4 -4
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +6 -1
- package/dist/esm/index.js.map +4 -4
- package/dist/src/chains/chain.enums.d.ts +7 -2
- package/dist/src/chains/chain.enums.js +5 -0
- package/dist/src/chains/chain.enums.js.map +1 -1
- package/dist/src/chains/index.js +6 -0
- package/dist/src/chains/index.js.map +1 -1
- package/dist/src/client/core-api/core-api-mapper.js +1 -0
- package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
- package/dist/src/client/core-api/core-api.model.d.ts +1 -0
- package/dist/src/client/core-api/core-api.model.js.map +1 -1
- package/dist/src/services/bridge/alg/index.d.ts +15 -0
- package/dist/src/services/bridge/alg/index.js +157 -0
- package/dist/src/services/bridge/alg/index.js.map +1 -0
- package/dist/src/services/bridge/index.js +16 -0
- package/dist/src/services/bridge/index.js.map +1 -1
- package/dist/src/services/bridge/models/bridge.model.d.ts +1 -0
- package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
- package/dist/src/services/bridge/sui/index.js.map +1 -1
- package/dist/src/services/bridge/utils.d.ts +3 -1
- package/dist/src/services/bridge/utils.js +72 -15
- package/dist/src/services/bridge/utils.js.map +1 -1
- package/dist/src/services/liquidity-pool/alg/index.d.ts +19 -0
- package/dist/src/services/liquidity-pool/alg/index.js +141 -0
- package/dist/src/services/liquidity-pool/alg/index.js.map +1 -0
- package/dist/src/services/liquidity-pool/index.js +16 -0
- package/dist/src/services/liquidity-pool/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/sui/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/trx/index.js.map +1 -1
- package/dist/src/services/models/alg/BridgeClient.d.ts +2718 -0
- package/dist/src/services/models/alg/BridgeClient.js +2633 -0
- package/dist/src/services/models/alg/BridgeClient.js.map +1 -0
- package/dist/src/services/models/alg/PoolClient.d.ts +2265 -0
- package/dist/src/services/models/alg/PoolClient.js +2176 -0
- package/dist/src/services/models/alg/PoolClient.js.map +1 -0
- package/dist/src/services/models/index.d.ts +6 -5
- package/dist/src/services/models/index.js.map +1 -1
- package/dist/src/services/token/alg/index.d.ts +17 -0
- package/dist/src/services/token/alg/index.js +46 -0
- package/dist/src/services/token/alg/index.js.map +1 -0
- package/dist/src/services/token/index.js +16 -0
- package/dist/src/services/token/index.js.map +1 -1
- package/dist/src/services/token/sui/index.js.map +1 -1
- package/dist/src/services/utils/alg/index.d.ts +18 -0
- package/dist/src/services/utils/alg/index.js +94 -0
- package/dist/src/services/utils/alg/index.js.map +1 -0
- package/dist/src/services/utils/trx/index.js.map +1 -1
- package/dist/src/services/yield/index.js +4 -0
- package/dist/src/services/yield/index.js.map +1 -1
- package/dist/src/tokens-info/tokens-info.model.d.ts +4 -0
- package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
- package/dist/src/utils/alg/index.d.ts +21 -0
- package/dist/src/utils/alg/index.js +67 -0
- package/dist/src/utils/alg/index.js.map +1 -0
- package/dist/src/utils/index.d.ts +3 -0
- package/dist/src/utils/index.js +3 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BridgeClient.js","sourceRoot":"","sources":["../../../../../src/services/models/alg/BridgeClient.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable */\n/**\n * This file was automatically generated by @algorandfoundation/algokit-client-generator.\n * DO NOT MODIFY IT BY HAND.\n * requires: @algorandfoundation/algokit-utils: ^7\n */\nimport { type AlgorandClient } from \"@algorandfoundation/algokit-utils/types/algorand-client\";\nimport { ABIReturn, AppReturn, SendAppTransactionResult } from \"@algorandfoundation/algokit-utils/types/app\";\nimport {\n Arc56Contract,\n getArc56ReturnValue,\n getABIStructFromABITuple,\n} from \"@algorandfoundation/algokit-utils/types/app-arc56\";\nimport {\n AppClient as _AppClient,\n AppClientMethodCallParams,\n AppClientParams,\n AppClientBareCallParams,\n CallOnComplete,\n AppClientCompilationParams,\n ResolveAppClientByCreatorAndName,\n ResolveAppClientByNetwork,\n CloneAppClientParams,\n} from \"@algorandfoundation/algokit-utils/types/app-client\";\nimport {\n AppFactory as _AppFactory,\n AppFactoryAppClientParams,\n AppFactoryResolveAppClientByCreatorAndNameParams,\n AppFactoryDeployParams,\n AppFactoryParams,\n CreateSchema,\n} from \"@algorandfoundation/algokit-utils/types/app-factory\";\nimport {\n TransactionComposer,\n AppCallMethodCall,\n AppMethodCallTransactionArgument,\n SimulateOptions,\n RawSimulateOptions,\n SkipSignaturesSimulateOptions,\n} from \"@algorandfoundation/algokit-utils/types/composer\";\nimport {\n SendParams,\n SendSingleTransactionResult,\n SendAtomicTransactionComposerResults,\n} from \"@algorandfoundation/algokit-utils/types/transaction\";\nimport { Address, encodeAddress, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from \"algosdk\";\n\nexport const APP_SPEC: Arc56Contract = {\n name: \"Bridge\",\n structs: {},\n methods: [\n {\n name: \"createApplication\",\n args: [\n { type: \"address\", name: \"owner\" },\n { type: \"byte\", name: \"chainId\" },\n { type: \"application\", name: \"messenger\" },\n { type: \"application\", name: \"gasOracle\" },\n ],\n returns: { type: \"void\" },\n actions: { create: [\"NoOp\"], call: [] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"optInAsset\",\n args: [{ type: \"uint64\", name: \"assetId\" }],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"noop\",\n args: [],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"swapAndBridge\",\n args: [\n { type: \"uint64\", name: \"tokenId\" },\n { type: \"byte[32]\", name: \"recipient\" },\n { type: \"byte\", name: \"destinationChainId\" },\n { type: \"byte[32]\", name: \"receiveToken\" },\n { type: \"byte[32]\", name: \"nonce\" },\n {\n type: \"uint64\",\n name: \"feeTokenAmount\",\n defaultValue: { source: \"literal\", data: \"AAAAAAAAAAA=\", type: \"uint64\" },\n },\n ],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [\n {\n name: \"BridgingFeeFromTokens\",\n args: [\n { type: \"uint64\", name: \"feeFromNative\" },\n { type: \"uint64\", name: \"feeFromStable\" },\n { type: \"uint64\", name: \"feeStableTokenAmount\" },\n ],\n },\n {\n name: \"ReceiveFee\",\n args: [\n { type: \"uint64\", name: \"bridgeTransactionCost\" },\n { type: \"uint64\", name: \"messageTransactionCost\" },\n ],\n },\n {\n name: \"TokensSent\",\n args: [\n { type: \"uint64\", name: \"amount\" },\n { type: \"byte[32]\", name: \"recipient\" },\n { type: \"byte\", name: \"destinationChainId\" },\n { type: \"byte[32]\", name: \"receiveToken\" },\n { type: \"byte[32]\", name: \"nonce\" },\n { type: \"byte\", name: \"messenger\" },\n ],\n },\n ],\n recommendations: {},\n },\n {\n name: \"receiveTokens\",\n args: [\n { type: \"uint64\", name: \"amount\" },\n { type: \"byte[32]\", name: \"recipient\" },\n { type: \"byte\", name: \"sourceChainId\" },\n { type: \"byte[32]\", name: \"receiveToken\" },\n { type: \"byte[32]\", name: \"nonce\" },\n { type: \"uint64\", name: \"receiveAmountMin\" },\n ],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [\n {\n name: \"TokensReceived\",\n args: [\n { type: \"uint64\", name: \"receiveAmount\" },\n { type: \"address\", name: \"recipient\" },\n { type: \"byte[32]\", name: \"nonce\" },\n { type: \"byte\", name: \"messenger\" },\n { type: \"byte[32]\", name: \"message\" },\n ],\n },\n ],\n recommendations: {},\n },\n {\n name: \"registerBridge\",\n args: [\n { type: \"byte\", name: \"chainId\" },\n { type: \"byte[32]\", name: \"bridgeAddress\" },\n ],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"addBridgeToken\",\n args: [\n { type: \"byte\", name: \"chainId\" },\n { type: \"byte[32]\", name: \"tokenAddress\" },\n ],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"removeBridgeToken\",\n args: [\n { type: \"byte\", name: \"chainId\" },\n { type: \"byte[32]\", name: \"tokenAddress\" },\n ],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"withdrawGasTokens\",\n args: [{ type: \"uint64\", name: \"amount\" }],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"withdrawBridgingFeeInTokens\",\n args: [{ type: \"uint64\", name: \"assetId\" }],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"getBridgingCostInTokens\",\n args: [\n { type: \"byte\", name: \"destinationChainId\" },\n { type: \"uint64\", name: \"tokenId\" },\n ],\n returns: { type: \"uint64\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: true,\n events: [],\n recommendations: {},\n },\n {\n name: \"hashMessage\",\n args: [\n { type: \"uint64\", name: \"amount\" },\n { type: \"byte[32]\", name: \"recipient\" },\n { type: \"byte\", name: \"sourceChainId\" },\n { type: \"byte\", name: \"destinationChainId\" },\n { type: \"byte[32]\", name: \"receiveToken\" },\n { type: \"byte[32]\", name: \"nonce\" },\n ],\n returns: { type: \"byte[32]\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: true,\n events: [],\n recommendations: {},\n },\n {\n name: \"isOtherBridgeTokenSupported\",\n args: [\n { type: \"byte\", name: \"chainId\" },\n { type: \"byte[32]\", name: \"token\" },\n ],\n returns: { type: \"bool\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: true,\n events: [],\n recommendations: {},\n },\n {\n name: \"getTransactionCost\",\n args: [{ type: \"byte\", name: \"chainId\" }],\n returns: { type: \"uint64\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: true,\n events: [],\n recommendations: {},\n },\n {\n name: \"getReceiveTokensCost\",\n args: [],\n returns: { type: \"uint64\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: true,\n events: [],\n recommendations: {},\n },\n {\n name: \"getSendTransactionStorageCost\",\n args: [],\n returns: { type: \"uint64\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: true,\n events: [],\n recommendations: {},\n },\n {\n name: \"swap\",\n args: [\n { type: \"uint64\", name: \"tokenId\", desc: \"The token to be swapped.\" },\n { type: \"uint64\", name: \"receiveTokenId\", desc: \"The token to receive in exchange for the swapped token.\" },\n { type: \"address\", name: \"recipient\", desc: \"The address to receive the tokens.\" },\n {\n type: \"uint64\",\n name: \"receiveAmountMin\",\n desc: \"The minimum amount of tokens required to receive during the swap.\",\n },\n ],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [\n {\n name: \"Swapped\",\n args: [\n { type: \"address\", name: \"sender\" },\n { type: \"address\", name: \"recipient\" },\n { type: \"uint64\", name: \"tokenId\" },\n { type: \"uint64\", name: \"receiveTokenId\" },\n { type: \"uint64\", name: \"amount\" },\n { type: \"uint64\", name: \"receivedAmount\" },\n ],\n },\n ],\n recommendations: {},\n },\n {\n name: \"addPool\",\n args: [\n { type: \"uint64\", name: \"poolId\", desc: \"The address of the `Pool` contract.\" },\n { type: \"uint64\", name: \"tokenId\", desc: \"The address of the token in the liquidity pool.\" },\n ],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"removePool\",\n args: [{ type: \"uint64\", name: \"tokenId\" }],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"stopSwap\",\n args: [],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"startSwap\",\n args: [],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"setStopAuthority\",\n args: [{ type: \"address\", name: \"stopAuthority\" }],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"setRebalancer\",\n args: [{ type: \"address\", name: \"rebalancer\" }],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"getGasUsage\",\n args: [{ type: \"byte\", name: \"chainId\" }],\n returns: { type: \"uint64\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: true,\n events: [],\n recommendations: {},\n },\n {\n name: \"setGasUsage\",\n args: [\n { type: \"byte\", name: \"chainId\" },\n { type: \"uint64\", name: \"gasAmount\" },\n ],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"setGasOracle\",\n args: [{ type: \"application\", name: \"gasOracle\" }],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n {\n name: \"getTransactionRelayerCost\",\n args: [{ type: \"byte\", name: \"chainId\" }],\n returns: { type: \"uint64\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: true,\n events: [],\n recommendations: {},\n },\n {\n name: \"transferOwnership\",\n args: [{ type: \"address\", name: \"newOwner\" }],\n returns: { type: \"void\" },\n actions: { create: [], call: [\"NoOp\"] },\n readonly: false,\n events: [],\n recommendations: {},\n },\n ],\n arcs: [22, 28],\n networks: {},\n state: {\n schema: { global: { ints: 3, bytes: 4 }, local: { ints: 0, bytes: 0 } },\n keys: {\n global: {\n chainId: { keyType: \"AVMString\", valueType: \"byte\", key: \"Y2hhaW5JZA==\" },\n messenger: { keyType: \"AVMString\", valueType: \"AVMUint64\", key: \"bWVzc2VuZ2Vy\" },\n stopAuthority: { keyType: \"AVMString\", valueType: \"address\", key: \"c3RvcEF1dGhvcml0eQ==\" },\n rebalancer: { keyType: \"AVMString\", valueType: \"address\", key: \"cmViYWxhbmNlcg==\" },\n canSwap: { keyType: \"AVMString\", valueType: \"AVMUint64\", key: \"Y2FuU3dhcA==\" },\n gasOracle: { keyType: \"AVMString\", valueType: \"AVMUint64\", key: \"Z2FzT3JhY2xl\" },\n owner: { keyType: \"AVMString\", valueType: \"address\", key: \"b3duZXI=\" },\n },\n local: {},\n box: {},\n },\n maps: {\n global: {},\n local: {},\n box: {\n processedMessages: { keyType: \"byte[32]\", valueType: \"byte[0]\", prefix: \"bQ==\" },\n sentMessages: { keyType: \"byte[32]\", valueType: \"byte[0]\", prefix: \"cw==\" },\n otherBridges: { keyType: \"byte\", valueType: \"byte[32]\", prefix: \"Yg==\" },\n otherBridgeTokens: { keyType: \"AVMBytes\", valueType: \"byte[0]\", prefix: \"dA==\" },\n pools: { keyType: \"uint64\", valueType: \"uint64\", prefix: \"cA==\" },\n fromGasOracleScalingFactor: { keyType: \"uint64\", valueType: \"uint64\", prefix: \"ZQ==\" },\n bridgingFeeConversionScalingFactor: { keyType: \"uint64\", valueType: \"uint64\", prefix: \"Zg==\" },\n gasUsage: { keyType: \"byte\", valueType: \"uint64\", prefix: \"Zw==\" },\n },\n },\n },\n bareActions: { create: [], call: [] },\n sourceInfo: {\n approval: {\n sourceInfo: [\n { pc: [906], errorMessage: \"Asset must go to app\" },\n { pc: [889], errorMessage: \"Asset txn missing\" },\n { pc: [1391, 1858, 2149, 2235, 2329, 2371], errorMessage: \"Box must have value\" },\n { pc: [1122], errorMessage: \"Bridge: amount too low for fee\" },\n { pc: [1130], errorMessage: \"Bridge: bridge to the zero address\" },\n { pc: [1518], errorMessage: \"Bridge: message processed\" },\n { pc: [1561], errorMessage: \"Bridge: no message\" },\n { pc: [1352, 1469], errorMessage: \"Bridge: not enough fee\" },\n { pc: [1460], errorMessage: \"Bridge: source not registered\" },\n { pc: [1242], errorMessage: \"Bridge: tokens already sent\" },\n { pc: [1205], errorMessage: \"Bridge: unknown chain or token\" },\n { pc: [1192], errorMessage: \"Bridge: wrong destination chain\" },\n { pc: [1283, 1437, 1558, 1797, 1844, 2213, 2314, 2415], errorMessage: \"Bytes has valid prefix\" },\n { pc: [927], errorMessage: \"CloseTo not allowed\" },\n { pc: [1248], errorMessage: \"Index access is out of bounds\" },\n {\n pc: [\n 341, 356, 376, 394, 413, 433, 448, 463, 475, 487, 503, 523, 550, 562, 574, 594, 622, 657, 681, 697, 713,\n 731, 749, 767, 799, 831, 840, 856,\n ],\n errorMessage: \"OnCompletion is not NoOp\",\n },\n { pc: [2425], errorMessage: \"Only owner\" },\n { pc: [920], errorMessage: \"Rekey not allowed\" },\n { pc: [2094], errorMessage: \"Router: is not stopAuthority\" },\n { pc: [2230], errorMessage: \"Router: no pool\" },\n { pc: [2144], errorMessage: \"Router: no receive pool\" },\n { pc: [1112, 1450, 1947], errorMessage: \"Router: swap prohibited\" },\n { pc: [913], errorMessage: \"Wrong asset\" },\n { pc: [1724], errorMessage: \"account opted into asset\" },\n { pc: [1291, 2240], errorMessage: \"application exists\" },\n { pc: [2035], errorMessage: \"asset exists\" },\n { pc: [860], errorMessage: \"can only call when creating\" },\n {\n pc: [\n 344, 359, 379, 397, 416, 436, 451, 466, 478, 490, 506, 526, 553, 565, 577, 597, 625, 660, 684, 700, 716,\n 734, 752, 770, 802, 834, 843,\n ],\n errorMessage: \"can only call when not creating\",\n },\n {\n pc: [\n 1111, 1188, 1210, 1255, 1288, 1295, 1400, 1405, 1449, 1474, 1526, 1692, 1732, 1767, 1804, 1946, 2092, 2161,\n 2266, 2377, 2423,\n ],\n errorMessage: \"check GlobalState exists\",\n },\n { pc: [1910], errorMessage: \"invalid size\" },\n { pc: [899], errorMessage: \"transaction type is axfer\" },\n { pc: [975], errorMessage: \"transaction type is pay\" },\n ],\n pcOffsetMethod: \"none\",\n },\n clear: { sourceInfo: [], pcOffsetMethod: \"none\" },\n },\n source: {\n approval:\n \"I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCAxIDYgNCAxNTcwMAogICAgYnl0ZWNibG9jayAweDE1MWY3Yzc1ICJjYW5Td2FwIiAibWVzc2VuZ2VyIiAib3duZXIiICJnYXNPcmFjbGUiICJjaGFpbklkIiAicmViYWxhbmNlciIgInQiICJwIiAweDAwICJzdG9wQXV0aG9yaXR5IiAweDAxICJnIiAweDQzNDE3YWEzIDB4Zjc0NzViODIgMHgxNTFmN2M3NTAwMDAwMDAwMDAwMDNkNTQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6NDkKICAgIC8vIHByaXZhdGUgcmViYWxhbmNlciA9IEdsb2JhbFN0YXRlPEFkZHJlc3M+KHsgaW5pdGlhbFZhbHVlOiBuZXcgQWRkcmVzcyhiemVybygwKSkgfSk7Ly8gY2FuIHJlc3RyaWN0IGRlcG9zaXQgb3Igd2l0aGRyYXcgb3BlcmF0aW9ucwogICAgaW50Y18wIC8vIDAKICAgIGJ6ZXJvCiAgICBieXRlYyA2IC8vICJyZWJhbGFuY2VyIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6NTAKICAgIC8vIGNhblN3YXAgPSBHbG9iYWxTdGF0ZTxib29sZWFuPih7IGluaXRpYWxWYWx1ZTogdHJ1ZSB9KTsKICAgIGJ5dGVjXzEgLy8gImNhblN3YXAiCiAgICBpbnRjXzEgLy8gMQogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NAogICAgLy8gZXhwb3J0IGNsYXNzIEJyaWRnZSBleHRlbmRzIFJvdXRlciBpbXBsZW1lbnRzIENvbnZlbnRpb25hbFJvdXRpbmcsIElCcmlkZ2UgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fYWZ0ZXJfaWZfZWxzZUAzNgogICAgcHVzaGJ5dGVzcyAweGZmZjgyODQxIDB4NjVmNzA1NzMgMHhlODNhODdhYiAweDJjOWY2ODQ3IDB4MzE5MTliMjggMHg0ZWJhMDcyMSAweGM2MTdlZDczIDB4NTc1MzE1NjAgMHg2MzgwODI3OCAweDA2NTA3YzZhIDB4ZjVmOTZlYjMgMHg0YjA2MmNhMCAweGMzY2RkOTJhIC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oYWRkcmVzcyxieXRlLGFwcGxpY2F0aW9uLGFwcGxpY2F0aW9uKXZvaWQiLCBtZXRob2QgIm9wdEluQXNzZXQodWludDY0KXZvaWQiLCBtZXRob2QgIm5vb3AoKXZvaWQiLCBtZXRob2QgInN3YXBBbmRCcmlkZ2UodWludDY0LGJ5dGVbMzJdLGJ5dGUsYnl0ZVszMl0sYnl0ZVszMl0sdWludDY0KXZvaWQiLCBtZXRob2QgInJlY2VpdmVUb2tlbnModWludDY0LGJ5dGVbMzJdLGJ5dGUsYnl0ZVszMl0sYnl0ZVszMl0sdWludDY0KXZvaWQiLCBtZXRob2QgInJlZ2lzdGVyQnJpZGdlKGJ5dGUsYnl0ZVszMl0pdm9pZCIsIG1ldGhvZCAiYWRkQnJpZGdlVG9rZW4oYnl0ZSxieXRlWzMyXSl2b2lkIiwgbWV0aG9kICJyZW1vdmVCcmlkZ2VUb2tlbihieXRlLGJ5dGVbMzJdKXZvaWQiLCBtZXRob2QgIndpdGhkcmF3R2FzVG9rZW5zKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ3aXRoZHJhd0JyaWRnaW5nRmVlSW5Ub2tlbnModWludDY0KXZvaWQiLCBtZXRob2QgImdldEJyaWRnaW5nQ29zdEluVG9rZW5zKGJ5dGUsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAiaGFzaE1lc3NhZ2UodWludDY0LGJ5dGVbMzJdLGJ5dGUsYnl0ZSxieXRlWzMyXSxieXRlWzMyXSlieXRlWzMyXSIsIG1ldGhvZCAiaXNPdGhlckJyaWRnZVRva2VuU3VwcG9ydGVkKGJ5dGUsYnl0ZVszMl0pYm9vbCIKICAgIGJ5dGVjIDEzIC8vIG1ldGhvZCAiZ2V0VHJhbnNhY3Rpb25Db3N0KGJ5dGUpdWludDY0IgogICAgcHVzaGJ5dGVzcyAweDA3ZGY4NDI5IDB4ODBjNWM3MGYgMHhmYWIxMTFhMiAweGVmMTVmODU1IDB4NmIxZWUyMjMgMHgxODcwYTQ5MiAweDM1NTczMjRkIDB4MDRiMTYxZjEgMHhkMmIzNTdlYiAvLyBtZXRob2QgImdldFJlY2VpdmVUb2tlbnNDb3N0KCl1aW50NjQiLCBtZXRob2QgImdldFNlbmRUcmFuc2FjdGlvblN0b3JhZ2VDb3N0KCl1aW50NjQiLCBtZXRob2QgInN3YXAodWludDY0LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJhZGRQb29sKHVpbnQ2NCx1aW50NjQpdm9pZCIsIG1ldGhvZCAicmVtb3ZlUG9vbCh1aW50NjQpdm9pZCIsIG1ldGhvZCAic3RvcFN3YXAoKXZvaWQiLCBtZXRob2QgInN0YXJ0U3dhcCgpdm9pZCIsIG1ldGhvZCAic2V0U3RvcEF1dGhvcml0eShhZGRyZXNzKXZvaWQiLCBtZXRob2QgInNldFJlYmFsYW5jZXIoYWRkcmVzcyl2b2lkIgogICAgYnl0ZWMgMTQgLy8gbWV0aG9kICJnZXRHYXNVc2FnZShieXRlKXVpbnQ2NCIKICAgIHB1c2hieXRlc3MgMHgwY2E1YWU3YSAweDM5N2I5MThiIDB4Y2JmYzZkMDIgMHhlMTdiYWZiNCAvLyBtZXRob2QgInNldEdhc1VzYWdlKGJ5dGUsdWludDY0KXZvaWQiLCBtZXRob2QgInNldEdhc09yYWNsZShhcHBsaWNhdGlvbil2b2lkIiwgbWV0aG9kICJnZXRUcmFuc2FjdGlvblJlbGF5ZXJDb3N0KGJ5dGUpdWludDY0IiwgbWV0aG9kICJ0cmFuc2Zlck93bmVyc2hpcChhZGRyZXNzKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX2NyZWF0ZUFwcGxpY2F0aW9uX3JvdXRlQDUgbWFpbl9vcHRJbkFzc2V0X3JvdXRlQDYgbWFpbl9ub29wX3JvdXRlQDcgbWFpbl9zd2FwQW5kQnJpZGdlX3JvdXRlQDggbWFpbl9yZWNlaXZlVG9rZW5zX3JvdXRlQDkgbWFpbl9yZWdpc3RlckJyaWRnZV9yb3V0ZUAxMCBtYWluX2FkZEJyaWRnZVRva2VuX3JvdXRlQDExIG1haW5fcmVtb3ZlQnJpZGdlVG9rZW5fcm91dGVAMTIgbWFpbl93aXRoZHJhd0dhc1Rva2Vuc19yb3V0ZUAxMyBtYWluX3dpdGhkcmF3QnJpZGdpbmdGZWVJblRva2Vuc19yb3V0ZUAxNCBtYWluX2dldEJyaWRnaW5nQ29zdEluVG9rZW5zX3JvdXRlQDE1IG1haW5faGFzaE1lc3NhZ2Vfcm91dGVAMTYgbWFpbl9pc090aGVyQnJpZGdlVG9rZW5TdXBwb3J0ZWRfcm91dGVAMTcgbWFpbl9nZXRUcmFuc2FjdGlvbkNvc3Rfcm91dGVAMTggbWFpbl9nZXRSZWNlaXZlVG9rZW5zQ29zdF9yb3V0ZUAxOSBtYWluX2dldFNlbmRUcmFuc2FjdGlvblN0b3JhZ2VDb3N0X3JvdXRlQDIwIG1haW5fc3dhcF9yb3V0ZUAyMSBtYWluX2FkZFBvb2xfcm91dGVAMjIgbWFpbl9yZW1vdmVQb29sX3JvdXRlQDIzIG1haW5fc3RvcFN3YXBfcm91dGVAMjQgbWFpbl9zdGFydFN3YXBfcm91dGVAMjUgbWFpbl9zZXRTdG9wQXV0aG9yaXR5X3JvdXRlQDI2IG1haW5fc2V0UmViYWxhbmNlcl9yb3V0ZUAyNyBtYWluX2dldEdhc1VzYWdlX3JvdXRlQDI4IG1haW5fc2V0R2FzVXNhZ2Vfcm91dGVAMjkgbWFpbl9zZXRHYXNPcmFjbGVfcm91dGVAMzAgbWFpbl9nZXRUcmFuc2FjdGlvblJlbGF5ZXJDb3N0X3JvdXRlQDMxIG1haW5fdHJhbnNmZXJPd25lcnNoaXBfcm91dGVAMzIKCm1haW5fYWZ0ZXJfaWZfZWxzZUAzNjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIGludGNfMCAvLyAwCiAgICByZXR1cm4KCm1haW5fdHJhbnNmZXJPd25lcnNoaXBfcm91dGVAMzI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL293bmFibGUuYWxnby50czoxNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvb3duYWJsZS5hbGdvLnRzOjE2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgdHJhbnNmZXJPd25lcnNoaXAKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fZ2V0VHJhbnNhY3Rpb25SZWxheWVyQ29zdF9yb3V0ZUAzMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MzQKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU0CiAgICAvLyBleHBvcnQgY2xhc3MgQnJpZGdlIGV4dGVuZHMgUm91dGVyIGltcGxlbWVudHMgQ29udmVudGlvbmFsUm91dGluZywgSUJyaWRnZSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjM0CiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGNhbGxzdWIgZ2V0VHJhbnNhY3Rpb25SZWxheWVyQ29zdAogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9zZXRHYXNPcmFjbGVfcm91dGVAMzA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjI4CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NAogICAgLy8gZXhwb3J0IGNsYXNzIEJyaWRnZSBleHRlbmRzIFJvdXRlciBpbXBsZW1lbnRzIENvbnZlbnRpb25hbFJvdXRpbmcsIElCcmlkZ2UgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYXMgQXBwbGljYXRpb25zCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjI4CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0R2FzT3JhY2xlCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3NldEdhc1VzYWdlX3JvdXRlQDI5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9nYXMtdXNhZ2UuYWxnby50czoyMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MjIKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRHYXNVc2FnZQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9nZXRHYXNVc2FnZV9yb3V0ZUAyODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MTcKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU0CiAgICAvLyBleHBvcnQgY2xhc3MgQnJpZGdlIGV4dGVuZHMgUm91dGVyIGltcGxlbWVudHMgQ29udmVudGlvbmFsUm91dGluZywgSUJyaWRnZSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjE3CiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGNhbGxzdWIgZ2V0R2FzVXNhZ2UKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fc2V0UmViYWxhbmNlcl9yb3V0ZUAyNzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTQ2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NAogICAgLy8gZXhwb3J0IGNsYXNzIEJyaWRnZSBleHRlbmRzIFJvdXRlciBpbXBsZW1lbnRzIENvbnZlbnRpb25hbFJvdXRpbmcsIElCcmlkZ2UgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNDYKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBzZXRSZWJhbGFuY2VyCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3NldFN0b3BBdXRob3JpdHlfcm91dGVAMjY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEzNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTM3CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc2V0U3RvcEF1dGhvcml0eQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9zdGFydFN3YXBfcm91dGVAMjU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEyOAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgc3RhcnRTd2FwCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3N0b3BTd2FwX3JvdXRlQDI0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxMTkKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHN0b3BTd2FwCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3JlbW92ZVBvb2xfcm91dGVAMjM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjExMAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTEwCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgcmVtb3ZlUG9vbAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9hZGRQb29sX3JvdXRlQDIyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxMDAKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU0CiAgICAvLyBleHBvcnQgY2xhc3MgQnJpZGdlIGV4dGVuZHMgUm91dGVyIGltcGxlbWVudHMgQ29udmVudGlvbmFsUm91dGluZywgSUJyaWRnZSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEwMAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIGFkZFBvb2wKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fc3dhcF9yb3V0ZUAyMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6NzgKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU0CiAgICAvLyBleHBvcnQgY2xhc3MgQnJpZGdlIGV4dGVuZHMgUm91dGVyIGltcGxlbWVudHMgQ29udmVudGlvbmFsUm91dGluZywgSUJyaWRnZSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjc4CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgc3dhcAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9nZXRTZW5kVHJhbnNhY3Rpb25TdG9yYWdlQ29zdF9yb3V0ZUAyMDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzI3CiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgYnl0ZWMgMTUgLy8gMHgxNTFmN2M3NTAwMDAwMDAwMDAwMDNkNTQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9nZXRSZWNlaXZlVG9rZW5zQ29zdF9yb3V0ZUAxOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzIwCiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgYnl0ZWMgMTUgLy8gMHgxNTFmN2M3NTAwMDAwMDAwMDAwMDNkNTQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9nZXRUcmFuc2FjdGlvbkNvc3Rfcm91dGVAMTg6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjMxNQogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzE1CiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGNhbGxzdWIgZ2V0VHJhbnNhY3Rpb25Db3N0CiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2lzT3RoZXJCcmlkZ2VUb2tlblN1cHBvcnRlZF9yb3V0ZUAxNzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzEwCiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NAogICAgLy8gZXhwb3J0IGNsYXNzIEJyaWRnZSBleHRlbmRzIFJvdXRlciBpbXBsZW1lbnRzIENvbnZlbnRpb25hbFJvdXRpbmcsIElCcmlkZ2UgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czozMTAKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgY2FsbHN1YiBpc090aGVyQnJpZGdlVG9rZW5TdXBwb3J0ZWQKICAgIGJ5dGVjIDkgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2hhc2hNZXNzYWdlX3JvdXRlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyODMKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU0CiAgICAvLyBleHBvcnQgY2xhc3MgQnJpZGdlIGV4dGVuZHMgUm91dGVyIGltcGxlbWVudHMgQ29udmVudGlvbmFsUm91dGluZywgSUJyaWRnZSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI4MwogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICBjYWxsc3ViIGhhc2hNZXNzYWdlCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2dldEJyaWRnaW5nQ29zdEluVG9rZW5zX3JvdXRlQDE1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyNjYKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU0CiAgICAvLyBleHBvcnQgY2xhc3MgQnJpZGdlIGV4dGVuZHMgUm91dGVyIGltcGxlbWVudHMgQ29udmVudGlvbmFsUm91dGluZywgSUJyaWRnZSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI2NgogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICBjYWxsc3ViIGdldEJyaWRnaW5nQ29zdEluVG9rZW5zCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3dpdGhkcmF3QnJpZGdpbmdGZWVJblRva2Vuc19yb3V0ZUAxNDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjUwCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NAogICAgLy8gZXhwb3J0IGNsYXNzIEJyaWRnZSBleHRlbmRzIFJvdXRlciBpbXBsZW1lbnRzIENvbnZlbnRpb25hbFJvdXRpbmcsIElCcmlkZ2UgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyNTAKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiB3aXRoZHJhd0JyaWRnaW5nRmVlSW5Ub2tlbnMKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fd2l0aGRyYXdHYXNUb2tlbnNfcm91dGVAMTM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI0NAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjQ0CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgd2l0aGRyYXdHYXNUb2tlbnMKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fcmVtb3ZlQnJpZGdlVG9rZW5fcm91dGVAMTI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjIzOAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjM4CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgcmVtb3ZlQnJpZGdlVG9rZW4KICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fYWRkQnJpZGdlVG9rZW5fcm91dGVAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjIzMgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjMyCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgYWRkQnJpZGdlVG9rZW4KICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fcmVnaXN0ZXJCcmlkZ2Vfcm91dGVAMTA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjIyNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjI2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgcmVnaXN0ZXJCcmlkZ2UKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fcmVjZWl2ZVRva2Vuc19yb3V0ZUA5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxNzgKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU0CiAgICAvLyBleHBvcnQgY2xhc3MgQnJpZGdlIGV4dGVuZHMgUm91dGVyIGltcGxlbWVudHMgQ29udmVudGlvbmFsUm91dGluZywgSUJyaWRnZSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjE3OAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIHJlY2VpdmVUb2tlbnMKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fc3dhcEFuZEJyaWRnZV9yb3V0ZUA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo5My05NwogICAgLy8gQGFiaW1ldGhvZCh7CiAgICAvLyAgIGRlZmF1bHRBcmd1bWVudHM6IHsKICAgIC8vICAgICBmZWVUb2tlbkFtb3VudDogeyBjb25zdGFudDogMCB9LAogICAgLy8gICB9LAogICAgLy8gfSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NAogICAgLy8gZXhwb3J0IGNsYXNzIEJyaWRnZSBleHRlbmRzIFJvdXRlciBpbXBsZW1lbnRzIENvbnZlbnRpb25hbFJvdXRpbmcsIElCcmlkZ2UgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo5My05NwogICAgLy8gQGFiaW1ldGhvZCh7CiAgICAvLyAgIGRlZmF1bHRBcmd1bWVudHM6IHsKICAgIC8vICAgICBmZWVUb2tlbkFtb3VudDogeyBjb25zdGFudDogMCB9LAogICAgLy8gICB9LAogICAgLy8gfSkKICAgIGNhbGxzdWIgc3dhcEFuZEJyaWRnZQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9ub29wX3JvdXRlQDc6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjg5CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9vcHRJbkFzc2V0X3JvdXRlQDY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjc0CiAgICAvLyBvcHRJbkFzc2V0KGFzc2V0SWQ6IHVpbnQ2NCk6IHZvaWQgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU0CiAgICAvLyBleHBvcnQgY2xhc3MgQnJpZGdlIGV4dGVuZHMgUm91dGVyIGltcGxlbWVudHMgQ29udmVudGlvbmFsUm91dGluZywgSUJyaWRnZSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjc0CiAgICAvLyBvcHRJbkFzc2V0KGFzc2V0SWQ6IHVpbnQ2NCk6IHZvaWQgewogICAgY2FsbHN1YiBvcHRJbkFzc2V0CiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2NyZWF0ZUFwcGxpY2F0aW9uX3JvdXRlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjY4CiAgICAvLyBjcmVhdGVBcHBsaWNhdGlvbihvd25lcjogQWRkcmVzcywgY2hhaW5JZDogQnl0ZSwgbWVzc2VuZ2VyOiBBcHBsaWNhdGlvbiwgZ2FzT3JhY2xlOiBBcHBsaWNhdGlvbik6IHZvaWQgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTQKICAgIC8vIGV4cG9ydCBjbGFzcyBCcmlkZ2UgZXh0ZW5kcyBSb3V0ZXIgaW1wbGVtZW50cyBDb252ZW50aW9uYWxSb3V0aW5nLCBJQnJpZGdlIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGJ0b2kKICAgIHR4bmFzIEFwcGxpY2F0aW9ucwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAogICAgYnRvaQogICAgdHhuYXMgQXBwbGljYXRpb25zCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjY4CiAgICAvLyBjcmVhdGVBcHBsaWNhdGlvbihvd25lcjogQWRkcmVzcywgY2hhaW5JZDogQnl0ZSwgbWVzc2VuZ2VyOiBBcHBsaWNhdGlvbiwgZ2FzT3JhY2xlOiBBcHBsaWNhdGlvbik6IHZvaWQgewogICAgY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvdXRpbHMuYWxnby50czo6Z2V0UHJldkFzc2V0UGF5KGFzc2V0SWQ6IHVpbnQ2NCkgLT4gdWludDY0OgpnZXRQcmV2QXNzZXRQYXk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6MzQKICAgIC8vIGV4cG9ydCBmdW5jdGlvbiBnZXRQcmV2QXNzZXRQYXkoYXNzZXRJZDogdWludDY0KTogdWludDY0IHsKICAgIHByb3RvIDEgMQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy91dGlscy5hbGdvLnRzOjM2CiAgICAvLyBhc3NlcnQoVHhuLmdyb3VwSW5kZXggPiAwLCBgQXNzZXQgdHhuIG1pc3NpbmdgKTsKICAgIHR4biBHcm91cEluZGV4CiAgICBhc3NlcnQgLy8gQXNzZXQgdHhuIG1pc3NpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvdXRpbHMuYWxnby50czozOQogICAgLy8gY29uc3QgcHJldklkeDogdWludDY0ID0gVHhuLmdyb3VwSW5kZXggLSAxOwogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6NDEKICAgIC8vIGNvbnN0IHBheSA9IGd0eG4uQXNzZXRUcmFuc2ZlclR4bihwcmV2SWR4KTsKICAgIGR1cAogICAgZ3R4bnMgVHlwZUVudW0KICAgIGludGNfMyAvLyBheGZlcgogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIGF4ZmVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6NDQKICAgIC8vIGFzc2VydChwYXkuYXNzZXRSZWNlaXZlciA9PT0gR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsIGBBc3NldCBtdXN0IGdvIHRvIGFwcGApOwogICAgZHVwCiAgICBndHhucyBBc3NldFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgPT0KICAgIGFzc2VydCAvLyBBc3NldCBtdXN0IGdvIHRvIGFwcAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy91dGlscy5hbGdvLnRzOjQ1CiAgICAvLyBhc3NlcnQocGF5LnhmZXJBc3NldC5pZCA9PT0gYXNzZXRJZCwgYFdyb25nIGFzc2V0YCk7CiAgICBkdXAKICAgIGd0eG5zIFhmZXJBc3NldAogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0IC8vIFdyb25nIGFzc2V0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6NDgKICAgIC8vIGFzc2VydChwYXkucmVrZXlUbyA9PT0gR2xvYmFsLnplcm9BZGRyZXNzLCBgUmVrZXkgbm90IGFsbG93ZWRgKTsKICAgIGR1cAogICAgZ3R4bnMgUmVrZXlUbwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIFJla2V5IG5vdCBhbGxvd2VkCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6NDkKICAgIC8vIGFzc2VydChwYXkuYXNzZXRDbG9zZVRvID09PSBHbG9iYWwuemVyb0FkZHJlc3MsIGBDbG9zZVRvIG5vdCBhbGxvd2VkYCk7CiAgICBkdXAKICAgIGd0eG5zIEFzc2V0Q2xvc2VUbwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIENsb3NlVG8gbm90IGFsbG93ZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvdXRpbHMuYWxnby50czo1MAogICAgLy8gcmV0dXJuIHBheS5hc3NldEFtb3VudDsKICAgIGd0eG5zIEFzc2V0QW1vdW50CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6OmdldFByZXZQYXkocmVsVHhJbmRleDogdWludDY0KSAtPiB1aW50NjQ6CmdldFByZXZQYXk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6NTMKICAgIC8vIGV4cG9ydCBmdW5jdGlvbiBnZXRQcmV2UGF5KHJlbFR4SW5kZXg6IHVpbnQ2NCk6IHVpbnQ2NCB7CiAgICBwcm90byAxIDEKICAgIHB1c2hieXRlcyAiIgogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6NTQKICAgIC8vIGlmIChUeG4uZ3JvdXBJbmRleCA8IHJlbFR4SW5kZXgpIHJldHVybiAwOwogICAgdHhuIEdyb3VwSW5kZXgKICAgIGZyYW1lX2RpZyAtMQogICAgPAogICAgYnogZ2V0UHJldlBheV9hZnRlcl9pZl9lbHNlQDIKICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKZ2V0UHJldlBheV9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6NTYKICAgIC8vIGNvbnN0IHR4SWR4OiB1aW50NjQgPSBUeG4uZ3JvdXBJbmRleCAtIHJlbFR4SW5kZXg7CiAgICB0eG4gR3JvdXBJbmRleAogICAgZnJhbWVfZGlnIC0xCiAgICAtCiAgICBkdXAKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy91dGlscy5hbGdvLnRzOjU4CiAgICAvLyBpZiAoZ3R4bi5UcmFuc2FjdGlvbih0eElkeCkudHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlBheW1lbnQpIHJldHVybiAwOwogICAgZ3R4bnMgVHlwZUVudW0KICAgIGR1cAogICAgZnJhbWVfYnVyeSAwCiAgICBpbnRjXzEgLy8gMQogICAgIT0KICAgIGJ6IGdldFByZXZQYXlfYWZ0ZXJfaWZfZWxzZUA0CiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCmdldFByZXZQYXlfYWZ0ZXJfaWZfZWxzZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy91dGlscy5hbGdvLnRzOjU5CiAgICAvLyBjb25zdCBwYXkgPSBndHhuLlBheW1lbnRUeG4odHhJZHgpOwogICAgZnJhbWVfZGlnIDAKICAgIGludGNfMSAvLyBwYXkKICAgID09CiAgICBhc3NlcnQgLy8gdHJhbnNhY3Rpb24gdHlwZSBpcyBwYXkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvdXRpbHMuYWxnby50czo2MQogICAgLy8gaWYgKHBheS5yZWNlaXZlciAhPT0gR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MpIHJldHVybiAwOwogICAgZnJhbWVfZGlnIDEKICAgIGd0eG5zIFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgIT0KICAgIGJ6IGdldFByZXZQYXlfYWZ0ZXJfaWZfZWxzZUA2CiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCmdldFByZXZQYXlfYWZ0ZXJfaWZfZWxzZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy91dGlscy5hbGdvLnRzOjYzCiAgICAvLyBpZiAocGF5LnJla2V5VG8gIT09IEdsb2JhbC56ZXJvQWRkcmVzcykgcmV0dXJuIDA7CiAgICBmcmFtZV9kaWcgMQogICAgZ3R4bnMgUmVrZXlUbwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAhPQogICAgYnogZ2V0UHJldlBheV9hZnRlcl9pZl9lbHNlQDgKICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKZ2V0UHJldlBheV9hZnRlcl9pZl9lbHNlQDg6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3V0aWxzLmFsZ28udHM6NjQKICAgIC8vIGlmIChwYXkuY2xvc2VSZW1haW5kZXJUbyAhPT0gR2xvYmFsLnplcm9BZGRyZXNzKSByZXR1cm4gMDsKICAgIGZyYW1lX2RpZyAxCiAgICBndHhucyBDbG9zZVJlbWFpbmRlclRvCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgICE9CiAgICBieiBnZXRQcmV2UGF5X2FmdGVyX2lmX2Vsc2VAMTAKICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKZ2V0UHJldlBheV9hZnRlcl9pZl9lbHNlQDEwOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy91dGlscy5hbGdvLnRzOjY2CiAgICAvLyByZXR1cm4gcGF5LmFtb3VudDsKICAgIGZyYW1lX2RpZyAxCiAgICBndHhucyBBbW91bnQKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo6QnJpZGdlLmNyZWF0ZUFwcGxpY2F0aW9uKG93bmVyOiBieXRlcywgY2hhaW5JZDogYnl0ZXMsIG1lc3NlbmdlcjogdWludDY0LCBnYXNPcmFjbGU6IHVpbnQ2NCkgLT4gdm9pZDoKY3JlYXRlQXBwbGljYXRpb246CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjY4CiAgICAvLyBjcmVhdGVBcHBsaWNhdGlvbihvd25lcjogQWRkcmVzcywgY2hhaW5JZDogQnl0ZSwgbWVzc2VuZ2VyOiBBcHBsaWNhdGlvbiwgZ2FzT3JhY2xlOiBBcHBsaWNhdGlvbik6IHZvaWQgewogICAgcHJvdG8gNCAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL293bmFibGUuYWxnby50czo2CiAgICAvLyBwcm90ZWN0ZWQgb3duZXIgPSBHbG9iYWxTdGF0ZTxBZGRyZXNzPigpOwogICAgYnl0ZWNfMyAvLyAib3duZXIiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL293bmFibGUuYWxnby50czo5CiAgICAvLyB0aGlzLm93bmVyLnZhbHVlID0gb3duZXI7CiAgICBmcmFtZV9kaWcgLTQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjkKICAgIC8vIGdhc09yYWNsZSA9IEdsb2JhbFN0YXRlPEFwcGxpY2F0aW9uPigpOwogICAgYnl0ZWMgNCAvLyAiZ2FzT3JhY2xlIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9nYXMtdXNhZ2UuYWxnby50czoxNAogICAgLy8gdGhpcy5nYXNPcmFjbGUudmFsdWUgPSBnYXNPcmFjbGU7CiAgICBmcmFtZV9kaWcgLTEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjM5CiAgICAvLyBwcml2YXRlIHN0b3BBdXRob3JpdHkgPSBHbG9iYWxTdGF0ZTxBZGRyZXNzPigpOy8vIGNhbiByZXN0cmljdCBkZXBvc2l0IG9yIHdpdGhkcmF3IG9wZXJhdGlvbnMKICAgIGJ5dGVjIDEwIC8vICJzdG9wQXV0aG9yaXR5IgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo1NAogICAgLy8gdGhpcy5zdG9wQXV0aG9yaXR5LnZhbHVlID0gb3duZXI7CiAgICBmcmFtZV9kaWcgLTQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU2CiAgICAvLyBjaGFpbklkID0gR2xvYmFsU3RhdGU8Qnl0ZT4oKTsKICAgIGJ5dGVjIDUgLy8gImNoYWluSWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjcwCiAgICAvLyB0aGlzLmNoYWluSWQudmFsdWUgPSBjaGFpbklkOwogICAgZnJhbWVfZGlnIC0zCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NwogICAgLy8gbWVzc2VuZ2VyID0gR2xvYmFsU3RhdGU8QXBwbGljYXRpb24+KCk7CiAgICBieXRlY18yIC8vICJtZXNzZW5nZXIiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjcxCiAgICAvLyB0aGlzLm1lc3Nlbmdlci52YWx1ZSA9IG1lc3NlbmdlcjsKICAgIGZyYW1lX2RpZyAtMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6OkJyaWRnZS5vcHRJbkFzc2V0KGFzc2V0SWQ6IHVpbnQ2NCkgLT4gdm9pZDoKb3B0SW5Bc3NldDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NzQKICAgIC8vIG9wdEluQXNzZXQoYXNzZXRJZDogdWludDY0KTogdm9pZCB7CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NzUKICAgIC8vIHRoaXMub25seU93bmVyKCk7CiAgICBjYWxsc3ViIG9ubHlPd25lcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo3OC04NAogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRUcmFuc2Zlcih7CiAgICAvLyAgICAgeGZlckFzc2V0OiBBc3NldChhc3NldElkKSwKICAgIC8vICAgICBhc3NldEFtb3VudDogMCwKICAgIC8vICAgICBhc3NldFJlY2VpdmVyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpOwogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo4MgogICAgLy8gYXNzZXRSZWNlaXZlcjogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjgxCiAgICAvLyBhc3NldEFtb3VudDogMCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CiAgICBmcmFtZV9kaWcgLTEKICAgIGl0eG5fZmllbGQgWGZlckFzc2V0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjc4LTgzCiAgICAvLyBpdHhuCiAgICAvLyAgIC5hc3NldFRyYW5zZmVyKHsKICAgIC8vICAgICB4ZmVyQXNzZXQ6IEFzc2V0KGFzc2V0SWQpLAogICAgLy8gICAgIGFzc2V0QW1vdW50OiAwLAogICAgLy8gICAgIGFzc2V0UmVjZWl2ZXI6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICB9KQogICAgaW50Y18zIC8vIDQKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo3OC04NAogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRUcmFuc2Zlcih7CiAgICAvLyAgICAgeGZlckFzc2V0OiBBc3NldChhc3NldElkKSwKICAgIC8vICAgICBhc3NldEFtb3VudDogMCwKICAgIC8vICAgICBhc3NldFJlY2VpdmVyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpOwogICAgaXR4bl9zdWJtaXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6ODYKICAgIC8vIGxvZygnQnJpZGdlOiBvcHQtaW4gY29tcGxldGVkJyk7CiAgICBwdXNoYnl0ZXMgIkJyaWRnZTogb3B0LWluIGNvbXBsZXRlZCIKICAgIGxvZwogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo6QnJpZGdlLnN3YXBBbmRCcmlkZ2UodG9rZW5JZDogdWludDY0LCByZWNpcGllbnQ6IGJ5dGVzLCBkZXN0aW5hdGlvbkNoYWluSWQ6IGJ5dGVzLCByZWNlaXZlVG9rZW46IGJ5dGVzLCBub25jZTogYnl0ZXMsIGZlZVRva2VuQW1vdW50OiB1aW50NjQpIC0+IHZvaWQ6CnN3YXBBbmRCcmlkZ2U6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjkzLTEwNQogICAgLy8gQGFiaW1ldGhvZCh7CiAgICAvLyAgIGRlZmF1bHRBcmd1bWVudHM6IHsKICAgIC8vICAgICBmZWVUb2tlbkFtb3VudDogeyBjb25zdGFudDogMCB9LAogICAgLy8gICB9LAogICAgLy8gfSkKICAgIC8vIHN3YXBBbmRCcmlkZ2UoCiAgICAvLyAgIHRva2VuSWQ6IHVpbnQ2NCwKICAgIC8vICAgcmVjaXBpZW50OiBTdGF0aWNCeXRlczwzMj4sCiAgICAvLyAgIGRlc3RpbmF0aW9uQ2hhaW5JZDogQnl0ZSwKICAgIC8vICAgcmVjZWl2ZVRva2VuOiBTdGF0aWNCeXRlczwzMj4sCiAgICAvLyAgIG5vbmNlOiBTdGF0aWNCeXRlczwzMj4sCiAgICAvLyAgIGZlZVRva2VuQW1vdW50OiB1aW50NjQsCiAgICAvLyApOiB2b2lkIHsKICAgIHByb3RvIDYgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo1MAogICAgLy8gY2FuU3dhcCA9IEdsb2JhbFN0YXRlPGJvb2xlYW4+KHsgaW5pdGlhbFZhbHVlOiB0cnVlIH0pOwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gImNhblN3YXAiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo2MQogICAgLy8gYXNzZXJ0KHRoaXMuY2FuU3dhcC52YWx1ZSwgJ1JvdXRlcjogc3dhcCBwcm9oaWJpdGVkJyk7CiAgICBhc3NlcnQgLy8gUm91dGVyOiBzd2FwIHByb2hpYml0ZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTA3CiAgICAvLyBjb25zdCBhbW91bnQgPSBnZXRQcmV2QXNzZXRQYXkodG9rZW5JZCk7CiAgICBmcmFtZV9kaWcgLTYKICAgIGNhbGxzdWIgZ2V0UHJldkFzc2V0UGF5CiAgICBkdXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTA4CiAgICAvLyBhc3NlcnQoYW1vdW50ID4gZmVlVG9rZW5BbW91bnQsICdCcmlkZ2U6IGFtb3VudCB0b28gbG93IGZvciBmZWUnKTsKICAgIGZyYW1lX2RpZyAtMQogICAgPgogICAgYXNzZXJ0IC8vIEJyaWRnZTogYW1vdW50IHRvbyBsb3cgZm9yIGZlZQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxMDkKICAgIC8vIGFzc2VydCghcmVjaXBpZW50LmJ5dGVzLmVxdWFscyhiemVybygzMikpLCAnQnJpZGdlOiBicmlkZ2UgdG8gdGhlIHplcm8gYWRkcmVzcycpOwogICAgcHVzaGludCAzMiAvLyAzMgogICAgYnplcm8KICAgIGZyYW1lX2RpZyAtNQogICAgPT0KICAgICEKICAgIGFzc2VydCAvLyBCcmlkZ2U6IGJyaWRnZSB0byB0aGUgemVybyBhZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjExMQogICAgLy8gY29uc3QgZmVlRnJvbU5hdGl2ZTogdWludDY0ID0gZ2V0UHJldlBheSgyKTsKICAgIHB1c2hpbnQgMiAvLyAyCiAgICBjYWxsc3ViIGdldFByZXZQYXkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzQxCiAgICAvLyBpZiAoZmVlVG9rZW5BbW91bnQgPT09IDApIHJldHVybiAwOwogICAgZnJhbWVfZGlnIC0xCiAgICBibnogc3dhcEFuZEJyaWRnZV9hZnRlcl9pZl9lbHNlQDMKICAgIGludGNfMCAvLyAwCgpzd2FwQW5kQnJpZGdlX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo6QnJpZGdlLl9jb252ZXJ0QnJpZGdpbmdGZWVJblRva2Vuc1RvTmF0aXZlVG9rZW5ANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTEzCiAgICAvLyBjb25zdCBicmlkZ2luZ0ZlZTogdWludDY0ID0gZmVlRnJvbU5hdGl2ZSArIGZlZUZyb21TdGFibGU7CiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBkaWcgMgogICAgKwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxMTQKICAgIC8vIGVtaXQ8QnJpZGdpbmdGZWVGcm9tVG9rZW5zPih7IGZlZUZyb21OYXRpdmUsIGZlZUZyb21TdGFibGUsIGZlZVN0YWJsZVRva2VuQW1vdW50OiBmZWVUb2tlbkFtb3VudCB9KTsKICAgIHN3YXAKICAgIGl0b2IKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgZnJhbWVfZGlnIC0xCiAgICBpdG9iCiAgICBjb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4MzZiYWZhZGQgLy8gbWV0aG9kICJCcmlkZ2luZ0ZlZUZyb21Ub2tlbnModWludDY0LHVpbnQ2NCx1aW50NjQpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTE2CiAgICAvLyBjb25zdCBhbW91bnRBZnRlckZlZTogdWludDY0ID0gYW1vdW50IC0gZmVlVG9rZW5BbW91bnQ7CiAgICBmcmFtZV9kaWcgMAogICAgZnJhbWVfZGlnIC0xCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjExOAogICAgLy8gY29uc3QgdlVzZEFtb3VudCA9IHRoaXMuc2VuZEFuZFN3YXBUb1ZVc2QodG9rZW5JZCwgc2VuZGVyLCBhbW91bnRBZnRlckZlZSk7CiAgICBmcmFtZV9kaWcgLTYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTE3CiAgICAvLyBjb25zdCBzZW5kZXIgPSBuZXcgQWRkcmVzcyhUeG4uc2VuZGVyKTsKICAgIHR4biBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTE4CiAgICAvLyBjb25zdCB2VXNkQW1vdW50ID0gdGhpcy5zZW5kQW5kU3dhcFRvVlVzZCh0b2tlbklkLCBzZW5kZXIsIGFtb3VudEFmdGVyRmVlKTsKICAgIHVuY292ZXIgMgogICAgY2FsbHN1YiBzZW5kQW5kU3dhcFRvVlVzZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NgogICAgLy8gY2hhaW5JZCA9IEdsb2JhbFN0YXRlPEJ5dGU+KCk7CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNSAvLyAiY2hhaW5JZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjEzMAogICAgLy8gYXNzZXJ0KGRlc3RpbmF0aW9uQ2hhaW5JZCAhPT0gdGhpcy5jaGFpbklkLnZhbHVlLCAnQnJpZGdlOiB3cm9uZyBkZXN0aW5hdGlvbiBjaGFpbicpOwogICAgZnJhbWVfZGlnIC00CiAgICAhPQogICAgYXNzZXJ0IC8vIEJyaWRnZTogd3JvbmcgZGVzdGluYXRpb24gY2hhaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzM3CiAgICAvLyByZXR1cm4gY2hhaW5JZC5ieXRlcy5jb25jYXQodG9rZW4uYnl0ZXMpOwogICAgZnJhbWVfZGlnIC00CiAgICBmcmFtZV9kaWcgLTMKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo2NgogICAgLy8gb3RoZXJCcmlkZ2VUb2tlbnMgPSBCb3hNYXA8Ynl0ZXMsIFN0YXRpY0J5dGVzPih7IGtleVByZWZpeDogJ3QnIH0pOwogICAgYnl0ZWMgNyAvLyAidCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxMzEKICAgIC8vIGFzc2VydCh0aGlzLm90aGVyQnJpZGdlVG9rZW5zKHRoaXMuX2dldE90aGVyQnJpZGdlVG9rZW5zS2V5KGRlc3RpbmF0aW9uQ2hhaW5JZCwgcmVjZWl2ZVRva2VuKSkuZXhpc3RzLCAnQnJpZGdlOiB1bmtub3duIGNoYWluIG9yIHRva2VuJyk7CiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIGFzc2VydCAvLyBCcmlkZ2U6IHVua25vd24gY2hhaW4gb3IgdG9rZW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NTYKICAgIC8vIGNoYWluSWQgPSBHbG9iYWxTdGF0ZTxCeXRlPigpOwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDUgLy8gImNoYWluSWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxMzMKICAgIC8vIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmhhc2hNZXNzYWdlKGFtb3VudCwgcmVjaXBpZW50LCB0aGlzLmNoYWluSWQudmFsdWUsIGRlc3RpbmF0aW9uQ2hhaW5JZCwgcmVjZWl2ZVRva2VuLCBub25jZSk7CiAgICBkaWcgMQogICAgZnJhbWVfZGlnIC01CiAgICB1bmNvdmVyIDIKICAgIGZyYW1lX2RpZyAtNAogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgIGNhbGxzdWIgaGFzaE1lc3NhZ2UKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTM0CiAgICAvLyBjb25zdCBicmlkZ2VUcmFuc2FjdGlvbkNvc3QgPSB0aGlzLmdldFRyYW5zYWN0aW9uQ29zdChkZXN0aW5hdGlvbkNoYWluSWQpOwogICAgZnJhbWVfZGlnIC00CiAgICBjYWxsc3ViIGdldFRyYW5zYWN0aW9uQ29zdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo2MQogICAgLy8gc2VudE1lc3NhZ2VzID0gQm94TWFwPFN0YXRpY0J5dGVzPDMyPiwgU3RhdGljQnl0ZXM+KHsga2V5UHJlZml4OiAncycgfSk7CiAgICBwdXNoYnl0ZXMgInMiCiAgICBkaWcgMgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjE1MgogICAgLy8gYXNzZXJ0KCF0aGlzLnNlbnRNZXNzYWdlcyhtZXNzYWdlKS5leGlzdHMsICdCcmlkZ2U6IHRva2VucyBhbHJlYWR5IHNlbnQnKTsKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICAhCiAgICBhc3NlcnQgLy8gQnJpZGdlOiB0b2tlbnMgYWxyZWFkeSBzZW50CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjE1NAogICAgLy8gdGhpcy5zZW50TWVzc2FnZXMobWVzc2FnZSkudmFsdWUgPSBuZXcgU3RhdGljQnl0ZXMoKTsKICAgIHB1c2hieXRlcyAweAogICAgYm94X3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxNTYKICAgIC8vIGNvbnN0IGRlc3RpbmF0aW9uQ2hhaW5JZCA9IG1lc3NhZ2UuYXQoMSk7CiAgICBkaWcgMQogICAgZXh0cmFjdCAxIDEgLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjE1Ny0xNjAKICAgIC8vIGNvbnN0IG1lc3NhZ2VDb3N0ID0gYWJpQ2FsbChNZXNzZW5nZXIucHJvdG90eXBlLmdldFRyYW5zYWN0aW9uQ29zdCwgewogICAgLy8gICBhcHBJZDogdGhpcy5tZXNzZW5nZXIudmFsdWUuaWQsCiAgICAvLyAgIGFyZ3M6IFtkZXN0aW5hdGlvbkNoYWluSWRdLAogICAgLy8gfSkucmV0dXJuVmFsdWU7CiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU3CiAgICAvLyBtZXNzZW5nZXIgPSBHbG9iYWxTdGF0ZTxBcHBsaWNhdGlvbj4oKTsKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJtZXNzZW5nZXIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxNTctMTYwCiAgICAvLyBjb25zdCBtZXNzYWdlQ29zdCA9IGFiaUNhbGwoTWVzc2VuZ2VyLnByb3RvdHlwZS5nZXRUcmFuc2FjdGlvbkNvc3QsIHsKICAgIC8vICAgYXBwSWQ6IHRoaXMubWVzc2VuZ2VyLnZhbHVlLmlkLAogICAgLy8gICBhcmdzOiBbZGVzdGluYXRpb25DaGFpbklkXSwKICAgIC8vIH0pLnJldHVyblZhbHVlOwogICAgYnl0ZWMgMTMgLy8gbWV0aG9kICJnZXRUcmFuc2FjdGlvbkNvc3QoYnl0ZSl1aW50NjQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18yIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTGFzdExvZwogICAgZHVwCiAgICBleHRyYWN0IDQgMAogICAgc3dhcAogICAgZXh0cmFjdCAwIDQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgPT0KICAgIGFzc2VydCAvLyBCeXRlcyBoYXMgdmFsaWQgcHJlZml4CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU3CiAgICAvLyBtZXNzZW5nZXIgPSBHbG9iYWxTdGF0ZTxBcHBsaWNhdGlvbj4oKTsKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJtZXNzZW5nZXIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxNjQKICAgIC8vIHJlY2VpdmVyOiB0aGlzLm1lc3Nlbmdlci52YWx1ZS5hZGRyZXNzLAogICAgYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwogICAgYXNzZXJ0IC8vIGFwcGxpY2F0aW9uIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NwogICAgLy8gbWVzc2VuZ2VyID0gR2xvYmFsU3RhdGU8QXBwbGljYXRpb24+KCk7CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMiAvLyAibWVzc2VuZ2VyIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTc0CiAgICAvLyBpdHhuLnN1Ym1pdEdyb3VwKHBheW1lbnRQYXJhbXMsIGFwcENhbGxQYXJhbXMpOwogICAgaXR4bl9iZWdpbgogICAgc3dhcAogICAgaXR4bl9maWVsZCBSZWNlaXZlcgogICAgZGlnIDEKICAgIGl0eG5fZmllbGQgQW1vdW50CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjE2Mi0xNjUKICAgIC8vIGNvbnN0IHBheW1lbnRQYXJhbXMgPSBpdHhuLnBheW1lbnQoewogICAgLy8gICBhbW91bnQ6IG1lc3NhZ2VDb3N0LAogICAgLy8gICByZWNlaXZlcjogdGhpcy5tZXNzZW5nZXIudmFsdWUuYWRkcmVzcywKICAgIC8vIH0pOwogICAgaW50Y18xIC8vIDEKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxNzQKICAgIC8vIGl0eG4uc3VibWl0R3JvdXAocGF5bWVudFBhcmFtcywgYXBwQ2FsbFBhcmFtcyk7CiAgICBpdHhuX25leHQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTcwCiAgICAvLyBhcmM0Lm1ldGhvZFNlbGVjdG9yKCdzZW5kTWVzc2FnZShieXRlWzMyXSl2b2lkJyksCiAgICBwdXNoYnl0ZXMgMHhhMzI0OTk4OSAvLyBtZXRob2QgInNlbmRNZXNzYWdlKGJ5dGVbMzJdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgdW5jb3ZlciAzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjE2Ny0xNzMKICAgIC8vIGNvbnN0IGFwcENhbGxQYXJhbXMgPSBpdHhuLmFwcGxpY2F0aW9uQ2FsbCh7CiAgICAvLyAgIGFwcElkOiB0aGlzLm1lc3Nlbmdlci52YWx1ZS5pZCwKICAgIC8vICAgYXBwQXJnczogWwogICAgLy8gICAgIGFyYzQubWV0aG9kU2VsZWN0b3IoJ3NlbmRNZXNzYWdlKGJ5dGVbMzJdKXZvaWQnKSwKICAgIC8vICAgICBtZXNzYWdlLAogICAgLy8gICBdLAogICAgLy8gfSk7CiAgICBpbnRjXzIgLy8gNgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjE3NAogICAgLy8gaXR4bi5zdWJtaXRHcm91cChwYXltZW50UGFyYW1zLCBhcHBDYWxsUGFyYW1zKTsKICAgIGl0eG5fc3VibWl0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjEzNgogICAgLy8gZW1pdDxSZWNlaXZlRmVlPih7IGJyaWRnZVRyYW5zYWN0aW9uQ29zdCwgbWVzc2FnZVRyYW5zYWN0aW9uQ29zdCB9KTsKICAgIGRpZyAxCiAgICBpdG9iCiAgICBkaWcgMQogICAgaXRvYgogICAgY29uY2F0CiAgICBwdXNoYnl0ZXMgMHg0YjU1NDE5YiAvLyBtZXRob2QgIlJlY2VpdmVGZWUodWludDY0LHVpbnQ2NCkiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxMzcKICAgIC8vIGFzc2VydChicmlkZ2luZ0ZlZSA+PSBicmlkZ2VUcmFuc2FjdGlvbkNvc3QgKyBtZXNzYWdlVHJhbnNhY3Rpb25Db3N0LCAnQnJpZGdlOiBub3QgZW5vdWdoIGZlZScpOwogICAgKwogICAgdW5jb3ZlciAyCiAgICA8PQogICAgYXNzZXJ0IC8vIEJyaWRnZTogbm90IGVub3VnaCBmZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTM5CiAgICAvLyBhbW91bnQsCiAgICBpdG9iCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjEzOC0xNDUKICAgIC8vIGVtaXQ8VG9rZW5zU2VudD4oewogICAgLy8gICAgIGFtb3VudCwKICAgIC8vICAgICByZWNpcGllbnQsCiAgICAvLyAgICAgZGVzdGluYXRpb25DaGFpbklkLAogICAgLy8gICAgIHJlY2VpdmVUb2tlbiwKICAgIC8vICAgICBub25jZSwKICAgIC8vICAgICBtZXNzZW5nZXI6IEFMTEJSSURHRV9NRVNTRU5HRVIsCiAgICAvLyAgIH0sCiAgICBmcmFtZV9kaWcgLTUKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIC00CiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyAtMwogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1MgogICAgLy8gY29uc3QgQUxMQlJJREdFX01FU1NFTkdFUiA9IG5ldyBCeXRlKDEpOwogICAgYnl0ZWMgMTEgLy8gMHgwMQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxMzgtMTQ1CiAgICAvLyBlbWl0PFRva2Vuc1NlbnQ+KHsKICAgIC8vICAgICBhbW91bnQsCiAgICAvLyAgICAgcmVjaXBpZW50LAogICAgLy8gICAgIGRlc3RpbmF0aW9uQ2hhaW5JZCwKICAgIC8vICAgICByZWNlaXZlVG9rZW4sCiAgICAvLyAgICAgbm9uY2UsCiAgICAvLyAgICAgbWVzc2VuZ2VyOiBBTExCUklER0VfTUVTU0VOR0VSLAogICAgLy8gICB9LAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjEzOC0xNDYKICAgIC8vIGVtaXQ8VG9rZW5zU2VudD4oewogICAgLy8gICAgIGFtb3VudCwKICAgIC8vICAgICByZWNpcGllbnQsCiAgICAvLyAgICAgZGVzdGluYXRpb25DaGFpbklkLAogICAgLy8gICAgIHJlY2VpdmVUb2tlbiwKICAgIC8vICAgICBub25jZSwKICAgIC8vICAgICBtZXNzZW5nZXI6IEFMTEJSSURHRV9NRVNTRU5HRVIsCiAgICAvLyAgIH0sCiAgICAvLyApOwogICAgcHVzaGJ5dGVzIDB4MjI5ZmJhZWMgLy8gbWV0aG9kICJUb2tlbnNTZW50KHVpbnQ2NCxieXRlWzMyXSxieXRlLGJ5dGVbMzJdLGJ5dGVbMzJdLGJ5dGUpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIHJldHN1YgoKc3dhcEFuZEJyaWRnZV9hZnRlcl9pZl9lbHNlQDM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjM0MwogICAgLy8gY29uc3QgZmVlOiB1aW50NjQgPSB0aGlzLmJyaWRnaW5nRmVlQ29udmVyc2lvblNjYWxpbmdGYWN0b3IodG9rZW5JZCkudmFsdWUgKiBmZWVUb2tlbkFtb3VudCAvIGFiaUNhbGwoR2FzT3JhY2xlLnByb3RvdHlwZS5nZXRQcmljZSwgewogICAgZnJhbWVfZGlnIC02CiAgICBpdG9iCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjM2CiAgICAvLyBwcm90ZWN0ZWQgYnJpZGdpbmdGZWVDb252ZXJzaW9uU2NhbGluZ0ZhY3RvciA9IEJveE1hcDx1aW50NjQsIHVpbnQ2ND4oeyBrZXlQcmVmaXg6ICdmJyB9KTsKICAgIHB1c2hieXRlcyAiZiIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czozNDMKICAgIC8vIGNvbnN0IGZlZTogdWludDY0ID0gdGhpcy5icmlkZ2luZ0ZlZUNvbnZlcnNpb25TY2FsaW5nRmFjdG9yKHRva2VuSWQpLnZhbHVlICogZmVlVG9rZW5BbW91bnQgLyBhYmlDYWxsKEdhc09yYWNsZS5wcm90b3R5cGUuZ2V0UHJpY2UsIHsKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGJ0b2kKICAgIHN3YXAKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICBmcmFtZV9kaWcgLTEKICAgICoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzQzLTM0NgogICAgLy8gY29uc3QgZmVlOiB1aW50NjQgPSB0aGlzLmJyaWRnaW5nRmVlQ29udmVyc2lvblNjYWxpbmdGYWN0b3IodG9rZW5JZCkudmFsdWUgKiBmZWVUb2tlbkFtb3VudCAvIGFiaUNhbGwoR2FzT3JhY2xlLnByb3RvdHlwZS5nZXRQcmljZSwgewogICAgLy8gICBhcHBJZDogdGhpcy5nYXNPcmFjbGUudmFsdWUuaWQsCiAgICAvLyAgIGFyZ3M6IFt0aGlzLmNoYWluSWQudmFsdWVdLAogICAgLy8gfSkucmV0dXJuVmFsdWU7CiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjkKICAgIC8vIGdhc09yYWNsZSA9IEdsb2JhbFN0YXRlPEFwcGxpY2F0aW9uPigpOwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDQgLy8gImdhc09yYWNsZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU2CiAgICAvLyBjaGFpbklkID0gR2xvYmFsU3RhdGU8Qnl0ZT4oKTsKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA1IC8vICJjaGFpbklkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzQzLTM0NgogICAgLy8gY29uc3QgZmVlOiB1aW50NjQgPSB0aGlzLmJyaWRnaW5nRmVlQ29udmVyc2lvblNjYWxpbmdGYWN0b3IodG9rZW5JZCkudmFsdWUgKiBmZWVUb2tlbkFtb3VudCAvIGFiaUNhbGwoR2FzT3JhY2xlLnByb3RvdHlwZS5nZXRQcmljZSwgewogICAgLy8gICBhcHBJZDogdGhpcy5nYXNPcmFjbGUudmFsdWUuaWQsCiAgICAvLyAgIGFyZ3M6IFt0aGlzLmNoYWluSWQudmFsdWVdLAogICAgLy8gfSkucmV0dXJuVmFsdWU7CiAgICBwdXNoYnl0ZXMgMHgxZGI3MGNkZCAvLyBtZXRob2QgImdldFByaWNlKGJ5dGUpdWludDY0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIExhc3RMb2cKICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIHN3YXAKICAgIGV4dHJhY3QgMCA0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgYnRvaQogICAgLwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxMTIKICAgIC8vIGNvbnN0IGZlZUZyb21TdGFibGU6IHVpbnQ2NCA9IHRoaXMuX2NvbnZlcnRCcmlkZ2luZ0ZlZUluVG9rZW5zVG9OYXRpdmVUb2tlbih0b2tlbklkLCBmZWVUb2tlbkFtb3VudCk7CiAgICBiIHN3YXBBbmRCcmlkZ2VfYWZ0ZXJfaW5saW5lZF9zbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjpCcmlkZ2UuX2NvbnZlcnRCcmlkZ2luZ0ZlZUluVG9rZW5zVG9OYXRpdmVUb2tlbkA1CgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo6QnJpZGdlLnJlY2VpdmVUb2tlbnMoYW1vdW50OiB1aW50NjQsIHJlY2lwaWVudDogYnl0ZXMsIHNvdXJjZUNoYWluSWQ6IGJ5dGVzLCByZWNlaXZlVG9rZW46IGJ5dGVzLCBub25jZTogYnl0ZXMsIHJlY2VpdmVBbW91bnRNaW46IHVpbnQ2NCkgLT4gdm9pZDoKcmVjZWl2ZVRva2VuczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTc4LTE4NgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyByZWNlaXZlVG9rZW5zKAogICAgLy8gICBhbW91bnQ6IHVpbnQ2NCwKICAgIC8vICAgcmVjaXBpZW50OiBTdGF0aWNCeXRlczwzMj4sCiAgICAvLyAgIHNvdXJjZUNoYWluSWQ6IEJ5dGUsCiAgICAvLyAgIHJlY2VpdmVUb2tlbjogU3RhdGljQnl0ZXM8MzI+LAogICAgLy8gICBub25jZTogU3RhdGljQnl0ZXM8MzI+LAogICAgLy8gICByZWNlaXZlQW1vdW50TWluOiB1aW50NjQsCiAgICAvLyApOiB2b2lkIHsKICAgIHByb3RvIDYgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo1MAogICAgLy8gY2FuU3dhcCA9IEdsb2JhbFN0YXRlPGJvb2xlYW4+KHsgaW5pdGlhbFZhbHVlOiB0cnVlIH0pOwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gImNhblN3YXAiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo2MQogICAgLy8gYXNzZXJ0KHRoaXMuY2FuU3dhcC52YWx1ZSwgJ1JvdXRlcjogc3dhcCBwcm9oaWJpdGVkJyk7CiAgICBhc3NlcnQgLy8gUm91dGVyOiBzd2FwIHByb2hpYml0ZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NjMKICAgIC8vIG90aGVyQnJpZGdlcyA9IEJveE1hcDxCeXRlLCBTdGF0aWNCeXRlczwzMj4+KHsga2V5UHJlZml4OiAnYicgfSk7CiAgICBwdXNoYnl0ZXMgImIiCiAgICBmcmFtZV9kaWcgLTQKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxODgKICAgIC8vIGFzc2VydCh0aGlzLm90aGVyQnJpZGdlcyhzb3VyY2VDaGFpbklkKS5leGlzdHMsICdCcmlkZ2U6IHNvdXJjZSBub3QgcmVnaXN0ZXJlZCcpOwogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gQnJpZGdlOiBzb3VyY2Ugbm90IHJlZ2lzdGVyZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTg5CiAgICAvLyBjb25zdCB2YWx1ZTogdWludDY0ID0gZ2V0UHJldlBheSgxKTsKICAgIGludGNfMSAvLyAxCiAgICBjYWxsc3ViIGdldFByZXZQYXkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTkxCiAgICAvLyBhc3NlcnQodmFsdWUgPj0gc3RvcmFnZUZlZSwgJ0JyaWRnZTogbm90IGVub3VnaCBmZWUnKTsKICAgIGR1cAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czozMjQKICAgIC8vIHJldHVybiAxNTcwMDsKICAgIGludGMgNCAvLyAxNTcwMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxOTEKICAgIC8vIGFzc2VydCh2YWx1ZSA+PSBzdG9yYWdlRmVlLCAnQnJpZGdlOiBub3QgZW5vdWdoIGZlZScpOwogICAgPj0KICAgIGFzc2VydCAvLyBCcmlkZ2U6IG5vdCBlbm91Z2ggZmVlCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU2CiAgICAvLyBjaGFpbklkID0gR2xvYmFsU3RhdGU8Qnl0ZT4oKTsKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA1IC8vICJjaGFpbklkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTkzCiAgICAvLyBjb25zdCBtZXNzYWdlID0gdGhpcy5oYXNoTWVzc2FnZShhbW91bnQsIHJlY2lwaWVudCwgc291cmNlQ2hhaW5JZCwgdGhpcy5jaGFpbklkLnZhbHVlLCByZWNlaXZlVG9rZW4sIG5vbmNlKTsKICAgIGZyYW1lX2RpZyAtNgogICAgZnJhbWVfZGlnIC01CiAgICBmcmFtZV9kaWcgLTQKICAgIHVuY292ZXIgMwogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgIGNhbGxzdWIgaGFzaE1lc3NhZ2UKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvdXRpbHMuYWxnby50czo4MAogICAgLy8gY29uc3QgaDogYnl0ZXMgPSBvcC5rZWNjYWsyNTYob3AuY29uY2F0KG1lc3NhZ2UuYnl0ZXMsIHNlbmRlckFkZHJlc3MpKTsKICAgIGR1cAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxOTQKICAgIC8vIGNvbnN0IG1lc3NhZ2VXaXRoU2VuZGVyID0gaGFzaFdpdGhTZW5kZXJBZGRyZXNzKG1lc3NhZ2UsIFR4bi5zZW5kZXIuYnl0ZXMpOwogICAgdHhuIFNlbmRlcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy91dGlscy5hbGdvLnRzOjgwCiAgICAvLyBjb25zdCBoOiBieXRlcyA9IG9wLmtlY2NhazI1NihvcC5jb25jYXQobWVzc2FnZS5ieXRlcywgc2VuZGVyQWRkcmVzcykpOwogICAgY29uY2F0CiAgICBrZWNjYWsyNTYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvdXRpbHMuYWxnby50czo4MwogICAgLy8gY29uc3QgZmlyc3QyID0gb3Auc3Vic3RyaW5nKG1lc3NhZ2UuYnl0ZXMsIDAsIDIpOwogICAgc3dhcAogICAgc3Vic3RyaW5nIDAgMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy91dGlscy5hbGdvLnRzOjg1CiAgICAvLyBjb25zdCBsYXN0MzAgPSBvcC5zdWJzdHJpbmcoaCwgMiwgMzIpOwogICAgc3dhcAogICAgc3Vic3RyaW5nIDIgMzIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvdXRpbHMuYWxnby50czo4OAogICAgLy8gcmV0dXJuIG5ldyBTdGF0aWNCeXRlczwzMj4ob3AuY29uY2F0KGZpcnN0MiwgbGFzdDMwKSk7CiAgICBjb25jYXQKICAgIGR1cAogICAgY292ZXIgMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1OQogICAgLy8gcHJvY2Vzc2VkTWVzc2FnZXMgPSBCb3hNYXA8U3RhdGljQnl0ZXM8MzI+LCBTdGF0aWNCeXRlcz4oeyBrZXlQcmVmaXg6ICdtJyB9KTsKICAgIHB1c2hieXRlcyAibSIKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MTk2CiAgICAvLyBhc3NlcnQoIXRoaXMucHJvY2Vzc2VkTWVzc2FnZXMobWVzc2FnZVdpdGhTZW5kZXIpLmV4aXN0cywgJ0JyaWRnZTogbWVzc2FnZSBwcm9jZXNzZWQnKTsKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICAhCiAgICBhc3NlcnQgLy8gQnJpZGdlOiBtZXNzYWdlIHByb2Nlc3NlZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoxOTgKICAgIC8vIHRoaXMucHJvY2Vzc2VkTWVzc2FnZXMobWVzc2FnZVdpdGhTZW5kZXIpLnZhbHVlID0gbmV3IFN0YXRpY0J5dGVzKCk7CiAgICBwdXNoYnl0ZXMgMHgKICAgIGJveF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjAxLTIwNAogICAgLy8gYXNzZXJ0KGFiaUNhbGwoTWVzc2VuZ2VyLnByb3RvdHlwZS5yZWNlaXZlZE1lc3NhZ2VzLCB7CiAgICAvLyAgIGFwcElkOiB0aGlzLm1lc3Nlbmdlci52YWx1ZS5pZCwKICAgIC8vICAgYXJnczogW21lc3NhZ2VXaXRoU2VuZGVyXSwKICAgIC8vIH0pLnJldHVyblZhbHVlLCAnQnJpZGdlOiBubyBtZXNzYWdlJyk7CiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjU3CiAgICAvLyBtZXNzZW5nZXIgPSBHbG9iYWxTdGF0ZTxBcHBsaWNhdGlvbj4oKTsKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJtZXNzZW5nZXIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyMDEtMjA0CiAgICAvLyBhc3NlcnQoYWJpQ2FsbChNZXNzZW5nZXIucHJvdG90eXBlLnJlY2VpdmVkTWVzc2FnZXMsIHsKICAgIC8vICAgYXBwSWQ6IHRoaXMubWVzc2VuZ2VyLnZhbHVlLmlkLAogICAgLy8gICBhcmdzOiBbbWVzc2FnZVdpdGhTZW5kZXJdLAogICAgLy8gfSkucmV0dXJuVmFsdWUsICdCcmlkZ2U6IG5vIG1lc3NhZ2UnKTsKICAgIHB1c2hieXRlcyAweDMzZTE0N2FhIC8vIG1ldGhvZCAicmVjZWl2ZWRNZXNzYWdlcyhieXRlWzMyXSlib29sIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGludGNfMiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIExhc3RMb2cKICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIHN3YXAKICAgIGV4dHJhY3QgMCA0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgaW50Y18wIC8vIDAKICAgIGdldGJpdAogICAgYXNzZXJ0IC8vIEJyaWRnZTogbm8gbWVzc2FnZQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyMDYKICAgIC8vIGNvbnN0IHRva2VuSWQ6IHVpbnQ2NCA9IG9wLmV4dHJhY3RVaW50NjQocmVjZWl2ZVRva2VuLmJ5dGVzLCAyNCk7CiAgICBmcmFtZV9kaWcgLTMKICAgIHB1c2hpbnQgMjQgLy8gMjQKICAgIGV4dHJhY3RfdWludDY0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjIwOC0yMTMKICAgIC8vIGNvbnN0IHJlY2VpdmVBbW91bnQgPSB0aGlzLnJlY2VpdmVBbmRTd2FwRnJvbVZVc2QoCiAgICAvLyAgIHRva2VuSWQsCiAgICAvLyAgIHJlY2lwaWVudEFkZHJlc3MsCiAgICAvLyAgIGFtb3VudCwKICAgIC8vICAgcmVjZWl2ZUFtb3VudE1pbiwKICAgIC8vICk7CiAgICBmcmFtZV9kaWcgLTUKICAgIGZyYW1lX2RpZyAtNgogICAgZnJhbWVfZGlnIC0xCiAgICBjYWxsc3ViIHJlY2VpdmVBbmRTd2FwRnJvbVZVc2QKICAgIHN3YXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjE2CiAgICAvLyBjb25zdCBleHRyYUdhczogdWludDY0ID0gdmFsdWUgLSBzdG9yYWdlRmVlOwogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjMyNAogICAgLy8gcmV0dXJuIDE1NzAwOwogICAgaW50YyA0IC8vIDE1NzAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjIxNgogICAgLy8gY29uc3QgZXh0cmFHYXM6IHVpbnQ2NCA9IHZhbHVlIC0gc3RvcmFnZUZlZTsKICAgIC0KICAgIHN3YXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzI0CiAgICAvLyByZXR1cm4gMTU3MDA7CiAgICBpbnRjIDQgLy8gMTU3MDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjE3CiAgICAvLyBpZiAodmFsdWUgPiBzdG9yYWdlRmVlKSB7CiAgICA+CiAgICBieiByZWNlaXZlVG9rZW5zX2FmdGVyX2lmX2Vsc2VANAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyMTgtMjIxCiAgICAvLyBwYXltZW50KHsKICAgIC8vICAgYW1vdW50OiBleHRyYUdhcywKICAgIC8vICAgcmVjZWl2ZXI6IHJlY2lwaWVudEFkZHJlc3MuYnl0ZXMsCiAgICAvLyB9KS5zdWJtaXQoKTsKICAgIGl0eG5fYmVnaW4KICAgIGZyYW1lX2RpZyAtNQogICAgaXR4bl9maWVsZCBSZWNlaXZlcgogICAgZnJhbWVfZGlnIDIKICAgIGl0eG5fZmllbGQgQW1vdW50CiAgICBpbnRjXzEgLy8gMQogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAoKcmVjZWl2ZVRva2Vuc19hZnRlcl9pZl9lbHNlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjIyMwogICAgLy8gZW1pdDxUb2tlbnNSZWNlaXZlZD4oeyByZWNlaXZlQW1vdW50LCByZWNpcGllbnQ6IHJlY2lwaWVudEFkZHJlc3MsIG5vbmNlLCBtZXNzZW5nZXI6IEFMTEJSSURHRV9NRVNTRU5HRVIsIG1lc3NhZ2U6IG1lc3NhZ2VXaXRoU2VuZGVyIH0pOwogICAgZnJhbWVfZGlnIDEKICAgIGl0b2IKICAgIGZyYW1lX2RpZyAtNQogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1MgogICAgLy8gY29uc3QgQUxMQlJJREdFX01FU1NFTkdFUiA9IG5ldyBCeXRlKDEpOwogICAgYnl0ZWMgMTEgLy8gMHgwMQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyMjMKICAgIC8vIGVtaXQ8VG9rZW5zUmVjZWl2ZWQ+KHsgcmVjZWl2ZUFtb3VudCwgcmVjaXBpZW50OiByZWNpcGllbnRBZGRyZXNzLCBub25jZSwgbWVzc2VuZ2VyOiBBTExCUklER0VfTUVTU0VOR0VSLCBtZXNzYWdlOiBtZXNzYWdlV2l0aFNlbmRlciB9KTsKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIDAKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4NDU4MzZhZDYgLy8gbWV0aG9kICJUb2tlbnNSZWNlaXZlZCh1aW50NjQsYWRkcmVzcyxieXRlWzMyXSxieXRlLGJ5dGVbMzJdKSIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjpCcmlkZ2UucmVnaXN0ZXJCcmlkZ2UoY2hhaW5JZDogYnl0ZXMsIGJyaWRnZUFkZHJlc3M6IGJ5dGVzKSAtPiB2b2lkOgpyZWdpc3RlckJyaWRnZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjI2LTIyNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyByZWdpc3RlckJyaWRnZShjaGFpbklkOiBCeXRlLCBicmlkZ2VBZGRyZXNzOiBTdGF0aWNCeXRlczwzMj4pOiB2b2lkIHsKICAgIHByb3RvIDIgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyMjgKICAgIC8vIHRoaXMub25seU93bmVyKCk7CiAgICBjYWxsc3ViIG9ubHlPd25lcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo2MwogICAgLy8gb3RoZXJCcmlkZ2VzID0gQm94TWFwPEJ5dGUsIFN0YXRpY0J5dGVzPDMyPj4oeyBrZXlQcmVmaXg6ICdiJyB9KTsKICAgIHB1c2hieXRlcyAiYiIKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjIyOQogICAgLy8gdGhpcy5vdGhlckJyaWRnZXMoY2hhaW5JZCkudmFsdWUgPSBicmlkZ2VBZGRyZXNzOwogICAgZnJhbWVfZGlnIC0xCiAgICBib3hfcHV0CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjpCcmlkZ2UuYWRkQnJpZGdlVG9rZW4oY2hhaW5JZDogYnl0ZXMsIHRva2VuQWRkcmVzczogYnl0ZXMpIC0+IHZvaWQ6CmFkZEJyaWRnZVRva2VuOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyMzItMjMzCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIC8vIGFkZEJyaWRnZVRva2VuKGNoYWluSWQ6IEJ5dGUsIHRva2VuQWRkcmVzczogU3RhdGljQnl0ZXM8MzI+KTogdm9pZCB7CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjM0CiAgICAvLyB0aGlzLm9ubHlPd25lcigpOwogICAgY2FsbHN1YiBvbmx5T3duZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzM3CiAgICAvLyByZXR1cm4gY2hhaW5JZC5ieXRlcy5jb25jYXQodG9rZW4uYnl0ZXMpOwogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo2NgogICAgLy8gb3RoZXJCcmlkZ2VUb2tlbnMgPSBCb3hNYXA8Ynl0ZXMsIFN0YXRpY0J5dGVzPih7IGtleVByZWZpeDogJ3QnIH0pOwogICAgYnl0ZWMgNyAvLyAidCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyMzUKICAgIC8vIHRoaXMub3RoZXJCcmlkZ2VUb2tlbnModGhpcy5fZ2V0T3RoZXJCcmlkZ2VUb2tlbnNLZXkoY2hhaW5JZCwgdG9rZW5BZGRyZXNzKSkudmFsdWUgPSBuZXcgU3RhdGljQnl0ZXMoKTsKICAgIHB1c2hieXRlcyAweAogICAgYm94X3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo6QnJpZGdlLnJlbW92ZUJyaWRnZVRva2VuKGNoYWluSWQ6IGJ5dGVzLCB0b2tlbkFkZHJlc3M6IGJ5dGVzKSAtPiB2b2lkOgpyZW1vdmVCcmlkZ2VUb2tlbjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjM4LTIzOQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyByZW1vdmVCcmlkZ2VUb2tlbihjaGFpbklkOiBCeXRlLCB0b2tlbkFkZHJlc3M6IFN0YXRpY0J5dGVzPDMyPik6IHZvaWQgewogICAgcHJvdG8gMiAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI0MAogICAgLy8gdGhpcy5vbmx5T3duZXIoKTsKICAgIGNhbGxzdWIgb25seU93bmVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjMzNwogICAgLy8gcmV0dXJuIGNoYWluSWQuYnl0ZXMuY29uY2F0KHRva2VuLmJ5dGVzKTsKICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIC0xCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6NjYKICAgIC8vIG90aGVyQnJpZGdlVG9rZW5zID0gQm94TWFwPGJ5dGVzLCBTdGF0aWNCeXRlcz4oeyBrZXlQcmVmaXg6ICd0JyB9KTsKICAgIGJ5dGVjIDcgLy8gInQiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjQxCiAgICAvLyB0aGlzLm90aGVyQnJpZGdlVG9rZW5zKHRoaXMuX2dldE90aGVyQnJpZGdlVG9rZW5zS2V5KGNoYWluSWQsIHRva2VuQWRkcmVzcykpLmRlbGV0ZSgpOwogICAgYm94X2RlbAogICAgcG9wCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjpCcmlkZ2Uud2l0aGRyYXdHYXNUb2tlbnMoYW1vdW50OiB1aW50NjQpIC0+IHZvaWQ6CndpdGhkcmF3R2FzVG9rZW5zOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyNDQtMjQ1CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIC8vIHdpdGhkcmF3R2FzVG9rZW5zKGFtb3VudDogdWludDY0KTogdm9pZCB7CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjQ2CiAgICAvLyB0aGlzLm9ubHlPd25lcigpOwogICAgY2FsbHN1YiBvbmx5T3duZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjQ3CiAgICAvLyBwYXltZW50KHsgYW1vdW50OiBhbW91bnQsIHJlY2VpdmVyOiB0aGlzLm93bmVyLnZhbHVlLmJ5dGVzIH0pLnN1Ym1pdCgpOwogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9vd25hYmxlLmFsZ28udHM6NgogICAgLy8gcHJvdGVjdGVkIG93bmVyID0gR2xvYmFsU3RhdGU8QWRkcmVzcz4oKTsKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18zIC8vICJvd25lciIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICBpdHhuX2ZpZWxkIFJlY2VpdmVyCiAgICBmcmFtZV9kaWcgLTEKICAgIGl0eG5fZmllbGQgQW1vdW50CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI0NwogICAgLy8gcGF5bWVudCh7IGFtb3VudDogYW1vdW50LCByZWNlaXZlcjogdGhpcy5vd25lci52YWx1ZS5ieXRlcyB9KS5zdWJtaXQoKTsKICAgIGludGNfMSAvLyAxCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjpCcmlkZ2Uud2l0aGRyYXdCcmlkZ2luZ0ZlZUluVG9rZW5zKGFzc2V0SWQ6IHVpbnQ2NCkgLT4gdm9pZDoKd2l0aGRyYXdCcmlkZ2luZ0ZlZUluVG9rZW5zOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyNTAtMjUxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIC8vIHdpdGhkcmF3QnJpZGdpbmdGZWVJblRva2Vucyhhc3NldElkOiB1aW50NjQpOiB2b2lkIHsKICAgIHByb3RvIDEgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyNTIKICAgIC8vIHRoaXMub25seU93bmVyKCk7CiAgICBjYWxsc3ViIG9ubHlPd25lcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyNTQKICAgIC8vIGNvbnN0IGFwcEFjY3Q6IEFjY291bnQgPSBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzczsKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICBkdXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjU1CiAgICAvLyBjb25zdCBiYWxhbmNlID0gYXNzZXQuYmFsYW5jZShhcHBBY2N0KTsKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGFjY291bnQgb3B0ZWQgaW50byBhc3NldAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyNTYKICAgIC8vIGlmIChiYWxhbmNlID4gVWludDY0KDApKSB7CiAgICBieiB3aXRoZHJhd0JyaWRnaW5nRmVlSW5Ub2tlbnNfYWZ0ZXJfaWZfZWxzZUAzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI1Ny0yNjIKICAgIC8vIGFzc2V0VHJhbnNmZXIoewogICAgLy8gICBzZW5kZXI6IGFwcEFjY3QsCiAgICAvLyAgIHhmZXJBc3NldDogYXNzZXQsCiAgICAvLyAgIGFzc2V0QW1vdW50OiBiYWxhbmNlLAogICAgLy8gICBhc3NldFJlY2VpdmVyOiB0aGlzLm93bmVyLnZhbHVlLmJ5dGVzCiAgICAvLyB9KS5zdWJtaXQoKTsKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvb3duYWJsZS5hbGdvLnRzOjYKICAgIC8vIHByb3RlY3RlZCBvd25lciA9IEdsb2JhbFN0YXRlPEFkZHJlc3M+KCk7CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMyAvLyAib3duZXIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCiAgICBmcmFtZV9kaWcgMQogICAgaXR4bl9maWVsZCBBc3NldEFtb3VudAogICAgZnJhbWVfZGlnIC0xCiAgICBpdHhuX2ZpZWxkIFhmZXJBc3NldAogICAgZnJhbWVfZGlnIDAKICAgIGl0eG5fZmllbGQgU2VuZGVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI1Ny0yNjIKICAgIC8vIGFzc2V0VHJhbnNmZXIoewogICAgLy8gICBzZW5kZXI6IGFwcEFjY3QsCiAgICAvLyAgIHhmZXJBc3NldDogYXNzZXQsCiAgICAvLyAgIGFzc2V0QW1vdW50OiBiYWxhbmNlLAogICAgLy8gICBhc3NldFJlY2VpdmVyOiB0aGlzLm93bmVyLnZhbHVlLmJ5dGVzCiAgICAvLyB9KS5zdWJtaXQoKTsKICAgIGludGNfMyAvLyA0CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0Cgp3aXRoZHJhd0JyaWRnaW5nRmVlSW5Ub2tlbnNfYWZ0ZXJfaWZfZWxzZUAzOgogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo6QnJpZGdlLmdldEJyaWRnaW5nQ29zdEluVG9rZW5zKGRlc3RpbmF0aW9uQ2hhaW5JZDogYnl0ZXMsIHRva2VuSWQ6IHVpbnQ2NCkgLT4gdWludDY0OgpnZXRCcmlkZ2luZ0Nvc3RJblRva2VuczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjY2LTI3MAogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICAvLyBnZXRCcmlkZ2luZ0Nvc3RJblRva2VucygKICAgIC8vICAgZGVzdGluYXRpb25DaGFpbklkOiBCeXRlLAogICAgLy8gICB0b2tlbklkOiB1aW50NjQsCiAgICAvLyApOiB1aW50NjQgewogICAgcHJvdG8gMiAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI3MQogICAgLy8gY29uc3QgYnJpZGdlR2FzQW1vdW50OiB1aW50NjQgPSB0aGlzLmdldEdhc1VzYWdlKGRlc3RpbmF0aW9uQ2hhaW5JZCk7CiAgICBmcmFtZV9kaWcgLTIKICAgIGNhbGxzdWIgZ2V0R2FzVXNhZ2UKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjcyLTI3NQogICAgLy8gY29uc3QgbWVzc2VuZ2VyR2FzQW1vdW50OiB1aW50NjQgPSBhYmlDYWxsKE1lc3Nlbmdlci5wcm90b3R5cGUuZ2V0R2FzVXNhZ2UsIHsKICAgIC8vICAgYXBwSWQ6IHRoaXMubWVzc2VuZ2VyLnZhbHVlLmlkLAogICAgLy8gICBhcmdzOiBbZGVzdGluYXRpb25DaGFpbklkXSwKICAgIC8vIH0pLnJldHVyblZhbHVlOwogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo1NwogICAgLy8gbWVzc2VuZ2VyID0gR2xvYmFsU3RhdGU8QXBwbGljYXRpb24+KCk7CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMiAvLyAibWVzc2VuZ2VyIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjcyLTI3NQogICAgLy8gY29uc3QgbWVzc2VuZ2VyR2FzQW1vdW50OiB1aW50NjQgPSBhYmlDYWxsKE1lc3Nlbmdlci5wcm90b3R5cGUuZ2V0R2FzVXNhZ2UsIHsKICAgIC8vICAgYXBwSWQ6IHRoaXMubWVzc2VuZ2VyLnZhbHVlLmlkLAogICAgLy8gICBhcmdzOiBbZGVzdGluYXRpb25DaGFpbklkXSwKICAgIC8vIH0pLnJldHVyblZhbHVlOwogICAgYnl0ZWMgMTQgLy8gbWV0aG9kICJnZXRHYXNVc2FnZShieXRlKXVpbnQ2NCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBmcmFtZV9kaWcgLTIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIExhc3RMb2cKICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIHN3YXAKICAgIGV4dHJhY3QgMCA0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyNzctMjgwCiAgICAvLyByZXR1cm4gYWJpQ2FsbChHYXNPcmFjbGUucHJvdG90eXBlLmdldFRyYW5zYWN0aW9uR2FzQ29zdEluVVNELCB7CiAgICAvLyAgIGFwcElkOiB0aGlzLmdhc09yYWNsZS52YWx1ZS5pZCwKICAgIC8vICAgYXJnczogW2Rlc3RpbmF0aW9uQ2hhaW5JZCwgYnJpZGdlR2FzQW1vdW50ICsgbWVzc2VuZ2VyR2FzQW1vdW50XSwKICAgIC8vIH0pLnJldHVyblZhbHVlIC8gdGhpcy5mcm9tR2FzT3JhY2xlU2NhbGluZ0ZhY3Rvcih0b2tlbklkKS52YWx1ZTsKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6OQogICAgLy8gZ2FzT3JhY2xlID0gR2xvYmFsU3RhdGU8QXBwbGljYXRpb24+KCk7CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNCAvLyAiZ2FzT3JhY2xlIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6Mjc5CiAgICAvLyBhcmdzOiBbZGVzdGluYXRpb25DaGFpbklkLCBicmlkZ2VHYXNBbW91bnQgKyBtZXNzZW5nZXJHYXNBbW91bnRdLAogICAgY292ZXIgMgogICAgKwogICAgaXRvYgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyNzctMjgwCiAgICAvLyByZXR1cm4gYWJpQ2FsbChHYXNPcmFjbGUucHJvdG90eXBlLmdldFRyYW5zYWN0aW9uR2FzQ29zdEluVVNELCB7CiAgICAvLyAgIGFwcElkOiB0aGlzLmdhc09yYWNsZS52YWx1ZS5pZCwKICAgIC8vICAgYXJnczogW2Rlc3RpbmF0aW9uQ2hhaW5JZCwgYnJpZGdlR2FzQW1vdW50ICsgbWVzc2VuZ2VyR2FzQW1vdW50XSwKICAgIC8vIH0pLnJldHVyblZhbHVlIC8gdGhpcy5mcm9tR2FzT3JhY2xlU2NhbGluZ0ZhY3Rvcih0b2tlbklkKS52YWx1ZTsKICAgIHB1c2hieXRlcyAweDdiZjdkNTBjIC8vIG1ldGhvZCAiZ2V0VHJhbnNhY3Rpb25HYXNDb3N0SW5VU0QoYnl0ZSx1aW50NjQpdWludDY0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGZyYW1lX2RpZyAtMgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIExhc3RMb2cKICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIHN3YXAKICAgIGV4dHJhY3QgMCA0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyODAKICAgIC8vIH0pLnJldHVyblZhbHVlIC8gdGhpcy5mcm9tR2FzT3JhY2xlU2NhbGluZ0ZhY3Rvcih0b2tlbklkKS52YWx1ZTsKICAgIGZyYW1lX2RpZyAtMQogICAgaXRvYgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czozMwogICAgLy8gcHJvdGVjdGVkIGZyb21HYXNPcmFjbGVTY2FsaW5nRmFjdG9yID0gQm94TWFwPHVpbnQ2NCwgdWludDY0Pih7IGtleVByZWZpeDogJ2UnIH0pOwogICAgcHVzaGJ5dGVzICJlIgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI4MAogICAgLy8gfSkucmV0dXJuVmFsdWUgLyB0aGlzLmZyb21HYXNPcmFjbGVTY2FsaW5nRmFjdG9yKHRva2VuSWQpLnZhbHVlOwogICAgYm94X2dldAogICAgc3dhcAogICAgYnRvaQogICAgc3dhcAogICAgYXNzZXJ0IC8vIEJveCBtdXN0IGhhdmUgdmFsdWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6Mjc3LTI4MAogICAgLy8gcmV0dXJuIGFiaUNhbGwoR2FzT3JhY2xlLnByb3RvdHlwZS5nZXRUcmFuc2FjdGlvbkdhc0Nvc3RJblVTRCwgewogICAgLy8gICBhcHBJZDogdGhpcy5nYXNPcmFjbGUudmFsdWUuaWQsCiAgICAvLyAgIGFyZ3M6IFtkZXN0aW5hdGlvbkNoYWluSWQsIGJyaWRnZUdhc0Ftb3VudCArIG1lc3Nlbmdlckdhc0Ftb3VudF0sCiAgICAvLyB9KS5yZXR1cm5WYWx1ZSAvIHRoaXMuZnJvbUdhc09yYWNsZVNjYWxpbmdGYWN0b3IodG9rZW5JZCkudmFsdWU7CiAgICAvCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjpCcmlkZ2UuaGFzaE1lc3NhZ2UoYW1vdW50OiB1aW50NjQsIHJlY2lwaWVudDogYnl0ZXMsIHNvdXJjZUNoYWluSWQ6IGJ5dGVzLCBkZXN0aW5hdGlvbkNoYWluSWQ6IGJ5dGVzLCByZWNlaXZlVG9rZW46IGJ5dGVzLCBub25jZTogYnl0ZXMpIC0+IGJ5dGVzOgpoYXNoTWVzc2FnZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MjgzLTI5MQogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICAvLyBoYXNoTWVzc2FnZSgKICAgIC8vICAgYW1vdW50OiB1aW50NjQsCiAgICAvLyAgIHJlY2lwaWVudDogU3RhdGljQnl0ZXM8MzI+LAogICAgLy8gICBzb3VyY2VDaGFpbklkOiBCeXRlLAogICAgLy8gICBkZXN0aW5hdGlvbkNoYWluSWQ6IEJ5dGUsCiAgICAvLyAgIHJlY2VpdmVUb2tlbjogU3RhdGljQnl0ZXM8MzI+LAogICAgLy8gICBub25jZTogU3RhdGljQnl0ZXM8MzI+LAogICAgLy8gKTogU3RhdGljQnl0ZXM8MzI+IHsKICAgIHByb3RvIDYgMQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyOTIKICAgIC8vIGNvbnN0IGFtb3VudDMyID0gYnplcm8oMjQpLmNvbmNhdChvcC5pdG9iKGFtb3VudCkpOwogICAgcHVzaGludCAyNCAvLyAyNAogICAgYnplcm8KICAgIGZyYW1lX2RpZyAtNgogICAgaXRvYgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI5MwogICAgLy8gY29uc3Qgc291cmNlQ2hhaW5JZDMyID0gYnplcm8oMzEpLmNvbmNhdChzb3VyY2VDaGFpbklkLmJ5dGVzKTsKICAgIHB1c2hpbnQgMzEgLy8gMzEKICAgIGJ6ZXJvCiAgICBmcmFtZV9kaWcgLTQKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyOTQtMjk1CiAgICAvLyBjb25zdCBwYWNrZWQgPSBhbW91bnQzMgogICAgLy8gICAuY29uY2F0KHJlY2lwaWVudC5ieXRlcykKICAgIHN3YXAKICAgIGZyYW1lX2RpZyAtNQogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI5NC0yOTYKICAgIC8vIGNvbnN0IHBhY2tlZCA9IGFtb3VudDMyCiAgICAvLyAgIC5jb25jYXQocmVjaXBpZW50LmJ5dGVzKQogICAgLy8gICAuY29uY2F0KHNvdXJjZUNoYWluSWQzMikKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czoyOTQtMjk3CiAgICAvLyBjb25zdCBwYWNrZWQgPSBhbW91bnQzMgogICAgLy8gICAuY29uY2F0KHJlY2lwaWVudC5ieXRlcykKICAgIC8vICAgLmNvbmNhdChzb3VyY2VDaGFpbklkMzIpCiAgICAvLyAgIC5jb25jYXQocmVjZWl2ZVRva2VuLmJ5dGVzKQogICAgZnJhbWVfZGlnIC0yCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6Mjk0LTI5OAogICAgLy8gY29uc3QgcGFja2VkID0gYW1vdW50MzIKICAgIC8vICAgLmNvbmNhdChyZWNpcGllbnQuYnl0ZXMpCiAgICAvLyAgIC5jb25jYXQoc291cmNlQ2hhaW5JZDMyKQogICAgLy8gICAuY29uY2F0KHJlY2VpdmVUb2tlbi5ieXRlcykKICAgIC8vICAgLmNvbmNhdChub25jZS5ieXRlcykKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjUyCiAgICAvLyBjb25zdCBBTExCUklER0VfTUVTU0VOR0VSID0gbmV3IEJ5dGUoMSk7CiAgICBieXRlYyAxMSAvLyAweDAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjI5NC0yOTkKICAgIC8vIGNvbnN0IHBhY2tlZCA9IGFtb3VudDMyCiAgICAvLyAgIC5jb25jYXQocmVjaXBpZW50LmJ5dGVzKQogICAgLy8gICAuY29uY2F0KHNvdXJjZUNoYWluSWQzMikKICAgIC8vICAgLmNvbmNhdChyZWNlaXZlVG9rZW4uYnl0ZXMpCiAgICAvLyAgIC5jb25jYXQobm9uY2UuYnl0ZXMpCiAgICAvLyAgIC5jb25jYXQoQUxMQlJJREdFX01FU1NFTkdFUi5ieXRlcyk7CiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzAxCiAgICAvLyBjb25zdCBoYXNoID0gb3Aua2VjY2FrMjU2KHBhY2tlZCk7IC8vIDMyIGJ5dGVzCiAgICBrZWNjYWsyNTYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzA0CiAgICAvLyBjb25zdCB3aXRoU3JjID0gb3Auc2V0Qnl0ZShoYXNoLCAwLCBvcC5idG9pKHNvdXJjZUNoYWluSWQuYnl0ZXMpKTsKICAgIGZyYW1lX2RpZyAtNAogICAgYnRvaQogICAgaW50Y18wIC8vIDAKICAgIHN3YXAKICAgIHNldGJ5dGUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzA1CiAgICAvLyBjb25zdCB3aXRoRHN0ID0gb3Auc2V0Qnl0ZSh3aXRoU3JjLCAxLCBvcC5idG9pKGRlc3RpbmF0aW9uQ2hhaW5JZC5ieXRlcykpOwogICAgZnJhbWVfZGlnIC0zCiAgICBidG9pCiAgICBpbnRjXzEgLy8gMQogICAgc3dhcAogICAgc2V0Ynl0ZQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czozMDcKICAgIC8vIHJldHVybiBuZXcgU3RhdGljQnl0ZXM8MzI+KHdpdGhEc3QpOwogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgMzIgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBzaXplCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjpCcmlkZ2UuaXNPdGhlckJyaWRnZVRva2VuU3VwcG9ydGVkKGNoYWluSWQ6IGJ5dGVzLCB0b2tlbjogYnl0ZXMpIC0+IHVpbnQ2NDoKaXNPdGhlckJyaWRnZVRva2VuU3VwcG9ydGVkOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czozMTAtMzExCiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIC8vIGlzT3RoZXJCcmlkZ2VUb2tlblN1cHBvcnRlZChjaGFpbklkOiBCeXRlLCB0b2tlbjogU3RhdGljQnl0ZXM8MzI+KTogYm9vbGVhbiB7CiAgICBwcm90byAyIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzM3CiAgICAvLyByZXR1cm4gY2hhaW5JZC5ieXRlcy5jb25jYXQodG9rZW4uYnl0ZXMpOwogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czo2NgogICAgLy8gb3RoZXJCcmlkZ2VUb2tlbnMgPSBCb3hNYXA8Ynl0ZXMsIFN0YXRpY0J5dGVzPih7IGtleVByZWZpeDogJ3QnIH0pOwogICAgYnl0ZWMgNyAvLyAidCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9icmlkZ2UuY29udHJhY3QuYWxnby50czozMTIKICAgIC8vIHJldHVybiB0aGlzLm90aGVyQnJpZGdlVG9rZW5zKHRoaXMuX2dldE90aGVyQnJpZGdlVG9rZW5zS2V5KGNoYWluSWQsIHRva2VuKSkuZXhpc3RzOwogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2JyaWRnZS5jb250cmFjdC5hbGdvLnRzOjpCcmlkZ2UuZ2V0VHJhbnNhY3Rpb25Db3N0KGNoYWluSWQ6IGJ5dGVzKSAtPiB1aW50NjQ6CmdldFRyYW5zYWN0aW9uQ29zdDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzE1LTMxNgogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICAvLyBnZXRUcmFuc2FjdGlvbkNvc3QoY2hhaW5JZDogQnl0ZSk6IHVpbnQ2NCB7CiAgICBwcm90byAxIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzE3CiAgICAvLyByZXR1cm4gdGhpcy5nZXRUcmFuc2FjdGlvblJlbGF5ZXJDb3N0KGNoYWluSWQpICsgdGhpcy5nZXRTZW5kVHJhbnNhY3Rpb25TdG9yYWdlQ29zdCgpOwogICAgZnJhbWVfZGlnIC0xCiAgICBjYWxsc3ViIGdldFRyYW5zYWN0aW9uUmVsYXllckNvc3QKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzMxCiAgICAvLyByZXR1cm4gMTU3MDA7CiAgICBpbnRjIDQgLy8gMTU3MDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvYnJpZGdlLmNvbnRyYWN0LmFsZ28udHM6MzE3CiAgICAvLyByZXR1cm4gdGhpcy5nZXRUcmFuc2FjdGlvblJlbGF5ZXJDb3N0KGNoYWluSWQpICsgdGhpcy5nZXRTZW5kVHJhbnNhY3Rpb25TdG9yYWdlQ29zdCgpOwogICAgKwogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo6Um91dGVyLnN3YXAodG9rZW5JZDogdWludDY0LCByZWNlaXZlVG9rZW5JZDogdWludDY0LCByZWNpcGllbnQ6IGJ5dGVzLCByZWNlaXZlQW1vdW50TWluOiB1aW50NjQpIC0+IHZvaWQ6CnN3YXA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjc4LTg0CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIC8vIHN3YXAoCiAgICAvLyAgIHRva2VuSWQ6IHVpbnQ2NCwKICAgIC8vICAgcmVjZWl2ZVRva2VuSWQ6IHVpbnQ2NCwKICAgIC8vICAgcmVjaXBpZW50OiBBZGRyZXNzLAogICAgLy8gICByZWNlaXZlQW1vdW50TWluOiB1aW50NjQsCiAgICAvLyApOiB2b2lkIHsKICAgIHByb3RvIDQgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo1MAogICAgLy8gY2FuU3dhcCA9IEdsb2JhbFN0YXRlPGJvb2xlYW4+KHsgaW5pdGlhbFZhbHVlOiB0cnVlIH0pOwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gImNhblN3YXAiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo2MQogICAgLy8gYXNzZXJ0KHRoaXMuY2FuU3dhcC52YWx1ZSwgJ1JvdXRlcjogc3dhcCBwcm9oaWJpdGVkJyk7CiAgICBhc3NlcnQgLy8gUm91dGVyOiBzd2FwIHByb2hpYml0ZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6ODYKICAgIC8vIGNvbnN0IHNlbmRlciA9IG5ldyBBZGRyZXNzKFR4bi5zZW5kZXIpOwogICAgdHhuIFNlbmRlcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo4NwogICAgLy8gY29uc3QgYW1vdW50ID0gZ2V0UHJldkFzc2V0UGF5KHRva2VuSWQpOwogICAgZnJhbWVfZGlnIC00CiAgICBjYWxsc3ViIGdldFByZXZBc3NldFBheQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo4OAogICAgLy8gY29uc3QgdlVzZEFtb3VudCA9IHRoaXMuc2VuZEFuZFN3YXBUb1ZVc2QodG9rZW5JZCwgc2VuZGVyLCBhbW91bnQpOwogICAgZnJhbWVfZGlnIC00CiAgICBkaWcgMgogICAgZGlnIDIKICAgIGNhbGxzdWIgc2VuZEFuZFN3YXBUb1ZVc2QKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6ODkKICAgIC8vIGNvbnN0IHJlY2VpdmVkQW1vdW50ID0gdGhpcy5yZWNlaXZlQW5kU3dhcEZyb21WVXNkKHJlY2VpdmVUb2tlbklkLCByZWNpcGllbnQsIHZVc2RBbW91bnQsIHJlY2VpdmVBbW91bnRNaW4pOwogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgIHVuY292ZXIgMgogICAgZnJhbWVfZGlnIC0xCiAgICBjYWxsc3ViIHJlY2VpdmVBbmRTd2FwRnJvbVZVc2QKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6OTAKICAgIC8vIGVtaXQ8U3dhcHBlZD4oeyBzZW5kZXIsIHJlY2lwaWVudCwgdG9rZW5JZCwgcmVjZWl2ZVRva2VuSWQsIGFtb3VudCwgcmVjZWl2ZWRBbW91bnQgfSk7CiAgICBmcmFtZV9kaWcgLTQKICAgIGl0b2IKICAgIGZyYW1lX2RpZyAtMwogICAgaXRvYgogICAgdW5jb3ZlciAzCiAgICBpdG9iCiAgICB1bmNvdmVyIDMKICAgIGl0b2IKICAgIHVuY292ZXIgNAogICAgZnJhbWVfZGlnIC0yCiAgICBjb25jYXQKICAgIHVuY292ZXIgNAogICAgY29uY2F0CiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4MTU0MDQ0YjMgLy8gbWV0aG9kICJTd2FwcGVkKGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6OlJvdXRlci5hZGRQb29sKHBvb2xJZDogdWludDY0LCB0b2tlbklkOiB1aW50NjQpIC0+IHZvaWQ6CmFkZFBvb2w6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEwMC0xMDEKICAgIC8vIEBhYmltZXRob2QoKQogICAgLy8gYWRkUG9vbChwb29sSWQ6IHVpbnQ2NCwgdG9rZW5JZDogdWludDY0KTogdm9pZCB7CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTAyCiAgICAvLyB0aGlzLm9ubHlPd25lcigpOwogICAgY2FsbHN1YiBvbmx5T3duZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTAzCiAgICAvLyB0aGlzLnBvb2xzKHRva2VuSWQpLnZhbHVlID0gcG9vbElkOwogICAgZnJhbWVfZGlnIC0xCiAgICBpdG9iCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjMxCiAgICAvLyBwb29scyA9IEJveE1hcDx1aW50NjQsIHVpbnQ2ND4oeyBrZXlQcmVmaXg6ICdwJyB9KTsKICAgIGJ5dGVjIDggLy8gInAiCiAgICBkaWcgMQogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEwMwogICAgLy8gdGhpcy5wb29scyh0b2tlbklkKS52YWx1ZSA9IHBvb2xJZDsKICAgIGZyYW1lX2RpZyAtMgogICAgaXRvYgogICAgYm94X3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxMDUKICAgIC8vIGNvbnN0IHRva2VuRGVjaW1hbHMgPSBhc3NldC5kZWNpbWFsczsKICAgIGZyYW1lX2RpZyAtMQogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldERlY2ltYWxzCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy1vcmFjbGUuY29udHJhY3QuYWxnby50czo4CiAgICAvLyBleHBvcnQgY29uc3QgT1JBQ0xFX1BSSUNFX1BSRUNJU0lPTjogdWludDY0ID0gOTsKICAgIHB1c2hpbnQgOSAvLyA5CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEwNgogICAgLy8gdGhpcy5icmlkZ2luZ0ZlZUNvbnZlcnNpb25TY2FsaW5nRmFjdG9yKHRva2VuSWQpLnZhbHVlID0gMTAgKiogKE9SQUNMRV9QUklDRV9QUkVDSVNJT04gLSB0b2tlbkRlY2ltYWxzICsgQ0hBSU5fUFJFQ0lTSU9OKTsKICAgIHN3YXAKICAgIC0KICAgIGR1cAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9nYXMtb3JhY2xlLmNvbnRyYWN0LmFsZ28udHM6NwogICAgLy8gZXhwb3J0IGNvbnN0IENIQUlOX1BSRUNJU0lPTjogdWludDY0ID0gNjsKICAgIGludGNfMiAvLyA2CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEwNgogICAgLy8gdGhpcy5icmlkZ2luZ0ZlZUNvbnZlcnNpb25TY2FsaW5nRmFjdG9yKHRva2VuSWQpLnZhbHVlID0gMTAgKiogKE9SQUNMRV9QUklDRV9QUkVDSVNJT04gLSB0b2tlbkRlY2ltYWxzICsgQ0hBSU5fUFJFQ0lTSU9OKTsKICAgICsKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MzYKICAgIC8vIHByb3RlY3RlZCBicmlkZ2luZ0ZlZUNvbnZlcnNpb25TY2FsaW5nRmFjdG9yID0gQm94TWFwPHVpbnQ2NCwgdWludDY0Pih7IGtleVByZWZpeDogJ2YnIH0pOwogICAgcHVzaGJ5dGVzICJmIgogICAgZGlnIDMKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxMDYKICAgIC8vIHRoaXMuYnJpZGdpbmdGZWVDb252ZXJzaW9uU2NhbGluZ0ZhY3Rvcih0b2tlbklkKS52YWx1ZSA9IDEwICoqIChPUkFDTEVfUFJJQ0VfUFJFQ0lTSU9OIC0gdG9rZW5EZWNpbWFscyArIENIQUlOX1BSRUNJU0lPTik7CiAgICBwdXNoaW50IDEwIC8vIDEwCiAgICB1bmNvdmVyIDIKICAgIGV4cAogICAgaXRvYgogICAgYm94X3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czozMwogICAgLy8gcHJvdGVjdGVkIGZyb21HYXNPcmFjbGVTY2FsaW5nRmFjdG9yID0gQm94TWFwPHVpbnQ2NCwgdWludDY0Pih7IGtleVByZWZpeDogJ2UnIH0pOwogICAgcHVzaGJ5dGVzICJlIgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTA3CiAgICAvLyB0aGlzLmZyb21HYXNPcmFjbGVTY2FsaW5nRmFjdG9yKHRva2VuSWQpLnZhbHVlID0gMTAgKiogKE9SQUNMRV9QUklDRV9QUkVDSVNJT04gLSB0b2tlbkRlY2ltYWxzKTsKICAgIHB1c2hpbnQgMTAgLy8gMTAKICAgIHVuY292ZXIgMgogICAgZXhwCiAgICBpdG9iCiAgICBib3hfcHV0CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjpSb3V0ZXIucmVtb3ZlUG9vbCh0b2tlbklkOiB1aW50NjQpIC0+IHZvaWQ6CnJlbW92ZVBvb2w6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjExMC0xMTEKICAgIC8vIEBhYmltZXRob2QoKQogICAgLy8gcmVtb3ZlUG9vbCh0b2tlbklkOiB1aW50NjQpOiB2b2lkIHsKICAgIHByb3RvIDEgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxMTIKICAgIC8vIHRoaXMub25seU93bmVyKCk7CiAgICBjYWxsc3ViIG9ubHlPd25lcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxMTMKICAgIC8vIHRoaXMucG9vbHModG9rZW5JZCkuZGVsZXRlKCk7CiAgICBmcmFtZV9kaWcgLTEKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MzEKICAgIC8vIHBvb2xzID0gQm94TWFwPHVpbnQ2NCwgdWludDY0Pih7IGtleVByZWZpeDogJ3AnIH0pOwogICAgYnl0ZWMgOCAvLyAicCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxMTMKICAgIC8vIHRoaXMucG9vbHModG9rZW5JZCkuZGVsZXRlKCk7CiAgICBib3hfZGVsCiAgICBwb3AKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6OlJvdXRlci5zdG9wU3dhcCgpIC0+IHZvaWQ6CnN0b3BTd2FwOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo2OAogICAgLy8gYXNzZXJ0KG9wLlR4bi5zZW5kZXIuYnl0ZXMgPT09IHRoaXMuc3RvcEF1dGhvcml0eS52YWx1ZS5ieXRlcywgJ1JvdXRlcjogaXMgbm90IHN0b3BBdXRob3JpdHknKTsKICAgIHR4biBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MzkKICAgIC8vIHByaXZhdGUgc3RvcEF1dGhvcml0eSA9IEdsb2JhbFN0YXRlPEFkZHJlc3M+KCk7Ly8gY2FuIHJlc3RyaWN0IGRlcG9zaXQgb3Igd2l0aGRyYXcgb3BlcmF0aW9ucwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDEwIC8vICJzdG9wQXV0aG9yaXR5IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6NjgKICAgIC8vIGFzc2VydChvcC5UeG4uc2VuZGVyLmJ5dGVzID09PSB0aGlzLnN0b3BBdXRob3JpdHkudmFsdWUuYnl0ZXMsICdSb3V0ZXI6IGlzIG5vdCBzdG9wQXV0aG9yaXR5Jyk7CiAgICA9PQogICAgYXNzZXJ0IC8vIFJvdXRlcjogaXMgbm90IHN0b3BBdXRob3JpdHkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6NTAKICAgIC8vIGNhblN3YXAgPSBHbG9iYWxTdGF0ZTxib29sZWFuPih7IGluaXRpYWxWYWx1ZTogdHJ1ZSB9KTsKICAgIGJ5dGVjXzEgLy8gImNhblN3YXAiCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEyMgogICAgLy8gdGhpcy5jYW5Td2FwLnZhbHVlID0gZmFsc2U7CiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6OlJvdXRlci5zdGFydFN3YXAoKSAtPiB2b2lkOgpzdGFydFN3YXA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEzMAogICAgLy8gdGhpcy5vbmx5T3duZXIoKTsKICAgIGNhbGxzdWIgb25seU93bmVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjUwCiAgICAvLyBjYW5Td2FwID0gR2xvYmFsU3RhdGU8Ym9vbGVhbj4oeyBpbml0aWFsVmFsdWU6IHRydWUgfSk7CiAgICBieXRlY18xIC8vICJjYW5Td2FwIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxMzEKICAgIC8vIHRoaXMuY2FuU3dhcC52YWx1ZSA9IHRydWU7CiAgICBpbnRjXzEgLy8gMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6OlJvdXRlci5zZXRTdG9wQXV0aG9yaXR5KHN0b3BBdXRob3JpdHk6IGJ5dGVzKSAtPiB2b2lkOgpzZXRTdG9wQXV0aG9yaXR5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxMzctMTM4CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIC8vIHNldFN0b3BBdXRob3JpdHkoc3RvcEF1dGhvcml0eTogQWRkcmVzcyk6IHZvaWQgewogICAgcHJvdG8gMSAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjEzOQogICAgLy8gdGhpcy5vbmx5T3duZXIoKTsKICAgIGNhbGxzdWIgb25seU93bmVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjM5CiAgICAvLyBwcml2YXRlIHN0b3BBdXRob3JpdHkgPSBHbG9iYWxTdGF0ZTxBZGRyZXNzPigpOy8vIGNhbiByZXN0cmljdCBkZXBvc2l0IG9yIHdpdGhkcmF3IG9wZXJhdGlvbnMKICAgIGJ5dGVjIDEwIC8vICJzdG9wQXV0aG9yaXR5IgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNDAKICAgIC8vIHRoaXMuc3RvcEF1dGhvcml0eS52YWx1ZSA9IHN0b3BBdXRob3JpdHk7CiAgICBmcmFtZV9kaWcgLTEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjpSb3V0ZXIuc2V0UmViYWxhbmNlcihyZWJhbGFuY2VyOiBieXRlcykgLT4gdm9pZDoKc2V0UmViYWxhbmNlcjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTQ2LTE0NwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBzZXRSZWJhbGFuY2VyKHJlYmFsYW5jZXI6IEFkZHJlc3MpOiB2b2lkIHsKICAgIHByb3RvIDEgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNDgKICAgIC8vIHRoaXMub25seU93bmVyKCk7CiAgICBjYWxsc3ViIG9ubHlPd25lcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo0OQogICAgLy8gcHJpdmF0ZSByZWJhbGFuY2VyID0gR2xvYmFsU3RhdGU8QWRkcmVzcz4oeyBpbml0aWFsVmFsdWU6IG5ldyBBZGRyZXNzKGJ6ZXJvKDApKSB9KTsvLyBjYW4gcmVzdHJpY3QgZGVwb3NpdCBvciB3aXRoZHJhdyBvcGVyYXRpb25zCiAgICBieXRlYyA2IC8vICJyZWJhbGFuY2VyIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNDkKICAgIC8vIHRoaXMucmViYWxhbmNlci52YWx1ZSA9IHJlYmFsYW5jZXI7CiAgICBmcmFtZV9kaWcgLTEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjpSb3V0ZXIucmVjZWl2ZUFuZFN3YXBGcm9tVlVzZCh0b2tlbklkOiB1aW50NjQsIHJlY2lwaWVudDogYnl0ZXMsIHZVc2RBbW91bnQ6IHVpbnQ2NCwgcmVjZWl2ZUFtb3VudE1pbjogdWludDY0KSAtPiB1aW50NjQ6CnJlY2VpdmVBbmRTd2FwRnJvbVZVc2Q6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjE1Mi0xNTcKICAgIC8vIHByb3RlY3RlZCByZWNlaXZlQW5kU3dhcEZyb21WVXNkKAogICAgLy8gICB0b2tlbklkOiB1aW50NjQsCiAgICAvLyAgIHJlY2lwaWVudDogQWRkcmVzcywKICAgIC8vICAgdlVzZEFtb3VudDogdWludDY0LAogICAgLy8gICByZWNlaXZlQW1vdW50TWluOiB1aW50NjQsCiAgICAvLyApOiB1aW50NjQgewogICAgcHJvdG8gNCAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjE1OAogICAgLy8gYXNzZXJ0KHRoaXMucG9vbHModG9rZW5JZCkuZXhpc3RzLCAnUm91dGVyOiBubyByZWNlaXZlIHBvb2wnKTsKICAgIGZyYW1lX2RpZyAtNAogICAgaXRvYgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czozMQogICAgLy8gcG9vbHMgPSBCb3hNYXA8dWludDY0LCB1aW50NjQ+KHsga2V5UHJlZml4OiAncCcgfSk7CiAgICBieXRlYyA4IC8vICJwIgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjE1OAogICAgLy8gYXNzZXJ0KHRoaXMucG9vbHModG9rZW5JZCkuZXhpc3RzLCAnUm91dGVyOiBubyByZWNlaXZlIHBvb2wnKTsKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gUm91dGVyOiBubyByZWNlaXZlIHBvb2wKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTU5CiAgICAvLyBjb25zdCBwb29sSWQgPSB0aGlzLnBvb2xzKHRva2VuSWQpLnZhbHVlOwogICAgYm94X2dldAogICAgc3dhcAogICAgYnRvaQogICAgc3dhcAogICAgYXNzZXJ0IC8vIEJveCBtdXN0IGhhdmUgdmFsdWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTYwLTE2MwogICAgLy8gcmV0dXJuIGFiaUNhbGwoUG9vbC5wcm90b3R5cGUuc3dhcEZyb21WVXNkLCB7CiAgICAvLyAgIGFwcElkOiBwb29sSWQsCiAgICAvLyAgIGFyZ3M6IFtyZWNpcGllbnQsIHZVc2RBbW91bnQsIHJlY2VpdmVBbW91bnRNaW4sIHJlY2lwaWVudCA9PT0gdGhpcy5yZWJhbGFuY2VyLnZhbHVlXSwKICAgIC8vIH0pLnJldHVyblZhbHVlOwogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNjIKICAgIC8vIGFyZ3M6IFtyZWNpcGllbnQsIHZVc2RBbW91bnQsIHJlY2VpdmVBbW91bnRNaW4sIHJlY2lwaWVudCA9PT0gdGhpcy5yZWJhbGFuY2VyLnZhbHVlXSwKICAgIGZyYW1lX2RpZyAtMgogICAgaXRvYgogICAgZnJhbWVfZGlnIC0xCiAgICBpdG9iCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjQ5CiAgICAvLyBwcml2YXRlIHJlYmFsYW5jZXIgPSBHbG9iYWxTdGF0ZTxBZGRyZXNzPih7IGluaXRpYWxWYWx1ZTogbmV3IEFkZHJlc3MoYnplcm8oMCkpIH0pOy8vIGNhbiByZXN0cmljdCBkZXBvc2l0IG9yIHdpdGhkcmF3IG9wZXJhdGlvbnMKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA2IC8vICJyZWJhbGFuY2VyIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTYyCiAgICAvLyBhcmdzOiBbcmVjaXBpZW50LCB2VXNkQW1vdW50LCByZWNlaXZlQW1vdW50TWluLCByZWNpcGllbnQgPT09IHRoaXMucmViYWxhbmNlci52YWx1ZV0sCiAgICBmcmFtZV9kaWcgLTMKICAgID09CiAgICBieXRlYyA5IC8vIDB4MDAKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNjAtMTYzCiAgICAvLyByZXR1cm4gYWJpQ2FsbChQb29sLnByb3RvdHlwZS5zd2FwRnJvbVZVc2QsIHsKICAgIC8vICAgYXBwSWQ6IHBvb2xJZCwKICAgIC8vICAgYXJnczogW3JlY2lwaWVudCwgdlVzZEFtb3VudCwgcmVjZWl2ZUFtb3VudE1pbiwgcmVjaXBpZW50ID09PSB0aGlzLnJlYmFsYW5jZXIudmFsdWVdLAogICAgLy8gfSkucmV0dXJuVmFsdWU7CiAgICBwdXNoYnl0ZXMgMHgwZDFiNGMwNiAvLyBtZXRob2QgInN3YXBGcm9tVlVzZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl1aW50NjQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgZnJhbWVfZGlnIC0zCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgdW5jb3ZlciAyCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgc3dhcAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIExhc3RMb2cKICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIHN3YXAKICAgIGV4dHJhY3QgMCA0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgYnRvaQogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czo6Um91dGVyLnNlbmRBbmRTd2FwVG9WVXNkKHRva2VuSWQ6IHVpbnQ2NCwgdXNlcjogYnl0ZXMsIGFtb3VudDogdWludDY0KSAtPiB1aW50NjQ6CnNlbmRBbmRTd2FwVG9WVXNkOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNjcKICAgIC8vIHByb3RlY3RlZCBzZW5kQW5kU3dhcFRvVlVzZCh0b2tlbklkOiB1aW50NjQsIHVzZXI6IEFkZHJlc3MsIGFtb3VudDogdWludDY0KTogdWludDY0IHsKICAgIHByb3RvIDMgMQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNjgKICAgIC8vIGFzc2VydCh0aGlzLnBvb2xzKHRva2VuSWQpLmV4aXN0cywgJ1JvdXRlcjogbm8gcG9vbCcpOwogICAgZnJhbWVfZGlnIC0zCiAgICBpdG9iCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjMxCiAgICAvLyBwb29scyA9IEJveE1hcDx1aW50NjQsIHVpbnQ2ND4oeyBrZXlQcmVmaXg6ICdwJyB9KTsKICAgIGJ5dGVjIDggLy8gInAiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTY4CiAgICAvLyBhc3NlcnQodGhpcy5wb29scyh0b2tlbklkKS5leGlzdHMsICdSb3V0ZXI6IG5vIHBvb2wnKTsKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gUm91dGVyOiBubyBwb29sCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjE2OQogICAgLy8gY29uc3QgcG9vbElkID0gdGhpcy5wb29scyh0b2tlbklkKS52YWx1ZTsKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGJ0b2kKICAgIHN3YXAKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjE3MS0xNzYKICAgIC8vIGl0eG4uYXNzZXRUcmFuc2Zlcih7CiAgICAvLyAgIHhmZXJBc3NldDogdG9rZW5JZCwKICAgIC8vICAgYXNzZXRBbW91bnQ6IGFtb3VudCwKICAgIC8vICAgYXNzZXRSZWNlaXZlcjogQXBwbGljYXRpb24ocG9vbElkKS5hZGRyZXNzLAogICAgLy8gfSkKICAgIC8vICAgLnN1Ym1pdCgpOwogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNzQKICAgIC8vIGFzc2V0UmVjZWl2ZXI6IEFwcGxpY2F0aW9uKHBvb2xJZCkuYWRkcmVzcywKICAgIGR1cAogICAgYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwogICAgYXNzZXJ0IC8vIGFwcGxpY2F0aW9uIGV4aXN0cwogICAgaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCiAgICBmcmFtZV9kaWcgLTEKICAgIGl0eG5fZmllbGQgQXNzZXRBbW91bnQKICAgIGZyYW1lX2RpZyAtMwogICAgaXR4bl9maWVsZCBYZmVyQXNzZXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6MTcxLTE3NQogICAgLy8gaXR4bi5hc3NldFRyYW5zZmVyKHsKICAgIC8vICAgeGZlckFzc2V0OiB0b2tlbklkLAogICAgLy8gICBhc3NldEFtb3VudDogYW1vdW50LAogICAgLy8gICBhc3NldFJlY2VpdmVyOiBBcHBsaWNhdGlvbihwb29sSWQpLmFkZHJlc3MsCiAgICAvLyB9KQogICAgaW50Y18zIC8vIDQKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNzEtMTc2CiAgICAvLyBpdHhuLmFzc2V0VHJhbnNmZXIoewogICAgLy8gICB4ZmVyQXNzZXQ6IHRva2VuSWQsCiAgICAvLyAgIGFzc2V0QW1vdW50OiBhbW91bnQsCiAgICAvLyAgIGFzc2V0UmVjZWl2ZXI6IEFwcGxpY2F0aW9uKHBvb2xJZCkuYWRkcmVzcywKICAgIC8vIH0pCiAgICAvLyAgIC5zdWJtaXQoKTsKICAgIGl0eG5fc3VibWl0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL3JvdXRlci5hbGdvLnRzOjE3OC0xODEKICAgIC8vIHJldHVybiBhYmlDYWxsKFBvb2wucHJvdG90eXBlLnN3YXBUb1ZVc2QsIHsKICAgIC8vICAgYXBwSWQ6IHBvb2xJZCwKICAgIC8vICAgYXJnczogW3VzZXIsIGFtb3VudCwgdXNlciA9PT0gdGhpcy5yZWJhbGFuY2VyLnZhbHVlXSwKICAgIC8vIH0pLnJldHVyblZhbHVlOwogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxODAKICAgIC8vIGFyZ3M6IFt1c2VyLCBhbW91bnQsIHVzZXIgPT09IHRoaXMucmViYWxhbmNlci52YWx1ZV0sCiAgICBmcmFtZV9kaWcgLTEKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvcm91dGVyLmFsZ28udHM6NDkKICAgIC8vIHByaXZhdGUgcmViYWxhbmNlciA9IEdsb2JhbFN0YXRlPEFkZHJlc3M+KHsgaW5pdGlhbFZhbHVlOiBuZXcgQWRkcmVzcyhiemVybygwKSkgfSk7Ly8gY2FuIHJlc3RyaWN0IGRlcG9zaXQgb3Igd2l0aGRyYXcgb3BlcmF0aW9ucwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDYgLy8gInJlYmFsYW5jZXIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxODAKICAgIC8vIGFyZ3M6IFt1c2VyLCBhbW91bnQsIHVzZXIgPT09IHRoaXMucmViYWxhbmNlci52YWx1ZV0sCiAgICBmcmFtZV9kaWcgLTIKICAgID09CiAgICBieXRlYyA5IC8vIDB4MDAKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9yb3V0ZXIuYWxnby50czoxNzgtMTgxCiAgICAvLyByZXR1cm4gYWJpQ2FsbChQb29sLnByb3RvdHlwZS5zd2FwVG9WVXNkLCB7CiAgICAvLyAgIGFwcElkOiBwb29sSWQsCiAgICAvLyAgIGFyZ3M6IFt1c2VyLCBhbW91bnQsIHVzZXIgPT09IHRoaXMucmViYWxhbmNlci52YWx1ZV0sCiAgICAvLyB9KS5yZXR1cm5WYWx1ZTsKICAgIHB1c2hieXRlcyAweGQ5NzhhZDE0IC8vIG1ldGhvZCAic3dhcFRvVlVzZChhZGRyZXNzLHVpbnQ2NCxib29sKXVpbnQ2NCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBmcmFtZV9kaWcgLTIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBzd2FwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgaW50Y18yIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gTGFzdExvZwogICAgZHVwCiAgICBleHRyYWN0IDQgMAogICAgc3dhcAogICAgZXh0cmFjdCAwIDQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgPT0KICAgIGFzc2VydCAvLyBCeXRlcyBoYXMgdmFsaWQgcHJlZml4CiAgICBidG9pCiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjpHYXNVc2FnZS5nZXRHYXNVc2FnZShjaGFpbklkOiBieXRlcykgLT4gdWludDY0OgpnZXRHYXNVc2FnZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MTctMTgKICAgIC8vIEBhYmltZXRob2QoeyByZWFkb25seTogdHJ1ZSB9KQogICAgLy8gZ2V0R2FzVXNhZ2UoY2hhaW5JZDogQnl0ZSk6IHVpbnQ2NCB7CiAgICBwcm90byAxIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MTAKICAgIC8vIGdhc1VzYWdlID0gQm94TWFwPEJ5dGUsIHVpbnQ2ND4oeyBrZXlQcmVmaXg6ICdnJyB9KTsKICAgIGJ5dGVjIDEyIC8vICJnIgogICAgZnJhbWVfZGlnIC0xCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MTkKICAgIC8vIHJldHVybiB0aGlzLmdhc1VzYWdlKGNoYWluSWQpLnZhbHVlOwogICAgYm94X2dldAogICAgc3dhcAogICAgYnRvaQogICAgc3dhcAogICAgYXNzZXJ0IC8vIEJveCBtdXN0IGhhdmUgdmFsdWUKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6Okdhc1VzYWdlLnNldEdhc1VzYWdlKGNoYWluSWQ6IGJ5dGVzLCBnYXNBbW91bnQ6IHVpbnQ2NCkgLT4gdm9pZDoKc2V0R2FzVXNhZ2U6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjIyLTIzCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIC8vIHNldEdhc1VzYWdlKGNoYWluSWQ6IEJ5dGUsIGdhc0Ftb3VudDogdWludDY0KTogdm9pZCB7CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MjQKICAgIC8vIHRoaXMub25seU93bmVyKCk7CiAgICBjYWxsc3ViIG9ubHlPd25lcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9nYXMtdXNhZ2UuYWxnby50czoxMAogICAgLy8gZ2FzVXNhZ2UgPSBCb3hNYXA8Qnl0ZSwgdWludDY0Pih7IGtleVByZWZpeDogJ2cnIH0pOwogICAgYnl0ZWMgMTIgLy8gImciCiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9nYXMtdXNhZ2UuYWxnby50czoyNQogICAgLy8gdGhpcy5nYXNVc2FnZShjaGFpbklkKS52YWx1ZSA9IGdhc0Ftb3VudDsKICAgIGZyYW1lX2RpZyAtMQogICAgaXRvYgogICAgYm94X3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9nYXMtdXNhZ2UuYWxnby50czo6R2FzVXNhZ2Uuc2V0R2FzT3JhY2xlKGdhc09yYWNsZTogdWludDY0KSAtPiB2b2lkOgpzZXRHYXNPcmFjbGU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjI4LTI5CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIC8vIHNldEdhc09yYWNsZShnYXNPcmFjbGU6IEFwcGxpY2F0aW9uKTogdm9pZCB7CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MzAKICAgIC8vIHRoaXMub25seU93bmVyKCk7CiAgICBjYWxsc3ViIG9ubHlPd25lcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9nYXMtdXNhZ2UuYWxnby50czo5CiAgICAvLyBnYXNPcmFjbGUgPSBHbG9iYWxTdGF0ZTxBcHBsaWNhdGlvbj4oKTsKICAgIGJ5dGVjIDQgLy8gImdhc09yYWNsZSIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MzEKICAgIC8vIHRoaXMuZ2FzT3JhY2xlLnZhbHVlID0gZ2FzT3JhY2xlOwogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9nYXMtdXNhZ2UuYWxnby50czo6R2FzVXNhZ2UuZ2V0VHJhbnNhY3Rpb25SZWxheWVyQ29zdChjaGFpbklkOiBieXRlcykgLT4gdWludDY0OgpnZXRUcmFuc2FjdGlvblJlbGF5ZXJDb3N0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9nYXMtdXNhZ2UuYWxnby50czozNC0zNQogICAgLy8gQGFiaW1ldGhvZCh7IHJlYWRvbmx5OiB0cnVlIH0pCiAgICAvLyBnZXRUcmFuc2FjdGlvblJlbGF5ZXJDb3N0KGNoYWluSWQ6IEJ5dGUpOiB1aW50NjQgewogICAgcHJvdG8gMSAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjEwCiAgICAvLyBnYXNVc2FnZSA9IEJveE1hcDxCeXRlLCB1aW50NjQ+KHsga2V5UHJlZml4OiAnZycgfSk7CiAgICBieXRlYyAxMiAvLyAiZyIKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjM2CiAgICAvLyBjb25zdCBnYXNBbW91bnQgPSB0aGlzLmdhc1VzYWdlKGNoYWluSWQpLnZhbHVlOwogICAgYm94X2dldAogICAgc3dhcAogICAgYnRvaQogICAgc3dhcAogICAgYXNzZXJ0IC8vIEJveCBtdXN0IGhhdmUgdmFsdWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MzctNDAKICAgIC8vIHJldHVybiBhYmlDYWxsKEdhc09yYWNsZS5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb25HYXNDb3N0SW5OYXRpdmVUb2tlbiwgewogICAgLy8gICBhcHBJZDogdGhpcy5nYXNPcmFjbGUudmFsdWUuaWQsCiAgICAvLyAgIGFyZ3M6IFtjaGFpbklkLCBnYXNBbW91bnRdLAogICAgLy8gfSkucmV0dXJuVmFsdWU7CiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjkKICAgIC8vIGdhc09yYWNsZSA9IEdsb2JhbFN0YXRlPEFwcGxpY2F0aW9uPigpOwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDQgLy8gImdhc09yYWNsZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL2dhcy11c2FnZS5hbGdvLnRzOjM5CiAgICAvLyBhcmdzOiBbY2hhaW5JZCwgZ2FzQW1vdW50XSwKICAgIHN3YXAKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvZ2FzLXVzYWdlLmFsZ28udHM6MzctNDAKICAgIC8vIHJldHVybiBhYmlDYWxsKEdhc09yYWNsZS5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb25HYXNDb3N0SW5OYXRpdmVUb2tlbiwgewogICAgLy8gICBhcHBJZDogdGhpcy5nYXNPcmFjbGUudmFsdWUuaWQsCiAgICAvLyAgIGFyZ3M6IFtjaGFpbklkLCBnYXNBbW91bnRdLAogICAgLy8gfSkucmV0dXJuVmFsdWU7CiAgICBwdXNoYnl0ZXMgMHhjMmFmY2NkMSAvLyBtZXRob2QgImdldFRyYW5zYWN0aW9uR2FzQ29zdEluTmF0aXZlVG9rZW4oYnl0ZSx1aW50NjQpdWludDY0IgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGZyYW1lX2RpZyAtMQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIExhc3RMb2cKICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIHN3YXAKICAgIGV4dHJhY3QgMCA0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgYnRvaQogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9vd25hYmxlLmFsZ28udHM6Ok93bmFibGUub25seU93bmVyKCkgLT4gdm9pZDoKb25seU93bmVyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9vd25hYmxlLmFsZ28udHM6MTMKICAgIC8vIGFzc2VydChvcC5UeG4uc2VuZGVyLmJ5dGVzID09PSB0aGlzLm93bmVyLnZhbHVlLmJ5dGVzLCAnT25seSBvd25lcicpOwogICAgdHhuIFNlbmRlcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9vd25hYmxlLmFsZ28udHM6NgogICAgLy8gcHJvdGVjdGVkIG93bmVyID0gR2xvYmFsU3RhdGU8QWRkcmVzcz4oKTsKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18zIC8vICJvd25lciIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL293bmFibGUuYWxnby50czoxMwogICAgLy8gYXNzZXJ0KG9wLlR4bi5zZW5kZXIuYnl0ZXMgPT09IHRoaXMub3duZXIudmFsdWUuYnl0ZXMsICdPbmx5IG93bmVyJyk7CiAgICA9PQogICAgYXNzZXJ0IC8vIE9ubHkgb3duZXIKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9jb250cmFjdHMvb3duYWJsZS5hbGdvLnRzOjpPd25hYmxlLnRyYW5zZmVyT3duZXJzaGlwKG5ld093bmVyOiBieXRlcykgLT4gdm9pZDoKdHJhbnNmZXJPd25lcnNoaXA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY29udHJhY3RzL293bmFibGUuYWxnby50czoxNi0xNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBwdWJsaWMgdHJhbnNmZXJPd25lcnNoaXAobmV3T3duZXI6IEFkZHJlc3MpOiB2b2lkIHsKICAgIHByb3RvIDEgMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9vd25hYmxlLmFsZ28udHM6MTgKICAgIC8vIHRoaXMub25seU93bmVyKCk7CiAgICBjYWxsc3ViIG9ubHlPd25lcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9vd25hYmxlLmFsZ28udHM6NgogICAgLy8gcHJvdGVjdGVkIG93bmVyID0gR2xvYmFsU3RhdGU8QWRkcmVzcz4oKTsKICAgIGJ5dGVjXzMgLy8gIm93bmVyIgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvbnRyYWN0cy9vd25hYmxlLmFsZ28udHM6MTkKICAgIC8vIHRoaXMub3duZXIudmFsdWUgPSBuZXdPd25lcjsKICAgIGZyYW1lX2RpZyAtMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1Ygo=\",\n clear:\n \"I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==\",\n },\n byteCode: {\n approval:\n \"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\",\n clear: \"CoEBQw==\",\n },\n events: [\n {\n name: \"BridgingFeeFromTokens\",\n args: [\n { type: \"uint64\", name: \"feeFromNative\" },\n { type: \"uint64\", name: \"feeFromStable\" },\n { type: \"uint64\", name: \"feeStableTokenAmount\" },\n ],\n },\n {\n name: \"ReceiveFee\",\n args: [\n { type: \"uint64\", name: \"bridgeTransactionCost\" },\n { type: \"uint64\", name: \"messageTransactionCost\" },\n ],\n },\n {\n name: \"TokensSent\",\n args: [\n { type: \"uint64\", name: \"amount\" },\n { type: \"byte[32]\", name: \"recipient\" },\n { type: \"byte\", name: \"destinationChainId\" },\n { type: \"byte[32]\", name: \"receiveToken\" },\n { type: \"byte[32]\", name: \"nonce\" },\n { type: \"byte\", name: \"messenger\" },\n ],\n },\n {\n name: \"TokensReceived\",\n args: [\n { type: \"uint64\", name: \"receiveAmount\" },\n { type: \"address\", name: \"recipient\" },\n { type: \"byte[32]\", name: \"nonce\" },\n { type: \"byte\", name: \"messenger\" },\n { type: \"byte[32]\", name: \"message\" },\n ],\n },\n {\n name: \"Swapped\",\n args: [\n { type: \"address\", name: \"sender\" },\n { type: \"address\", name: \"recipient\" },\n { type: \"uint64\", name: \"tokenId\" },\n { type: \"uint64\", name: \"receiveTokenId\" },\n { type: \"uint64\", name: \"amount\" },\n { type: \"uint64\", name: \"receivedAmount\" },\n ],\n },\n ],\n templateVariables: {},\n} as unknown as Arc56Contract;\n\n/**\n * A state record containing binary data\n */\nexport interface BinaryState {\n /**\n * Gets the state value as a Uint8Array\n */\n asByteArray(): Uint8Array | undefined;\n /**\n * Gets the state value as a string\n */\n asString(): string | undefined;\n}\n\nclass BinaryStateValue implements BinaryState {\n constructor(private value: Uint8Array | undefined) {}\n\n asByteArray(): Uint8Array | undefined {\n return this.value;\n }\n\n asString(): string | undefined {\n return this.value !== undefined ? Buffer.from(this.value).toString(\"utf-8\") : undefined;\n }\n}\n\n/**\n * Expands types for IntelliSense so they are more human readable\n * See https://stackoverflow.com/a/69288824\n */\nexport type Expand<T> = T extends (...args: infer A) => infer R\n ? (...args: Expand<A>) => Expand<R>\n : T extends infer O\n ? { [K in keyof O]: O[K] }\n : never;\n\n/**\n * The argument types for the Bridge contract\n */\nexport type BridgeArgs = {\n /**\n * The object representation of the arguments for each method\n */\n obj: {\n \"createApplication(address,byte,application,application)void\": {\n owner: string;\n chainId: number;\n messenger: bigint;\n gasOracle: bigint;\n };\n \"optInAsset(uint64)void\": {\n assetId: bigint | number;\n };\n \"noop()void\": Record<string, never>;\n \"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\": {\n tokenId: bigint | number;\n recipient: Uint8Array;\n destinationChainId: number;\n receiveToken: Uint8Array;\n nonce: Uint8Array;\n feeTokenAmount?: bigint | number;\n };\n \"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\": {\n amount: bigint | number;\n recipient: Uint8Array;\n sourceChainId: number;\n receiveToken: Uint8Array;\n nonce: Uint8Array;\n receiveAmountMin: bigint | number;\n };\n \"registerBridge(byte,byte[32])void\": {\n chainId: number;\n bridgeAddress: Uint8Array;\n };\n \"addBridgeToken(byte,byte[32])void\": {\n chainId: number;\n tokenAddress: Uint8Array;\n };\n \"removeBridgeToken(byte,byte[32])void\": {\n chainId: number;\n tokenAddress: Uint8Array;\n };\n \"withdrawGasTokens(uint64)void\": {\n amount: bigint | number;\n };\n \"withdrawBridgingFeeInTokens(uint64)void\": {\n assetId: bigint | number;\n };\n \"getBridgingCostInTokens(byte,uint64)uint64\": {\n destinationChainId: number;\n tokenId: bigint | number;\n };\n \"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\": {\n amount: bigint | number;\n recipient: Uint8Array;\n sourceChainId: number;\n destinationChainId: number;\n receiveToken: Uint8Array;\n nonce: Uint8Array;\n };\n \"isOtherBridgeTokenSupported(byte,byte[32])bool\": {\n chainId: number;\n token: Uint8Array;\n };\n \"getTransactionCost(byte)uint64\": {\n chainId: number;\n };\n \"getReceiveTokensCost()uint64\": Record<string, never>;\n \"getSendTransactionStorageCost()uint64\": Record<string, never>;\n \"swap(uint64,uint64,address,uint64)void\": {\n /**\n * The token to be swapped.\n */\n tokenId: bigint | number;\n /**\n * The token to receive in exchange for the swapped token.\n */\n receiveTokenId: bigint | number;\n /**\n * The address to receive the tokens.\n */\n recipient: string;\n /**\n * The minimum amount of tokens required to receive during the swap.\n */\n receiveAmountMin: bigint | number;\n };\n \"addPool(uint64,uint64)void\": {\n /**\n * The address of the `Pool` contract.\n */\n poolId: bigint | number;\n /**\n * The address of the token in the liquidity pool.\n */\n tokenId: bigint | number;\n };\n \"removePool(uint64)void\": {\n tokenId: bigint | number;\n };\n \"stopSwap()void\": Record<string, never>;\n \"startSwap()void\": Record<string, never>;\n \"setStopAuthority(address)void\": {\n stopAuthority: string;\n };\n \"setRebalancer(address)void\": {\n rebalancer: string;\n };\n \"getGasUsage(byte)uint64\": {\n chainId: number;\n };\n \"setGasUsage(byte,uint64)void\": {\n chainId: number;\n gasAmount: bigint | number;\n };\n \"setGasOracle(application)void\": {\n gasOracle: bigint;\n };\n \"getTransactionRelayerCost(byte)uint64\": {\n chainId: number;\n };\n \"transferOwnership(address)void\": {\n newOwner: string;\n };\n };\n /**\n * The tuple representation of the arguments for each method\n */\n tuple: {\n \"createApplication(address,byte,application,application)void\": [\n owner: string,\n chainId: number,\n messenger: bigint,\n gasOracle: bigint,\n ];\n \"optInAsset(uint64)void\": [assetId: bigint | number];\n \"noop()void\": [];\n \"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\": [\n tokenId: bigint | number,\n recipient: Uint8Array,\n destinationChainId: number,\n receiveToken: Uint8Array,\n nonce: Uint8Array,\n feeTokenAmount: bigint | number | undefined,\n ];\n \"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\": [\n amount: bigint | number,\n recipient: Uint8Array,\n sourceChainId: number,\n receiveToken: Uint8Array,\n nonce: Uint8Array,\n receiveAmountMin: bigint | number,\n ];\n \"registerBridge(byte,byte[32])void\": [chainId: number, bridgeAddress: Uint8Array];\n \"addBridgeToken(byte,byte[32])void\": [chainId: number, tokenAddress: Uint8Array];\n \"removeBridgeToken(byte,byte[32])void\": [chainId: number, tokenAddress: Uint8Array];\n \"withdrawGasTokens(uint64)void\": [amount: bigint | number];\n \"withdrawBridgingFeeInTokens(uint64)void\": [assetId: bigint | number];\n \"getBridgingCostInTokens(byte,uint64)uint64\": [destinationChainId: number, tokenId: bigint | number];\n \"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\": [\n amount: bigint | number,\n recipient: Uint8Array,\n sourceChainId: number,\n destinationChainId: number,\n receiveToken: Uint8Array,\n nonce: Uint8Array,\n ];\n \"isOtherBridgeTokenSupported(byte,byte[32])bool\": [chainId: number, token: Uint8Array];\n \"getTransactionCost(byte)uint64\": [chainId: number];\n \"getReceiveTokensCost()uint64\": [];\n \"getSendTransactionStorageCost()uint64\": [];\n \"swap(uint64,uint64,address,uint64)void\": [\n tokenId: bigint | number,\n receiveTokenId: bigint | number,\n recipient: string,\n receiveAmountMin: bigint | number,\n ];\n \"addPool(uint64,uint64)void\": [poolId: bigint | number, tokenId: bigint | number];\n \"removePool(uint64)void\": [tokenId: bigint | number];\n \"stopSwap()void\": [];\n \"startSwap()void\": [];\n \"setStopAuthority(address)void\": [stopAuthority: string];\n \"setRebalancer(address)void\": [rebalancer: string];\n \"getGasUsage(byte)uint64\": [chainId: number];\n \"setGasUsage(byte,uint64)void\": [chainId: number, gasAmount: bigint | number];\n \"setGasOracle(application)void\": [gasOracle: bigint];\n \"getTransactionRelayerCost(byte)uint64\": [chainId: number];\n \"transferOwnership(address)void\": [newOwner: string];\n };\n};\n\n/**\n * The return type for each method\n */\nexport type BridgeReturns = {\n \"createApplication(address,byte,application,application)void\": void;\n \"optInAsset(uint64)void\": void;\n \"noop()void\": void;\n \"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\": void;\n \"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\": void;\n \"registerBridge(byte,byte[32])void\": void;\n \"addBridgeToken(byte,byte[32])void\": void;\n \"removeBridgeToken(byte,byte[32])void\": void;\n \"withdrawGasTokens(uint64)void\": void;\n \"withdrawBridgingFeeInTokens(uint64)void\": void;\n \"getBridgingCostInTokens(byte,uint64)uint64\": bigint;\n \"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\": Uint8Array;\n \"isOtherBridgeTokenSupported(byte,byte[32])bool\": boolean;\n \"getTransactionCost(byte)uint64\": bigint;\n \"getReceiveTokensCost()uint64\": bigint;\n \"getSendTransactionStorageCost()uint64\": bigint;\n \"swap(uint64,uint64,address,uint64)void\": void;\n \"addPool(uint64,uint64)void\": void;\n \"removePool(uint64)void\": void;\n \"stopSwap()void\": void;\n \"startSwap()void\": void;\n \"setStopAuthority(address)void\": void;\n \"setRebalancer(address)void\": void;\n \"getGasUsage(byte)uint64\": bigint;\n \"setGasUsage(byte,uint64)void\": void;\n \"setGasOracle(application)void\": void;\n \"getTransactionRelayerCost(byte)uint64\": bigint;\n \"transferOwnership(address)void\": void;\n};\n\n/**\n * Defines the types of available calls and state of the Bridge smart contract.\n */\nexport type BridgeTypes = {\n /**\n * Maps method signatures / names to their argument and return types.\n */\n methods: Record<\n \"createApplication(address,byte,application,application)void\" | \"createApplication\",\n {\n argsObj: BridgeArgs[\"obj\"][\"createApplication(address,byte,application,application)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"createApplication(address,byte,application,application)void\"];\n returns: BridgeReturns[\"createApplication(address,byte,application,application)void\"];\n }\n > &\n Record<\n \"optInAsset(uint64)void\" | \"optInAsset\",\n {\n argsObj: BridgeArgs[\"obj\"][\"optInAsset(uint64)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"optInAsset(uint64)void\"];\n returns: BridgeReturns[\"optInAsset(uint64)void\"];\n }\n > &\n Record<\n \"noop()void\" | \"noop\",\n {\n argsObj: BridgeArgs[\"obj\"][\"noop()void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"noop()void\"];\n returns: BridgeReturns[\"noop()void\"];\n }\n > &\n Record<\n \"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\" | \"swapAndBridge\",\n {\n argsObj: BridgeArgs[\"obj\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"];\n returns: BridgeReturns[\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"];\n }\n > &\n Record<\n \"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\" | \"receiveTokens\",\n {\n argsObj: BridgeArgs[\"obj\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"];\n returns: BridgeReturns[\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"];\n }\n > &\n Record<\n \"registerBridge(byte,byte[32])void\" | \"registerBridge\",\n {\n argsObj: BridgeArgs[\"obj\"][\"registerBridge(byte,byte[32])void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"registerBridge(byte,byte[32])void\"];\n returns: BridgeReturns[\"registerBridge(byte,byte[32])void\"];\n }\n > &\n Record<\n \"addBridgeToken(byte,byte[32])void\" | \"addBridgeToken\",\n {\n argsObj: BridgeArgs[\"obj\"][\"addBridgeToken(byte,byte[32])void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"addBridgeToken(byte,byte[32])void\"];\n returns: BridgeReturns[\"addBridgeToken(byte,byte[32])void\"];\n }\n > &\n Record<\n \"removeBridgeToken(byte,byte[32])void\" | \"removeBridgeToken\",\n {\n argsObj: BridgeArgs[\"obj\"][\"removeBridgeToken(byte,byte[32])void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"removeBridgeToken(byte,byte[32])void\"];\n returns: BridgeReturns[\"removeBridgeToken(byte,byte[32])void\"];\n }\n > &\n Record<\n \"withdrawGasTokens(uint64)void\" | \"withdrawGasTokens\",\n {\n argsObj: BridgeArgs[\"obj\"][\"withdrawGasTokens(uint64)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"withdrawGasTokens(uint64)void\"];\n returns: BridgeReturns[\"withdrawGasTokens(uint64)void\"];\n }\n > &\n Record<\n \"withdrawBridgingFeeInTokens(uint64)void\" | \"withdrawBridgingFeeInTokens\",\n {\n argsObj: BridgeArgs[\"obj\"][\"withdrawBridgingFeeInTokens(uint64)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"withdrawBridgingFeeInTokens(uint64)void\"];\n returns: BridgeReturns[\"withdrawBridgingFeeInTokens(uint64)void\"];\n }\n > &\n Record<\n \"getBridgingCostInTokens(byte,uint64)uint64\" | \"getBridgingCostInTokens\",\n {\n argsObj: BridgeArgs[\"obj\"][\"getBridgingCostInTokens(byte,uint64)uint64\"];\n argsTuple: BridgeArgs[\"tuple\"][\"getBridgingCostInTokens(byte,uint64)uint64\"];\n returns: BridgeReturns[\"getBridgingCostInTokens(byte,uint64)uint64\"];\n }\n > &\n Record<\n \"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\" | \"hashMessage\",\n {\n argsObj: BridgeArgs[\"obj\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"];\n argsTuple: BridgeArgs[\"tuple\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"];\n returns: BridgeReturns[\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"];\n }\n > &\n Record<\n \"isOtherBridgeTokenSupported(byte,byte[32])bool\" | \"isOtherBridgeTokenSupported\",\n {\n argsObj: BridgeArgs[\"obj\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"];\n argsTuple: BridgeArgs[\"tuple\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"];\n returns: BridgeReturns[\"isOtherBridgeTokenSupported(byte,byte[32])bool\"];\n }\n > &\n Record<\n \"getTransactionCost(byte)uint64\" | \"getTransactionCost\",\n {\n argsObj: BridgeArgs[\"obj\"][\"getTransactionCost(byte)uint64\"];\n argsTuple: BridgeArgs[\"tuple\"][\"getTransactionCost(byte)uint64\"];\n returns: BridgeReturns[\"getTransactionCost(byte)uint64\"];\n }\n > &\n Record<\n \"getReceiveTokensCost()uint64\" | \"getReceiveTokensCost\",\n {\n argsObj: BridgeArgs[\"obj\"][\"getReceiveTokensCost()uint64\"];\n argsTuple: BridgeArgs[\"tuple\"][\"getReceiveTokensCost()uint64\"];\n returns: BridgeReturns[\"getReceiveTokensCost()uint64\"];\n }\n > &\n Record<\n \"getSendTransactionStorageCost()uint64\" | \"getSendTransactionStorageCost\",\n {\n argsObj: BridgeArgs[\"obj\"][\"getSendTransactionStorageCost()uint64\"];\n argsTuple: BridgeArgs[\"tuple\"][\"getSendTransactionStorageCost()uint64\"];\n returns: BridgeReturns[\"getSendTransactionStorageCost()uint64\"];\n }\n > &\n Record<\n \"swap(uint64,uint64,address,uint64)void\" | \"swap\",\n {\n argsObj: BridgeArgs[\"obj\"][\"swap(uint64,uint64,address,uint64)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"swap(uint64,uint64,address,uint64)void\"];\n returns: BridgeReturns[\"swap(uint64,uint64,address,uint64)void\"];\n }\n > &\n Record<\n \"addPool(uint64,uint64)void\" | \"addPool\",\n {\n argsObj: BridgeArgs[\"obj\"][\"addPool(uint64,uint64)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"addPool(uint64,uint64)void\"];\n returns: BridgeReturns[\"addPool(uint64,uint64)void\"];\n }\n > &\n Record<\n \"removePool(uint64)void\" | \"removePool\",\n {\n argsObj: BridgeArgs[\"obj\"][\"removePool(uint64)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"removePool(uint64)void\"];\n returns: BridgeReturns[\"removePool(uint64)void\"];\n }\n > &\n Record<\n \"stopSwap()void\" | \"stopSwap\",\n {\n argsObj: BridgeArgs[\"obj\"][\"stopSwap()void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"stopSwap()void\"];\n returns: BridgeReturns[\"stopSwap()void\"];\n }\n > &\n Record<\n \"startSwap()void\" | \"startSwap\",\n {\n argsObj: BridgeArgs[\"obj\"][\"startSwap()void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"startSwap()void\"];\n returns: BridgeReturns[\"startSwap()void\"];\n }\n > &\n Record<\n \"setStopAuthority(address)void\" | \"setStopAuthority\",\n {\n argsObj: BridgeArgs[\"obj\"][\"setStopAuthority(address)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"setStopAuthority(address)void\"];\n returns: BridgeReturns[\"setStopAuthority(address)void\"];\n }\n > &\n Record<\n \"setRebalancer(address)void\" | \"setRebalancer\",\n {\n argsObj: BridgeArgs[\"obj\"][\"setRebalancer(address)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"setRebalancer(address)void\"];\n returns: BridgeReturns[\"setRebalancer(address)void\"];\n }\n > &\n Record<\n \"getGasUsage(byte)uint64\" | \"getGasUsage\",\n {\n argsObj: BridgeArgs[\"obj\"][\"getGasUsage(byte)uint64\"];\n argsTuple: BridgeArgs[\"tuple\"][\"getGasUsage(byte)uint64\"];\n returns: BridgeReturns[\"getGasUsage(byte)uint64\"];\n }\n > &\n Record<\n \"setGasUsage(byte,uint64)void\" | \"setGasUsage\",\n {\n argsObj: BridgeArgs[\"obj\"][\"setGasUsage(byte,uint64)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"setGasUsage(byte,uint64)void\"];\n returns: BridgeReturns[\"setGasUsage(byte,uint64)void\"];\n }\n > &\n Record<\n \"setGasOracle(application)void\" | \"setGasOracle\",\n {\n argsObj: BridgeArgs[\"obj\"][\"setGasOracle(application)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"setGasOracle(application)void\"];\n returns: BridgeReturns[\"setGasOracle(application)void\"];\n }\n > &\n Record<\n \"getTransactionRelayerCost(byte)uint64\" | \"getTransactionRelayerCost\",\n {\n argsObj: BridgeArgs[\"obj\"][\"getTransactionRelayerCost(byte)uint64\"];\n argsTuple: BridgeArgs[\"tuple\"][\"getTransactionRelayerCost(byte)uint64\"];\n returns: BridgeReturns[\"getTransactionRelayerCost(byte)uint64\"];\n }\n > &\n Record<\n \"transferOwnership(address)void\" | \"transferOwnership\",\n {\n argsObj: BridgeArgs[\"obj\"][\"transferOwnership(address)void\"];\n argsTuple: BridgeArgs[\"tuple\"][\"transferOwnership(address)void\"];\n returns: BridgeReturns[\"transferOwnership(address)void\"];\n }\n >;\n /**\n * Defines the shape of the state of the application.\n */\n state: {\n global: {\n keys: {\n chainId: number;\n messenger: bigint;\n stopAuthority: string;\n rebalancer: string;\n canSwap: bigint;\n gasOracle: bigint;\n owner: string;\n };\n maps: {};\n };\n box: {\n keys: {};\n maps: {\n processedMessages: Map<Uint8Array, Uint8Array>;\n sentMessages: Map<Uint8Array, Uint8Array>;\n otherBridges: Map<number, Uint8Array>;\n otherBridgeTokens: Map<Uint8Array | string, Uint8Array>;\n pools: Map<bigint | number, bigint>;\n fromGasOracleScalingFactor: Map<bigint | number, bigint>;\n bridgingFeeConversionScalingFactor: Map<bigint | number, bigint>;\n gasUsage: Map<number, bigint>;\n };\n };\n };\n};\n\n/**\n * Defines the possible abi call signatures.\n */\nexport type BridgeSignatures = keyof BridgeTypes[\"methods\"];\n/**\n * Defines the possible abi call signatures for methods that return a non-void value.\n */\nexport type BridgeNonVoidMethodSignatures = keyof BridgeTypes[\"methods\"] extends infer T\n ? T extends keyof BridgeTypes[\"methods\"]\n ? MethodReturn<T> extends void\n ? never\n : T\n : never\n : never;\n/**\n * Defines an object containing all relevant parameters for a single call to the contract.\n */\nexport type CallParams<TArgs> = Expand<\n Omit<AppClientMethodCallParams, \"method\" | \"args\" | \"onComplete\"> & {\n /** The args for the ABI method call, either as an ordered array or an object */\n args: Expand<TArgs>;\n }\n>;\n/**\n * Maps a method signature from the Bridge smart contract to the method's arguments in either tuple or struct form\n */\nexport type MethodArgs<TSignature extends BridgeSignatures> = BridgeTypes[\"methods\"][TSignature][\n | \"argsObj\"\n | \"argsTuple\"];\n/**\n * Maps a method signature from the Bridge smart contract to the method's return type\n */\nexport type MethodReturn<TSignature extends BridgeSignatures> = BridgeTypes[\"methods\"][TSignature][\"returns\"];\n\n/**\n * Defines the shape of the keyed global state of the application.\n */\nexport type GlobalKeysState = BridgeTypes[\"state\"][\"global\"][\"keys\"];\n\n/**\n * Defines the shape of the keyed box state of the application.\n */\nexport type BoxKeysState = BridgeTypes[\"state\"][\"box\"][\"keys\"];\n\n/**\n * Defines supported create method params for this smart contract\n */\nexport type BridgeCreateCallParams =\n | Expand<\n CallParams<\n | BridgeArgs[\"obj\"][\"createApplication(address,byte,application,application)void\"]\n | BridgeArgs[\"tuple\"][\"createApplication(address,byte,application,application)void\"]\n > & { method: \"createApplication\" } & { onComplete?: OnApplicationComplete.NoOpOC } & CreateSchema\n >\n | Expand<\n CallParams<\n | BridgeArgs[\"obj\"][\"createApplication(address,byte,application,application)void\"]\n | BridgeArgs[\"tuple\"][\"createApplication(address,byte,application,application)void\"]\n > & { method: \"createApplication(address,byte,application,application)void\" } & {\n onComplete?: OnApplicationComplete.NoOpOC;\n } & CreateSchema\n >;\n/**\n * Defines arguments required for the deploy method.\n */\nexport type BridgeDeployParams = Expand<\n Omit<AppFactoryDeployParams, \"createParams\" | \"updateParams\" | \"deleteParams\"> & {\n /**\n * Create transaction parameters to use if a create needs to be issued as part of deployment; use `method` to define ABI call (if available) or leave out for a bare call (if available)\n */\n createParams?: BridgeCreateCallParams;\n }\n>;\n\n/**\n * Exposes methods for constructing `AppClient` params objects for ABI calls to the Bridge smart contract\n */\nexport abstract class BridgeParamsFactory {\n /**\n * Gets available create ABI call param factories\n */\n static get create() {\n return {\n _resolveByMethod<TParams extends BridgeCreateCallParams & { method: string }>(params: TParams) {\n switch (params.method) {\n case \"createApplication\":\n case \"createApplication(address,byte,application,application)void\":\n return BridgeParamsFactory.create.createApplication(params);\n }\n throw new Error(`Unknown ' + verb + ' method`);\n },\n\n /**\n * Constructs create ABI call params for the Bridge smart contract using the createApplication(address,byte,application,application)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n createApplication(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"createApplication(address,byte,application,application)void\"]\n | BridgeArgs[\"tuple\"][\"createApplication(address,byte,application,application)void\"]\n > &\n AppClientCompilationParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ): AppClientMethodCallParams & AppClientCompilationParams & { onComplete?: OnApplicationComplete.NoOpOC } {\n return {\n ...params,\n method: \"createApplication(address,byte,application,application)void\" as const,\n args: Array.isArray(params.args)\n ? params.args\n : [params.args.owner, params.args.chainId, params.args.messenger, params.args.gasOracle],\n };\n },\n };\n }\n\n /**\n * Constructs a no op call for the optInAsset(uint64)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static optInAsset(\n params: CallParams<BridgeArgs[\"obj\"][\"optInAsset(uint64)void\"] | BridgeArgs[\"tuple\"][\"optInAsset(uint64)void\"]> &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"optInAsset(uint64)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.assetId],\n };\n }\n /**\n * Constructs a no op call for the noop()void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static noop(\n params: CallParams<BridgeArgs[\"obj\"][\"noop()void\"] | BridgeArgs[\"tuple\"][\"noop()void\"]> & CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"noop()void\" as const,\n args: Array.isArray(params.args) ? params.args : [],\n };\n }\n /**\n * Constructs a no op call for the swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static swapAndBridge(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\" as const,\n args: Array.isArray(params.args)\n ? params.args\n : [\n params.args.tokenId,\n params.args.recipient,\n params.args.destinationChainId,\n params.args.receiveToken,\n params.args.nonce,\n params.args.feeTokenAmount,\n ],\n };\n }\n /**\n * Constructs a no op call for the receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static receiveTokens(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\" as const,\n args: Array.isArray(params.args)\n ? params.args\n : [\n params.args.amount,\n params.args.recipient,\n params.args.sourceChainId,\n params.args.receiveToken,\n params.args.nonce,\n params.args.receiveAmountMin,\n ],\n };\n }\n /**\n * Constructs a no op call for the registerBridge(byte,byte[32])void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static registerBridge(\n params: CallParams<\n BridgeArgs[\"obj\"][\"registerBridge(byte,byte[32])void\"] | BridgeArgs[\"tuple\"][\"registerBridge(byte,byte[32])void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"registerBridge(byte,byte[32])void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.chainId, params.args.bridgeAddress],\n };\n }\n /**\n * Constructs a no op call for the addBridgeToken(byte,byte[32])void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static addBridgeToken(\n params: CallParams<\n BridgeArgs[\"obj\"][\"addBridgeToken(byte,byte[32])void\"] | BridgeArgs[\"tuple\"][\"addBridgeToken(byte,byte[32])void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"addBridgeToken(byte,byte[32])void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.chainId, params.args.tokenAddress],\n };\n }\n /**\n * Constructs a no op call for the removeBridgeToken(byte,byte[32])void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static removeBridgeToken(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"removeBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"removeBridgeToken(byte,byte[32])void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"removeBridgeToken(byte,byte[32])void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.chainId, params.args.tokenAddress],\n };\n }\n /**\n * Constructs a no op call for the withdrawGasTokens(uint64)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static withdrawGasTokens(\n params: CallParams<\n BridgeArgs[\"obj\"][\"withdrawGasTokens(uint64)void\"] | BridgeArgs[\"tuple\"][\"withdrawGasTokens(uint64)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"withdrawGasTokens(uint64)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.amount],\n };\n }\n /**\n * Constructs a no op call for the withdrawBridgingFeeInTokens(uint64)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static withdrawBridgingFeeInTokens(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n | BridgeArgs[\"tuple\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"withdrawBridgingFeeInTokens(uint64)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.assetId],\n };\n }\n /**\n * Constructs a no op call for the getBridgingCostInTokens(byte,uint64)uint64 ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static getBridgingCostInTokens(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n | BridgeArgs[\"tuple\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"getBridgingCostInTokens(byte,uint64)uint64\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.destinationChainId, params.args.tokenId],\n };\n }\n /**\n * Constructs a no op call for the hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32] ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static hashMessage(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n | BridgeArgs[\"tuple\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\" as const,\n args: Array.isArray(params.args)\n ? params.args\n : [\n params.args.amount,\n params.args.recipient,\n params.args.sourceChainId,\n params.args.destinationChainId,\n params.args.receiveToken,\n params.args.nonce,\n ],\n };\n }\n /**\n * Constructs a no op call for the isOtherBridgeTokenSupported(byte,byte[32])bool ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static isOtherBridgeTokenSupported(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n | BridgeArgs[\"tuple\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"isOtherBridgeTokenSupported(byte,byte[32])bool\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.chainId, params.args.token],\n };\n }\n /**\n * Constructs a no op call for the getTransactionCost(byte)uint64 ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static getTransactionCost(\n params: CallParams<\n BridgeArgs[\"obj\"][\"getTransactionCost(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getTransactionCost(byte)uint64\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"getTransactionCost(byte)uint64\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.chainId],\n };\n }\n /**\n * Constructs a no op call for the getReceiveTokensCost()uint64 ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static getReceiveTokensCost(\n params: CallParams<\n BridgeArgs[\"obj\"][\"getReceiveTokensCost()uint64\"] | BridgeArgs[\"tuple\"][\"getReceiveTokensCost()uint64\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"getReceiveTokensCost()uint64\" as const,\n args: Array.isArray(params.args) ? params.args : [],\n };\n }\n /**\n * Constructs a no op call for the getSendTransactionStorageCost()uint64 ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static getSendTransactionStorageCost(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getSendTransactionStorageCost()uint64\"]\n | BridgeArgs[\"tuple\"][\"getSendTransactionStorageCost()uint64\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"getSendTransactionStorageCost()uint64\" as const,\n args: Array.isArray(params.args) ? params.args : [],\n };\n }\n /**\n * Constructs a no op call for the swap(uint64,uint64,address,uint64)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static swap(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swap(uint64,uint64,address,uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swap(uint64,uint64,address,uint64)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"swap(uint64,uint64,address,uint64)void\" as const,\n args: Array.isArray(params.args)\n ? params.args\n : [params.args.tokenId, params.args.receiveTokenId, params.args.recipient, params.args.receiveAmountMin],\n };\n }\n /**\n * Constructs a no op call for the addPool(uint64,uint64)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static addPool(\n params: CallParams<\n BridgeArgs[\"obj\"][\"addPool(uint64,uint64)void\"] | BridgeArgs[\"tuple\"][\"addPool(uint64,uint64)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"addPool(uint64,uint64)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.poolId, params.args.tokenId],\n };\n }\n /**\n * Constructs a no op call for the removePool(uint64)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static removePool(\n params: CallParams<BridgeArgs[\"obj\"][\"removePool(uint64)void\"] | BridgeArgs[\"tuple\"][\"removePool(uint64)void\"]> &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"removePool(uint64)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.tokenId],\n };\n }\n /**\n * Constructs a no op call for the stopSwap()void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static stopSwap(\n params: CallParams<BridgeArgs[\"obj\"][\"stopSwap()void\"] | BridgeArgs[\"tuple\"][\"stopSwap()void\"]> & CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"stopSwap()void\" as const,\n args: Array.isArray(params.args) ? params.args : [],\n };\n }\n /**\n * Constructs a no op call for the startSwap()void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static startSwap(\n params: CallParams<BridgeArgs[\"obj\"][\"startSwap()void\"] | BridgeArgs[\"tuple\"][\"startSwap()void\"]> & CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"startSwap()void\" as const,\n args: Array.isArray(params.args) ? params.args : [],\n };\n }\n /**\n * Constructs a no op call for the setStopAuthority(address)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static setStopAuthority(\n params: CallParams<\n BridgeArgs[\"obj\"][\"setStopAuthority(address)void\"] | BridgeArgs[\"tuple\"][\"setStopAuthority(address)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"setStopAuthority(address)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.stopAuthority],\n };\n }\n /**\n * Constructs a no op call for the setRebalancer(address)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static setRebalancer(\n params: CallParams<\n BridgeArgs[\"obj\"][\"setRebalancer(address)void\"] | BridgeArgs[\"tuple\"][\"setRebalancer(address)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"setRebalancer(address)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.rebalancer],\n };\n }\n /**\n * Constructs a no op call for the getGasUsage(byte)uint64 ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static getGasUsage(\n params: CallParams<BridgeArgs[\"obj\"][\"getGasUsage(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getGasUsage(byte)uint64\"]> &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"getGasUsage(byte)uint64\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.chainId],\n };\n }\n /**\n * Constructs a no op call for the setGasUsage(byte,uint64)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static setGasUsage(\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasUsage(byte,uint64)void\"] | BridgeArgs[\"tuple\"][\"setGasUsage(byte,uint64)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"setGasUsage(byte,uint64)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.chainId, params.args.gasAmount],\n };\n }\n /**\n * Constructs a no op call for the setGasOracle(application)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static setGasOracle(\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasOracle(application)void\"] | BridgeArgs[\"tuple\"][\"setGasOracle(application)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"setGasOracle(application)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.gasOracle],\n };\n }\n /**\n * Constructs a no op call for the getTransactionRelayerCost(byte)uint64 ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static getTransactionRelayerCost(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getTransactionRelayerCost(byte)uint64\"]\n | BridgeArgs[\"tuple\"][\"getTransactionRelayerCost(byte)uint64\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"getTransactionRelayerCost(byte)uint64\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.chainId],\n };\n }\n /**\n * Constructs a no op call for the transferOwnership(address)void ABI method\n *\n * @param params Parameters for the call\n * @returns An `AppClientMethodCallParams` object for the call\n */\n static transferOwnership(\n params: CallParams<\n BridgeArgs[\"obj\"][\"transferOwnership(address)void\"] | BridgeArgs[\"tuple\"][\"transferOwnership(address)void\"]\n > &\n CallOnComplete\n ): AppClientMethodCallParams & CallOnComplete {\n return {\n ...params,\n method: \"transferOwnership(address)void\" as const,\n args: Array.isArray(params.args) ? params.args : [params.args.newOwner],\n };\n }\n}\n\n/**\n * A factory to create and deploy one or more instance of the Bridge smart contract and to create one or more app clients to interact with those (or other) app instances\n */\nexport class BridgeFactory {\n /**\n * The underlying `AppFactory` for when you want to have more flexibility\n */\n public readonly appFactory: _AppFactory;\n\n /**\n * Creates a new instance of `BridgeFactory`\n *\n * @param params The parameters to initialise the app factory with\n */\n constructor(params: Omit<AppFactoryParams, \"appSpec\">) {\n this.appFactory = new _AppFactory({\n ...params,\n appSpec: APP_SPEC,\n });\n }\n\n /** The name of the app (from the ARC-32 / ARC-56 app spec or override). */\n public get appName() {\n return this.appFactory.appName;\n }\n\n /** The ARC-56 app spec being used */\n get appSpec() {\n return APP_SPEC;\n }\n\n /** A reference to the underlying `AlgorandClient` this app factory is using. */\n public get algorand(): AlgorandClient {\n return this.appFactory.algorand;\n }\n\n /**\n * Returns a new `AppClient` client for an app instance of the given ID.\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The `AppClient`\n */\n public getAppClientById(params: AppFactoryAppClientParams) {\n return new BridgeClient(this.appFactory.getAppClientById(params));\n }\n\n /**\n * Returns a new `AppClient` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n *\n * Automatically populates appName, defaultSender and source maps from the factory\n * if not specified in the params.\n * @param params The parameters to create the app client\n * @returns The `AppClient`\n */\n public async getAppClientByCreatorAndName(params: AppFactoryResolveAppClientByCreatorAndNameParams) {\n return new BridgeClient(await this.appFactory.getAppClientByCreatorAndName(params));\n }\n\n /**\n * Idempotently deploys the Bridge smart contract.\n *\n * @param params The arguments for the contract calls and any additional parameters for the call\n * @returns The deployment result\n */\n public async deploy(params: BridgeDeployParams = {}) {\n const result = await this.appFactory.deploy({\n ...params,\n createParams: params.createParams?.method\n ? BridgeParamsFactory.create._resolveByMethod(params.createParams)\n : params.createParams\n ? (params.createParams as BridgeCreateCallParams & { args: Uint8Array[] })\n : undefined,\n });\n return { result: result.result, appClient: new BridgeClient(result.appClient) };\n }\n\n /**\n * Get parameters to create transactions (create and deploy related calls) for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.\n */\n readonly params = {\n /**\n * Gets available create methods\n */\n create: {\n /**\n * Creates a new instance of the Bridge smart contract using the createApplication(address,byte,application,application)void ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The create params\n */\n createApplication: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"createApplication(address,byte,application,application)void\"]\n | BridgeArgs[\"tuple\"][\"createApplication(address,byte,application,application)void\"]\n > &\n AppClientCompilationParams &\n CreateSchema & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appFactory.params.create(BridgeParamsFactory.create.createApplication(params));\n },\n },\n };\n\n /**\n * Create transactions for the current app\n */\n readonly createTransaction = {\n /**\n * Gets available create methods\n */\n create: {\n /**\n * Creates a new instance of the Bridge smart contract using the createApplication(address,byte,application,application)void ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The create transaction\n */\n createApplication: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"createApplication(address,byte,application,application)void\"]\n | BridgeArgs[\"tuple\"][\"createApplication(address,byte,application,application)void\"]\n > &\n AppClientCompilationParams &\n CreateSchema & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appFactory.createTransaction.create(BridgeParamsFactory.create.createApplication(params));\n },\n },\n };\n\n /**\n * Send calls to the current app\n */\n readonly send = {\n /**\n * Gets available create methods\n */\n create: {\n /**\n * Creates a new instance of the Bridge smart contract using an ABI method call using the createApplication(address,byte,application,application)void ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The create result\n */\n createApplication: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"createApplication(address,byte,application,application)void\"]\n | BridgeArgs[\"tuple\"][\"createApplication(address,byte,application,application)void\"]\n > &\n AppClientCompilationParams &\n CreateSchema &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appFactory.send.create(BridgeParamsFactory.create.createApplication(params));\n return {\n result: {\n ...result.result,\n return: result.result.return as unknown as\n | undefined\n | BridgeReturns[\"createApplication(address,byte,application,application)void\"],\n },\n appClient: new BridgeClient(result.appClient),\n };\n },\n },\n };\n}\n/**\n * A client to make calls to the Bridge smart contract\n */\nexport class BridgeClient {\n /**\n * The underlying `AppClient` for when you want to have more flexibility\n */\n public readonly appClient: _AppClient;\n\n /**\n * Creates a new instance of `BridgeClient`\n *\n * @param appClient An `AppClient` instance which has been created with the Bridge app spec\n */\n constructor(appClient: _AppClient);\n /**\n * Creates a new instance of `BridgeClient`\n *\n * @param params The parameters to initialise the app client with\n */\n constructor(params: Omit<AppClientParams, \"appSpec\">);\n constructor(appClientOrParams: _AppClient | Omit<AppClientParams, \"appSpec\">) {\n this.appClient =\n appClientOrParams instanceof _AppClient\n ? appClientOrParams\n : new _AppClient({\n ...appClientOrParams,\n appSpec: APP_SPEC,\n });\n }\n\n /**\n * Checks for decode errors on the given return value and maps the return value to the return type for the given method\n * @returns The typed return value or undefined if there was no value\n */\n decodeReturnValue<TSignature extends BridgeNonVoidMethodSignatures>(\n method: TSignature,\n returnValue: ABIReturn | undefined\n ) {\n return returnValue !== undefined\n ? getArc56ReturnValue<MethodReturn<TSignature>>(\n returnValue,\n this.appClient.getABIMethod(method),\n APP_SPEC.structs\n )\n : undefined;\n }\n\n /**\n * Returns a new `BridgeClient` client, resolving the app by creator address and name\n * using AlgoKit app deployment semantics (i.e. looking for the app creation transaction note).\n * @param params The parameters to create the app client\n */\n public static async fromCreatorAndName(\n params: Omit<ResolveAppClientByCreatorAndName, \"appSpec\">\n ): Promise<BridgeClient> {\n return new BridgeClient(await _AppClient.fromCreatorAndName({ ...params, appSpec: APP_SPEC }));\n }\n\n /**\n * Returns an `BridgeClient` instance for the current network based on\n * pre-determined network-specific app IDs specified in the ARC-56 app spec.\n *\n * If no IDs are in the app spec or the network isn't recognised, an error is thrown.\n * @param params The parameters to create the app client\n */\n static async fromNetwork(params: Omit<ResolveAppClientByNetwork, \"appSpec\">): Promise<BridgeClient> {\n return new BridgeClient(await _AppClient.fromNetwork({ ...params, appSpec: APP_SPEC }));\n }\n\n /** The ID of the app instance this client is linked to. */\n public get appId() {\n return this.appClient.appId;\n }\n\n /** The app address of the app instance this client is linked to. */\n public get appAddress() {\n return this.appClient.appAddress;\n }\n\n /** The name of the app. */\n public get appName() {\n return this.appClient.appName;\n }\n\n /** The ARC-56 app spec being used */\n public get appSpec() {\n return this.appClient.appSpec;\n }\n\n /** A reference to the underlying `AlgorandClient` this app client is using. */\n public get algorand(): AlgorandClient {\n return this.appClient.algorand;\n }\n\n /**\n * Get parameters to create transactions for the current app. A good mental model for this is that these parameters represent a deferred transaction creation.\n */\n readonly params = {\n /**\n * Makes a clear_state call to an existing instance of the Bridge smart contract.\n *\n * @param params The params for the bare (raw) call\n * @returns The clearState result\n */\n clearState: (params?: Expand<AppClientBareCallParams>) => {\n return this.appClient.params.bare.clearState(params);\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `optInAsset(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n optInAsset: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"optInAsset(uint64)void\"] | BridgeArgs[\"tuple\"][\"optInAsset(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.optInAsset(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `noop()void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n noop: (\n params: CallParams<BridgeArgs[\"obj\"][\"noop()void\"] | BridgeArgs[\"tuple\"][\"noop()void\"]> & {\n onComplete?: OnApplicationComplete.NoOpOC;\n } = { args: [] }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.noop(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n swapAndBridge: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.swapAndBridge(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n receiveTokens: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.receiveTokens(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `registerBridge(byte,byte[32])void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n registerBridge: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"registerBridge(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"registerBridge(byte,byte[32])void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.registerBridge(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `addBridgeToken(byte,byte[32])void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n addBridgeToken: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"addBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"addBridgeToken(byte,byte[32])void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.addBridgeToken(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `removeBridgeToken(byte,byte[32])void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n removeBridgeToken: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"removeBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"removeBridgeToken(byte,byte[32])void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.removeBridgeToken(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `withdrawGasTokens(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n withdrawGasTokens: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"withdrawGasTokens(uint64)void\"] | BridgeArgs[\"tuple\"][\"withdrawGasTokens(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.withdrawGasTokens(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `withdrawBridgingFeeInTokens(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n withdrawBridgingFeeInTokens: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n | BridgeArgs[\"tuple\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.withdrawBridgingFeeInTokens(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getBridgingCostInTokens(byte,uint64)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n getBridgingCostInTokens: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n | BridgeArgs[\"tuple\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.getBridgingCostInTokens(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n hashMessage: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n | BridgeArgs[\"tuple\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.hashMessage(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `isOtherBridgeTokenSupported(byte,byte[32])bool` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n isOtherBridgeTokenSupported: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n | BridgeArgs[\"tuple\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.isOtherBridgeTokenSupported(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getTransactionCost(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n getTransactionCost: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"getTransactionCost(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getTransactionCost(byte)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.getTransactionCost(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getReceiveTokensCost()uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n getReceiveTokensCost: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"getReceiveTokensCost()uint64\"] | BridgeArgs[\"tuple\"][\"getReceiveTokensCost()uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC } = { args: [] }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.getReceiveTokensCost(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getSendTransactionStorageCost()uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n getSendTransactionStorageCost: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getSendTransactionStorageCost()uint64\"]\n | BridgeArgs[\"tuple\"][\"getSendTransactionStorageCost()uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC } = { args: [] }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.getSendTransactionStorageCost(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `swap(uint64,uint64,address,uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n swap: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swap(uint64,uint64,address,uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swap(uint64,uint64,address,uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.swap(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `addPool(uint64,uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n addPool: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"addPool(uint64,uint64)void\"] | BridgeArgs[\"tuple\"][\"addPool(uint64,uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.addPool(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `removePool(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n removePool: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"removePool(uint64)void\"] | BridgeArgs[\"tuple\"][\"removePool(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.removePool(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `stopSwap()void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n stopSwap: (\n params: CallParams<BridgeArgs[\"obj\"][\"stopSwap()void\"] | BridgeArgs[\"tuple\"][\"stopSwap()void\"]> & {\n onComplete?: OnApplicationComplete.NoOpOC;\n } = { args: [] }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.stopSwap(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `startSwap()void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n startSwap: (\n params: CallParams<BridgeArgs[\"obj\"][\"startSwap()void\"] | BridgeArgs[\"tuple\"][\"startSwap()void\"]> & {\n onComplete?: OnApplicationComplete.NoOpOC;\n } = { args: [] }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.startSwap(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setStopAuthority(address)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n setStopAuthority: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setStopAuthority(address)void\"] | BridgeArgs[\"tuple\"][\"setStopAuthority(address)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.setStopAuthority(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setRebalancer(address)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n setRebalancer: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setRebalancer(address)void\"] | BridgeArgs[\"tuple\"][\"setRebalancer(address)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.setRebalancer(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getGasUsage(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n getGasUsage: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"getGasUsage(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getGasUsage(byte)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.getGasUsage(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setGasUsage(byte,uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n setGasUsage: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasUsage(byte,uint64)void\"] | BridgeArgs[\"tuple\"][\"setGasUsage(byte,uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.setGasUsage(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setGasOracle(application)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n setGasOracle: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasOracle(application)void\"] | BridgeArgs[\"tuple\"][\"setGasOracle(application)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.setGasOracle(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getTransactionRelayerCost(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n getTransactionRelayerCost: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getTransactionRelayerCost(byte)uint64\"]\n | BridgeArgs[\"tuple\"][\"getTransactionRelayerCost(byte)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.getTransactionRelayerCost(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `transferOwnership(address)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call params\n */\n transferOwnership: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"transferOwnership(address)void\"] | BridgeArgs[\"tuple\"][\"transferOwnership(address)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.params.call(BridgeParamsFactory.transferOwnership(params));\n },\n };\n\n /**\n * Create transactions for the current app\n */\n readonly createTransaction = {\n /**\n * Makes a clear_state call to an existing instance of the Bridge smart contract.\n *\n * @param params The params for the bare (raw) call\n * @returns The clearState result\n */\n clearState: (params?: Expand<AppClientBareCallParams>) => {\n return this.appClient.createTransaction.bare.clearState(params);\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `optInAsset(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n optInAsset: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"optInAsset(uint64)void\"] | BridgeArgs[\"tuple\"][\"optInAsset(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.optInAsset(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `noop()void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n noop: (\n params: CallParams<BridgeArgs[\"obj\"][\"noop()void\"] | BridgeArgs[\"tuple\"][\"noop()void\"]> & {\n onComplete?: OnApplicationComplete.NoOpOC;\n } = { args: [] }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.noop(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n swapAndBridge: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.swapAndBridge(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n receiveTokens: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.receiveTokens(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `registerBridge(byte,byte[32])void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n registerBridge: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"registerBridge(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"registerBridge(byte,byte[32])void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.registerBridge(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `addBridgeToken(byte,byte[32])void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n addBridgeToken: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"addBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"addBridgeToken(byte,byte[32])void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.addBridgeToken(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `removeBridgeToken(byte,byte[32])void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n removeBridgeToken: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"removeBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"removeBridgeToken(byte,byte[32])void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.removeBridgeToken(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `withdrawGasTokens(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n withdrawGasTokens: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"withdrawGasTokens(uint64)void\"] | BridgeArgs[\"tuple\"][\"withdrawGasTokens(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.withdrawGasTokens(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `withdrawBridgingFeeInTokens(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n withdrawBridgingFeeInTokens: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n | BridgeArgs[\"tuple\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.withdrawBridgingFeeInTokens(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getBridgingCostInTokens(byte,uint64)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n getBridgingCostInTokens: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n | BridgeArgs[\"tuple\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.getBridgingCostInTokens(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n hashMessage: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n | BridgeArgs[\"tuple\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.hashMessage(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `isOtherBridgeTokenSupported(byte,byte[32])bool` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n isOtherBridgeTokenSupported: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n | BridgeArgs[\"tuple\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.isOtherBridgeTokenSupported(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getTransactionCost(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n getTransactionCost: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"getTransactionCost(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getTransactionCost(byte)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.getTransactionCost(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getReceiveTokensCost()uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n getReceiveTokensCost: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"getReceiveTokensCost()uint64\"] | BridgeArgs[\"tuple\"][\"getReceiveTokensCost()uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC } = { args: [] }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.getReceiveTokensCost(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getSendTransactionStorageCost()uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n getSendTransactionStorageCost: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getSendTransactionStorageCost()uint64\"]\n | BridgeArgs[\"tuple\"][\"getSendTransactionStorageCost()uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC } = { args: [] }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.getSendTransactionStorageCost(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `swap(uint64,uint64,address,uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n swap: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swap(uint64,uint64,address,uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swap(uint64,uint64,address,uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.swap(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `addPool(uint64,uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n addPool: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"addPool(uint64,uint64)void\"] | BridgeArgs[\"tuple\"][\"addPool(uint64,uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.addPool(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `removePool(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n removePool: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"removePool(uint64)void\"] | BridgeArgs[\"tuple\"][\"removePool(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.removePool(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `stopSwap()void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n stopSwap: (\n params: CallParams<BridgeArgs[\"obj\"][\"stopSwap()void\"] | BridgeArgs[\"tuple\"][\"stopSwap()void\"]> & {\n onComplete?: OnApplicationComplete.NoOpOC;\n } = { args: [] }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.stopSwap(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `startSwap()void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n startSwap: (\n params: CallParams<BridgeArgs[\"obj\"][\"startSwap()void\"] | BridgeArgs[\"tuple\"][\"startSwap()void\"]> & {\n onComplete?: OnApplicationComplete.NoOpOC;\n } = { args: [] }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.startSwap(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setStopAuthority(address)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n setStopAuthority: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setStopAuthority(address)void\"] | BridgeArgs[\"tuple\"][\"setStopAuthority(address)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.setStopAuthority(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setRebalancer(address)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n setRebalancer: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setRebalancer(address)void\"] | BridgeArgs[\"tuple\"][\"setRebalancer(address)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.setRebalancer(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getGasUsage(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n getGasUsage: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"getGasUsage(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getGasUsage(byte)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.getGasUsage(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setGasUsage(byte,uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n setGasUsage: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasUsage(byte,uint64)void\"] | BridgeArgs[\"tuple\"][\"setGasUsage(byte,uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.setGasUsage(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setGasOracle(application)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n setGasOracle: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasOracle(application)void\"] | BridgeArgs[\"tuple\"][\"setGasOracle(application)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.setGasOracle(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getTransactionRelayerCost(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n getTransactionRelayerCost: (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getTransactionRelayerCost(byte)uint64\"]\n | BridgeArgs[\"tuple\"][\"getTransactionRelayerCost(byte)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.getTransactionRelayerCost(params));\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `transferOwnership(address)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call transaction\n */\n transferOwnership: (\n params: CallParams<\n BridgeArgs[\"obj\"][\"transferOwnership(address)void\"] | BridgeArgs[\"tuple\"][\"transferOwnership(address)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n return this.appClient.createTransaction.call(BridgeParamsFactory.transferOwnership(params));\n },\n };\n\n /**\n * Send calls to the current app\n */\n readonly send = {\n /**\n * Makes a clear_state call to an existing instance of the Bridge smart contract.\n *\n * @param params The params for the bare (raw) call\n * @returns The clearState result\n */\n clearState: (params?: Expand<AppClientBareCallParams & SendParams>) => {\n return this.appClient.send.bare.clearState(params);\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `optInAsset(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n optInAsset: async (\n params: CallParams<BridgeArgs[\"obj\"][\"optInAsset(uint64)void\"] | BridgeArgs[\"tuple\"][\"optInAsset(uint64)void\"]> &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.optInAsset(params));\n return { ...result, return: result.return as unknown as undefined | BridgeReturns[\"optInAsset(uint64)void\"] };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `noop()void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n noop: async (\n params: CallParams<BridgeArgs[\"obj\"][\"noop()void\"] | BridgeArgs[\"tuple\"][\"noop()void\"]> &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC } = { args: [] }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.noop(params));\n return { ...result, return: result.return as unknown as undefined | BridgeReturns[\"noop()void\"] };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n swapAndBridge: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.swapAndBridge(params));\n return {\n ...result,\n return: result.return as unknown as\n | undefined\n | BridgeReturns[\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n receiveTokens: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.receiveTokens(params));\n return {\n ...result,\n return: result.return as unknown as\n | undefined\n | BridgeReturns[\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `registerBridge(byte,byte[32])void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n registerBridge: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"registerBridge(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"registerBridge(byte,byte[32])void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.registerBridge(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"registerBridge(byte,byte[32])void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `addBridgeToken(byte,byte[32])void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n addBridgeToken: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"addBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"addBridgeToken(byte,byte[32])void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.addBridgeToken(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"addBridgeToken(byte,byte[32])void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `removeBridgeToken(byte,byte[32])void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n removeBridgeToken: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"removeBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"removeBridgeToken(byte,byte[32])void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.removeBridgeToken(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"removeBridgeToken(byte,byte[32])void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `withdrawGasTokens(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n withdrawGasTokens: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"withdrawGasTokens(uint64)void\"] | BridgeArgs[\"tuple\"][\"withdrawGasTokens(uint64)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.withdrawGasTokens(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"withdrawGasTokens(uint64)void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `withdrawBridgingFeeInTokens(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n withdrawBridgingFeeInTokens: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n | BridgeArgs[\"tuple\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.withdrawBridgingFeeInTokens(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"withdrawBridgingFeeInTokens(uint64)void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getBridgingCostInTokens(byte,uint64)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n getBridgingCostInTokens: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n | BridgeArgs[\"tuple\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.getBridgingCostInTokens(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"getBridgingCostInTokens(byte,uint64)uint64\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n hashMessage: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n | BridgeArgs[\"tuple\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.hashMessage(params));\n return {\n ...result,\n return: result.return as unknown as\n | undefined\n | BridgeReturns[\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `isOtherBridgeTokenSupported(byte,byte[32])bool` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n isOtherBridgeTokenSupported: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n | BridgeArgs[\"tuple\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.isOtherBridgeTokenSupported(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"isOtherBridgeTokenSupported(byte,byte[32])bool\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getTransactionCost(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n getTransactionCost: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"getTransactionCost(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getTransactionCost(byte)uint64\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.getTransactionCost(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"getTransactionCost(byte)uint64\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getReceiveTokensCost()uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n getReceiveTokensCost: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"getReceiveTokensCost()uint64\"] | BridgeArgs[\"tuple\"][\"getReceiveTokensCost()uint64\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC } = { args: [] }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.getReceiveTokensCost(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"getReceiveTokensCost()uint64\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getSendTransactionStorageCost()uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n getSendTransactionStorageCost: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getSendTransactionStorageCost()uint64\"]\n | BridgeArgs[\"tuple\"][\"getSendTransactionStorageCost()uint64\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC } = { args: [] }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.getSendTransactionStorageCost(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"getSendTransactionStorageCost()uint64\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `swap(uint64,uint64,address,uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n swap: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swap(uint64,uint64,address,uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swap(uint64,uint64,address,uint64)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.swap(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"swap(uint64,uint64,address,uint64)void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `addPool(uint64,uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n addPool: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"addPool(uint64,uint64)void\"] | BridgeArgs[\"tuple\"][\"addPool(uint64,uint64)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.addPool(params));\n return { ...result, return: result.return as unknown as undefined | BridgeReturns[\"addPool(uint64,uint64)void\"] };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `removePool(uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n removePool: async (\n params: CallParams<BridgeArgs[\"obj\"][\"removePool(uint64)void\"] | BridgeArgs[\"tuple\"][\"removePool(uint64)void\"]> &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.removePool(params));\n return { ...result, return: result.return as unknown as undefined | BridgeReturns[\"removePool(uint64)void\"] };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `stopSwap()void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n stopSwap: async (\n params: CallParams<BridgeArgs[\"obj\"][\"stopSwap()void\"] | BridgeArgs[\"tuple\"][\"stopSwap()void\"]> &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC } = { args: [] }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.stopSwap(params));\n return { ...result, return: result.return as unknown as undefined | BridgeReturns[\"stopSwap()void\"] };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `startSwap()void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n startSwap: async (\n params: CallParams<BridgeArgs[\"obj\"][\"startSwap()void\"] | BridgeArgs[\"tuple\"][\"startSwap()void\"]> &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC } = { args: [] }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.startSwap(params));\n return { ...result, return: result.return as unknown as undefined | BridgeReturns[\"startSwap()void\"] };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setStopAuthority(address)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n setStopAuthority: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setStopAuthority(address)void\"] | BridgeArgs[\"tuple\"][\"setStopAuthority(address)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.setStopAuthority(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"setStopAuthority(address)void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setRebalancer(address)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n setRebalancer: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setRebalancer(address)void\"] | BridgeArgs[\"tuple\"][\"setRebalancer(address)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.setRebalancer(params));\n return { ...result, return: result.return as unknown as undefined | BridgeReturns[\"setRebalancer(address)void\"] };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getGasUsage(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n getGasUsage: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"getGasUsage(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getGasUsage(byte)uint64\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.getGasUsage(params));\n return { ...result, return: result.return as unknown as undefined | BridgeReturns[\"getGasUsage(byte)uint64\"] };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setGasUsage(byte,uint64)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n setGasUsage: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasUsage(byte,uint64)void\"] | BridgeArgs[\"tuple\"][\"setGasUsage(byte,uint64)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.setGasUsage(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"setGasUsage(byte,uint64)void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `setGasOracle(application)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n setGasOracle: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasOracle(application)void\"] | BridgeArgs[\"tuple\"][\"setGasOracle(application)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.setGasOracle(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"setGasOracle(application)void\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `getTransactionRelayerCost(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n getTransactionRelayerCost: async (\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getTransactionRelayerCost(byte)uint64\"]\n | BridgeArgs[\"tuple\"][\"getTransactionRelayerCost(byte)uint64\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.getTransactionRelayerCost(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"getTransactionRelayerCost(byte)uint64\"],\n };\n },\n\n /**\n * Makes a call to the Bridge smart contract using the `transferOwnership(address)void` ABI method.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n transferOwnership: async (\n params: CallParams<\n BridgeArgs[\"obj\"][\"transferOwnership(address)void\"] | BridgeArgs[\"tuple\"][\"transferOwnership(address)void\"]\n > &\n SendParams & { onComplete?: OnApplicationComplete.NoOpOC }\n ) => {\n const result = await this.appClient.send.call(BridgeParamsFactory.transferOwnership(params));\n return {\n ...result,\n return: result.return as unknown as undefined | BridgeReturns[\"transferOwnership(address)void\"],\n };\n },\n };\n\n /**\n * Clone this app client with different params\n *\n * @param params The params to use for the the cloned app client. Omit a param to keep the original value. Set a param to override the original value. Setting to undefined will clear the original value.\n * @returns A new app client with the altered params\n */\n public clone(params: CloneAppClientParams) {\n return new BridgeClient(this.appClient.clone(params));\n }\n\n /**\n * Makes a readonly (simulated) call to the Bridge smart contract using the `getBridgingCostInTokens(byte,uint64)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n async getBridgingCostInTokens(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n | BridgeArgs[\"tuple\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n >\n ) {\n const result = await this.appClient.send.call(BridgeParamsFactory.getBridgingCostInTokens(params));\n return result.return as unknown as BridgeReturns[\"getBridgingCostInTokens(byte,uint64)uint64\"];\n }\n\n /**\n * Makes a readonly (simulated) call to the Bridge smart contract using the `hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n async hashMessage(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n | BridgeArgs[\"tuple\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n >\n ) {\n const result = await this.appClient.send.call(BridgeParamsFactory.hashMessage(params));\n return result.return as unknown as BridgeReturns[\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"];\n }\n\n /**\n * Makes a readonly (simulated) call to the Bridge smart contract using the `isOtherBridgeTokenSupported(byte,byte[32])bool` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n async isOtherBridgeTokenSupported(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n | BridgeArgs[\"tuple\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n >\n ) {\n const result = await this.appClient.send.call(BridgeParamsFactory.isOtherBridgeTokenSupported(params));\n return result.return as unknown as BridgeReturns[\"isOtherBridgeTokenSupported(byte,byte[32])bool\"];\n }\n\n /**\n * Makes a readonly (simulated) call to the Bridge smart contract using the `getTransactionCost(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n async getTransactionCost(\n params: CallParams<\n BridgeArgs[\"obj\"][\"getTransactionCost(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getTransactionCost(byte)uint64\"]\n >\n ) {\n const result = await this.appClient.send.call(BridgeParamsFactory.getTransactionCost(params));\n return result.return as unknown as BridgeReturns[\"getTransactionCost(byte)uint64\"];\n }\n\n /**\n * Makes a readonly (simulated) call to the Bridge smart contract using the `getReceiveTokensCost()uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n async getReceiveTokensCost(\n params: CallParams<\n BridgeArgs[\"obj\"][\"getReceiveTokensCost()uint64\"] | BridgeArgs[\"tuple\"][\"getReceiveTokensCost()uint64\"]\n > = { args: [] }\n ) {\n const result = await this.appClient.send.call(BridgeParamsFactory.getReceiveTokensCost(params));\n return result.return as unknown as BridgeReturns[\"getReceiveTokensCost()uint64\"];\n }\n\n /**\n * Makes a readonly (simulated) call to the Bridge smart contract using the `getSendTransactionStorageCost()uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n async getSendTransactionStorageCost(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getSendTransactionStorageCost()uint64\"]\n | BridgeArgs[\"tuple\"][\"getSendTransactionStorageCost()uint64\"]\n > = { args: [] }\n ) {\n const result = await this.appClient.send.call(BridgeParamsFactory.getSendTransactionStorageCost(params));\n return result.return as unknown as BridgeReturns[\"getSendTransactionStorageCost()uint64\"];\n }\n\n /**\n * Makes a readonly (simulated) call to the Bridge smart contract using the `getGasUsage(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n async getGasUsage(\n params: CallParams<BridgeArgs[\"obj\"][\"getGasUsage(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getGasUsage(byte)uint64\"]>\n ) {\n const result = await this.appClient.send.call(BridgeParamsFactory.getGasUsage(params));\n return result.return as unknown as BridgeReturns[\"getGasUsage(byte)uint64\"];\n }\n\n /**\n * Makes a readonly (simulated) call to the Bridge smart contract using the `getTransactionRelayerCost(byte)uint64` ABI method.\n *\n * This method is a readonly method; calling it with onComplete of NoOp will result in a simulated transaction rather than a real transaction.\n *\n * @param params The params for the smart contract call\n * @returns The call result\n */\n async getTransactionRelayerCost(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getTransactionRelayerCost(byte)uint64\"]\n | BridgeArgs[\"tuple\"][\"getTransactionRelayerCost(byte)uint64\"]\n >\n ) {\n const result = await this.appClient.send.call(BridgeParamsFactory.getTransactionRelayerCost(params));\n return result.return as unknown as BridgeReturns[\"getTransactionRelayerCost(byte)uint64\"];\n }\n\n /**\n * Methods to access state for the current Bridge app\n */\n state = {\n /**\n * Methods to access global state for the current Bridge app\n */\n global: {\n /**\n * Get all current keyed values from global state\n */\n getAll: async (): Promise<Partial<Expand<GlobalKeysState>>> => {\n const result = await this.appClient.state.global.getAll();\n return {\n chainId: result.chainId,\n messenger: result.messenger,\n stopAuthority: result.stopAuthority,\n rebalancer: result.rebalancer,\n canSwap: result.canSwap,\n gasOracle: result.gasOracle,\n owner: result.owner,\n };\n },\n /**\n * Get the current value of the chainId key in global state\n */\n chainId: async (): Promise<number | undefined> => {\n return (await this.appClient.state.global.getValue(\"chainId\")) as number | undefined;\n },\n /**\n * Get the current value of the messenger key in global state\n */\n messenger: async (): Promise<bigint | undefined> => {\n return (await this.appClient.state.global.getValue(\"messenger\")) as bigint | undefined;\n },\n /**\n * Get the current value of the stopAuthority key in global state\n */\n stopAuthority: async (): Promise<string | undefined> => {\n return (await this.appClient.state.global.getValue(\"stopAuthority\")) as string | undefined;\n },\n /**\n * Get the current value of the rebalancer key in global state\n */\n rebalancer: async (): Promise<string | undefined> => {\n return (await this.appClient.state.global.getValue(\"rebalancer\")) as string | undefined;\n },\n /**\n * Get the current value of the canSwap key in global state\n */\n canSwap: async (): Promise<bigint | undefined> => {\n return (await this.appClient.state.global.getValue(\"canSwap\")) as bigint | undefined;\n },\n /**\n * Get the current value of the gasOracle key in global state\n */\n gasOracle: async (): Promise<bigint | undefined> => {\n return (await this.appClient.state.global.getValue(\"gasOracle\")) as bigint | undefined;\n },\n /**\n * Get the current value of the owner key in global state\n */\n owner: async (): Promise<string | undefined> => {\n return (await this.appClient.state.global.getValue(\"owner\")) as string | undefined;\n },\n },\n /**\n * Methods to access box state for the current Bridge app\n */\n box: {\n /**\n * Get all current keyed values from box state\n */\n getAll: async (): Promise<Partial<Expand<BoxKeysState>>> => {\n const result = await this.appClient.state.box.getAll();\n return {};\n },\n /**\n * Get values from the processedMessages map in box state\n */\n processedMessages: {\n /**\n * Get all current values of the processedMessages map in box state\n */\n getMap: async (): Promise<Map<Uint8Array, Uint8Array>> => {\n return (await this.appClient.state.box.getMap(\"processedMessages\")) as Map<Uint8Array, Uint8Array>;\n },\n /**\n * Get a current value of the processedMessages map by key from box state\n */\n value: async (key: Uint8Array): Promise<Uint8Array | undefined> => {\n return (await this.appClient.state.box.getMapValue(\"processedMessages\", key)) as Uint8Array | undefined;\n },\n },\n /**\n * Get values from the sentMessages map in box state\n */\n sentMessages: {\n /**\n * Get all current values of the sentMessages map in box state\n */\n getMap: async (): Promise<Map<Uint8Array, Uint8Array>> => {\n return (await this.appClient.state.box.getMap(\"sentMessages\")) as Map<Uint8Array, Uint8Array>;\n },\n /**\n * Get a current value of the sentMessages map by key from box state\n */\n value: async (key: Uint8Array): Promise<Uint8Array | undefined> => {\n return (await this.appClient.state.box.getMapValue(\"sentMessages\", key)) as Uint8Array | undefined;\n },\n },\n /**\n * Get values from the otherBridges map in box state\n */\n otherBridges: {\n /**\n * Get all current values of the otherBridges map in box state\n */\n getMap: async (): Promise<Map<number, Uint8Array>> => {\n return (await this.appClient.state.box.getMap(\"otherBridges\")) as Map<number, Uint8Array>;\n },\n /**\n * Get a current value of the otherBridges map by key from box state\n */\n value: async (key: number): Promise<Uint8Array | undefined> => {\n return (await this.appClient.state.box.getMapValue(\"otherBridges\", key)) as Uint8Array | undefined;\n },\n },\n /**\n * Get values from the otherBridgeTokens map in box state\n */\n otherBridgeTokens: {\n /**\n * Get all current values of the otherBridgeTokens map in box state\n */\n getMap: async (): Promise<Map<Uint8Array, Uint8Array>> => {\n return (await this.appClient.state.box.getMap(\"otherBridgeTokens\")) as Map<Uint8Array, Uint8Array>;\n },\n /**\n * Get a current value of the otherBridgeTokens map by key from box state\n */\n value: async (key: Uint8Array | string): Promise<Uint8Array | undefined> => {\n return (await this.appClient.state.box.getMapValue(\"otherBridgeTokens\", key)) as Uint8Array | undefined;\n },\n },\n /**\n * Get values from the pools map in box state\n */\n pools: {\n /**\n * Get all current values of the pools map in box state\n */\n getMap: async (): Promise<Map<bigint, bigint>> => {\n return (await this.appClient.state.box.getMap(\"pools\")) as Map<bigint, bigint>;\n },\n /**\n * Get a current value of the pools map by key from box state\n */\n value: async (key: bigint | number): Promise<bigint | undefined> => {\n return (await this.appClient.state.box.getMapValue(\"pools\", key)) as bigint | undefined;\n },\n },\n /**\n * Get values from the fromGasOracleScalingFactor map in box state\n */\n fromGasOracleScalingFactor: {\n /**\n * Get all current values of the fromGasOracleScalingFactor map in box state\n */\n getMap: async (): Promise<Map<bigint, bigint>> => {\n return (await this.appClient.state.box.getMap(\"fromGasOracleScalingFactor\")) as Map<bigint, bigint>;\n },\n /**\n * Get a current value of the fromGasOracleScalingFactor map by key from box state\n */\n value: async (key: bigint | number): Promise<bigint | undefined> => {\n return (await this.appClient.state.box.getMapValue(\"fromGasOracleScalingFactor\", key)) as bigint | undefined;\n },\n },\n /**\n * Get values from the bridgingFeeConversionScalingFactor map in box state\n */\n bridgingFeeConversionScalingFactor: {\n /**\n * Get all current values of the bridgingFeeConversionScalingFactor map in box state\n */\n getMap: async (): Promise<Map<bigint, bigint>> => {\n return (await this.appClient.state.box.getMap(\"bridgingFeeConversionScalingFactor\")) as Map<bigint, bigint>;\n },\n /**\n * Get a current value of the bridgingFeeConversionScalingFactor map by key from box state\n */\n value: async (key: bigint | number): Promise<bigint | undefined> => {\n return (await this.appClient.state.box.getMapValue(\"bridgingFeeConversionScalingFactor\", key)) as\n | bigint\n | undefined;\n },\n },\n /**\n * Get values from the gasUsage map in box state\n */\n gasUsage: {\n /**\n * Get all current values of the gasUsage map in box state\n */\n getMap: async (): Promise<Map<number, bigint>> => {\n return (await this.appClient.state.box.getMap(\"gasUsage\")) as Map<number, bigint>;\n },\n /**\n * Get a current value of the gasUsage map by key from box state\n */\n value: async (key: number): Promise<bigint | undefined> => {\n return (await this.appClient.state.box.getMapValue(\"gasUsage\", key)) as bigint | undefined;\n },\n },\n },\n };\n\n public newGroup(): BridgeComposer {\n const client = this;\n const composer = this.algorand.newGroup();\n let promiseChain: Promise<unknown> = Promise.resolve();\n const resultMappers: Array<undefined | ((x: ABIReturn | undefined) => any)> = [];\n return {\n /**\n * Add a optInAsset(uint64)void method call against the Bridge contract\n */\n optInAsset(\n params: CallParams<\n BridgeArgs[\"obj\"][\"optInAsset(uint64)void\"] | BridgeArgs[\"tuple\"][\"optInAsset(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.optInAsset(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a noop()void method call against the Bridge contract\n */\n noop(\n params: CallParams<BridgeArgs[\"obj\"][\"noop()void\"] | BridgeArgs[\"tuple\"][\"noop()void\"]> & {\n onComplete?: OnApplicationComplete.NoOpOC;\n }\n ) {\n promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.noop(params)));\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void method call against the Bridge contract\n */\n swapAndBridge(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.swapAndBridge(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void method call against the Bridge contract\n */\n receiveTokens(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.receiveTokens(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a registerBridge(byte,byte[32])void method call against the Bridge contract\n */\n registerBridge(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"registerBridge(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"registerBridge(byte,byte[32])void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.registerBridge(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a addBridgeToken(byte,byte[32])void method call against the Bridge contract\n */\n addBridgeToken(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"addBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"addBridgeToken(byte,byte[32])void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.addBridgeToken(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a removeBridgeToken(byte,byte[32])void method call against the Bridge contract\n */\n removeBridgeToken(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"removeBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"removeBridgeToken(byte,byte[32])void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.removeBridgeToken(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a withdrawGasTokens(uint64)void method call against the Bridge contract\n */\n withdrawGasTokens(\n params: CallParams<\n BridgeArgs[\"obj\"][\"withdrawGasTokens(uint64)void\"] | BridgeArgs[\"tuple\"][\"withdrawGasTokens(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.withdrawGasTokens(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a withdrawBridgingFeeInTokens(uint64)void method call against the Bridge contract\n */\n withdrawBridgingFeeInTokens(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n | BridgeArgs[\"tuple\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.withdrawBridgingFeeInTokens(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a getBridgingCostInTokens(byte,uint64)uint64 method call against the Bridge contract\n */\n getBridgingCostInTokens(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n | BridgeArgs[\"tuple\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.getBridgingCostInTokens(params))\n );\n resultMappers.push((v) => client.decodeReturnValue(\"getBridgingCostInTokens(byte,uint64)uint64\", v));\n return this;\n },\n /**\n * Add a hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32] method call against the Bridge contract\n */\n hashMessage(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n | BridgeArgs[\"tuple\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.hashMessage(params))\n );\n resultMappers.push((v) =>\n client.decodeReturnValue(\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\", v)\n );\n return this;\n },\n /**\n * Add a isOtherBridgeTokenSupported(byte,byte[32])bool method call against the Bridge contract\n */\n isOtherBridgeTokenSupported(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n | BridgeArgs[\"tuple\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.isOtherBridgeTokenSupported(params))\n );\n resultMappers.push((v) => client.decodeReturnValue(\"isOtherBridgeTokenSupported(byte,byte[32])bool\", v));\n return this;\n },\n /**\n * Add a getTransactionCost(byte)uint64 method call against the Bridge contract\n */\n getTransactionCost(\n params: CallParams<\n BridgeArgs[\"obj\"][\"getTransactionCost(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getTransactionCost(byte)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.getTransactionCost(params))\n );\n resultMappers.push((v) => client.decodeReturnValue(\"getTransactionCost(byte)uint64\", v));\n return this;\n },\n /**\n * Add a getReceiveTokensCost()uint64 method call against the Bridge contract\n */\n getReceiveTokensCost(\n params: CallParams<\n BridgeArgs[\"obj\"][\"getReceiveTokensCost()uint64\"] | BridgeArgs[\"tuple\"][\"getReceiveTokensCost()uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.getReceiveTokensCost(params))\n );\n resultMappers.push((v) => client.decodeReturnValue(\"getReceiveTokensCost()uint64\", v));\n return this;\n },\n /**\n * Add a getSendTransactionStorageCost()uint64 method call against the Bridge contract\n */\n getSendTransactionStorageCost(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getSendTransactionStorageCost()uint64\"]\n | BridgeArgs[\"tuple\"][\"getSendTransactionStorageCost()uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.getSendTransactionStorageCost(params))\n );\n resultMappers.push((v) => client.decodeReturnValue(\"getSendTransactionStorageCost()uint64\", v));\n return this;\n },\n /**\n * Add a swap(uint64,uint64,address,uint64)void method call against the Bridge contract\n */\n swap(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"swap(uint64,uint64,address,uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swap(uint64,uint64,address,uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () => composer.addAppCallMethodCall(await client.params.swap(params)));\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a addPool(uint64,uint64)void method call against the Bridge contract\n */\n addPool(\n params: CallParams<\n BridgeArgs[\"obj\"][\"addPool(uint64,uint64)void\"] | BridgeArgs[\"tuple\"][\"addPool(uint64,uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.addPool(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a removePool(uint64)void method call against the Bridge contract\n */\n removePool(\n params: CallParams<\n BridgeArgs[\"obj\"][\"removePool(uint64)void\"] | BridgeArgs[\"tuple\"][\"removePool(uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.removePool(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a stopSwap()void method call against the Bridge contract\n */\n stopSwap(\n params: CallParams<BridgeArgs[\"obj\"][\"stopSwap()void\"] | BridgeArgs[\"tuple\"][\"stopSwap()void\"]> & {\n onComplete?: OnApplicationComplete.NoOpOC;\n }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.stopSwap(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a startSwap()void method call against the Bridge contract\n */\n startSwap(\n params: CallParams<BridgeArgs[\"obj\"][\"startSwap()void\"] | BridgeArgs[\"tuple\"][\"startSwap()void\"]> & {\n onComplete?: OnApplicationComplete.NoOpOC;\n }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.startSwap(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a setStopAuthority(address)void method call against the Bridge contract\n */\n setStopAuthority(\n params: CallParams<\n BridgeArgs[\"obj\"][\"setStopAuthority(address)void\"] | BridgeArgs[\"tuple\"][\"setStopAuthority(address)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.setStopAuthority(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a setRebalancer(address)void method call against the Bridge contract\n */\n setRebalancer(\n params: CallParams<\n BridgeArgs[\"obj\"][\"setRebalancer(address)void\"] | BridgeArgs[\"tuple\"][\"setRebalancer(address)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.setRebalancer(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a getGasUsage(byte)uint64 method call against the Bridge contract\n */\n getGasUsage(\n params: CallParams<\n BridgeArgs[\"obj\"][\"getGasUsage(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getGasUsage(byte)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.getGasUsage(params))\n );\n resultMappers.push((v) => client.decodeReturnValue(\"getGasUsage(byte)uint64\", v));\n return this;\n },\n /**\n * Add a setGasUsage(byte,uint64)void method call against the Bridge contract\n */\n setGasUsage(\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasUsage(byte,uint64)void\"] | BridgeArgs[\"tuple\"][\"setGasUsage(byte,uint64)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.setGasUsage(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a setGasOracle(application)void method call against the Bridge contract\n */\n setGasOracle(\n params: CallParams<\n BridgeArgs[\"obj\"][\"setGasOracle(application)void\"] | BridgeArgs[\"tuple\"][\"setGasOracle(application)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.setGasOracle(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a getTransactionRelayerCost(byte)uint64 method call against the Bridge contract\n */\n getTransactionRelayerCost(\n params: CallParams<\n | BridgeArgs[\"obj\"][\"getTransactionRelayerCost(byte)uint64\"]\n | BridgeArgs[\"tuple\"][\"getTransactionRelayerCost(byte)uint64\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.getTransactionRelayerCost(params))\n );\n resultMappers.push((v) => client.decodeReturnValue(\"getTransactionRelayerCost(byte)uint64\", v));\n return this;\n },\n /**\n * Add a transferOwnership(address)void method call against the Bridge contract\n */\n transferOwnership(\n params: CallParams<\n BridgeArgs[\"obj\"][\"transferOwnership(address)void\"] | BridgeArgs[\"tuple\"][\"transferOwnership(address)void\"]\n > & { onComplete?: OnApplicationComplete.NoOpOC }\n ) {\n promiseChain = promiseChain.then(async () =>\n composer.addAppCallMethodCall(await client.params.transferOwnership(params))\n );\n resultMappers.push(undefined);\n return this;\n },\n /**\n * Add a clear state call to the Bridge contract\n */\n clearState(params: AppClientBareCallParams) {\n promiseChain = promiseChain.then(() => composer.addAppCall(client.params.clearState(params)));\n return this;\n },\n addTransaction(txn: Transaction, signer?: TransactionSigner) {\n promiseChain = promiseChain.then(() => composer.addTransaction(txn, signer));\n return this;\n },\n async composer() {\n await promiseChain;\n return composer;\n },\n async simulate(options?: SimulateOptions) {\n await promiseChain;\n const result = await (!options ? composer.simulate() : composer.simulate(options));\n return {\n ...result,\n returns: result.returns?.map((val, i) =>\n resultMappers[i] !== undefined ? resultMappers[i]!(val) : val.returnValue\n ),\n };\n },\n async send(params?: SendParams) {\n await promiseChain;\n const result = await composer.send(params);\n return {\n ...result,\n returns: result.returns?.map((val, i) =>\n resultMappers[i] !== undefined ? resultMappers[i]!(val) : val.returnValue\n ),\n };\n },\n } as unknown as BridgeComposer;\n }\n}\nexport type BridgeComposer<TReturns extends [...any[]] = []> = {\n /**\n * Calls the optInAsset(uint64)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n optInAsset(\n params?: CallParams<BridgeArgs[\"obj\"][\"optInAsset(uint64)void\"] | BridgeArgs[\"tuple\"][\"optInAsset(uint64)void\"]>\n ): BridgeComposer<[...TReturns, BridgeReturns[\"optInAsset(uint64)void\"] | undefined]>;\n\n /**\n * Calls the noop()void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n noop(\n params?: CallParams<BridgeArgs[\"obj\"][\"noop()void\"] | BridgeArgs[\"tuple\"][\"noop()void\"]>\n ): BridgeComposer<[...TReturns, BridgeReturns[\"noop()void\"] | undefined]>;\n\n /**\n * Calls the swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n swapAndBridge(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n >\n ): BridgeComposer<\n [...TReturns, BridgeReturns[\"swapAndBridge(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"] | undefined]\n >;\n\n /**\n * Calls the receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n receiveTokens(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n | BridgeArgs[\"tuple\"][\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"]\n >\n ): BridgeComposer<\n [...TReturns, BridgeReturns[\"receiveTokens(uint64,byte[32],byte,byte[32],byte[32],uint64)void\"] | undefined]\n >;\n\n /**\n * Calls the registerBridge(byte,byte[32])void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n registerBridge(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"registerBridge(byte,byte[32])void\"] | BridgeArgs[\"tuple\"][\"registerBridge(byte,byte[32])void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"registerBridge(byte,byte[32])void\"] | undefined]>;\n\n /**\n * Calls the addBridgeToken(byte,byte[32])void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n addBridgeToken(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"addBridgeToken(byte,byte[32])void\"] | BridgeArgs[\"tuple\"][\"addBridgeToken(byte,byte[32])void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"addBridgeToken(byte,byte[32])void\"] | undefined]>;\n\n /**\n * Calls the removeBridgeToken(byte,byte[32])void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n removeBridgeToken(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"removeBridgeToken(byte,byte[32])void\"]\n | BridgeArgs[\"tuple\"][\"removeBridgeToken(byte,byte[32])void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"removeBridgeToken(byte,byte[32])void\"] | undefined]>;\n\n /**\n * Calls the withdrawGasTokens(uint64)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n withdrawGasTokens(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"withdrawGasTokens(uint64)void\"] | BridgeArgs[\"tuple\"][\"withdrawGasTokens(uint64)void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"withdrawGasTokens(uint64)void\"] | undefined]>;\n\n /**\n * Calls the withdrawBridgingFeeInTokens(uint64)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n withdrawBridgingFeeInTokens(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n | BridgeArgs[\"tuple\"][\"withdrawBridgingFeeInTokens(uint64)void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"withdrawBridgingFeeInTokens(uint64)void\"] | undefined]>;\n\n /**\n * Calls the getBridgingCostInTokens(byte,uint64)uint64 ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n getBridgingCostInTokens(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n | BridgeArgs[\"tuple\"][\"getBridgingCostInTokens(byte,uint64)uint64\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"getBridgingCostInTokens(byte,uint64)uint64\"] | undefined]>;\n\n /**\n * Calls the hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32] ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n hashMessage(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n | BridgeArgs[\"tuple\"][\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"]\n >\n ): BridgeComposer<\n [...TReturns, BridgeReturns[\"hashMessage(uint64,byte[32],byte,byte,byte[32],byte[32])byte[32]\"] | undefined]\n >;\n\n /**\n * Calls the isOtherBridgeTokenSupported(byte,byte[32])bool ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n isOtherBridgeTokenSupported(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n | BridgeArgs[\"tuple\"][\"isOtherBridgeTokenSupported(byte,byte[32])bool\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"isOtherBridgeTokenSupported(byte,byte[32])bool\"] | undefined]>;\n\n /**\n * Calls the getTransactionCost(byte)uint64 ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n getTransactionCost(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"getTransactionCost(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getTransactionCost(byte)uint64\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"getTransactionCost(byte)uint64\"] | undefined]>;\n\n /**\n * Calls the getReceiveTokensCost()uint64 ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n getReceiveTokensCost(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"getReceiveTokensCost()uint64\"] | BridgeArgs[\"tuple\"][\"getReceiveTokensCost()uint64\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"getReceiveTokensCost()uint64\"] | undefined]>;\n\n /**\n * Calls the getSendTransactionStorageCost()uint64 ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n getSendTransactionStorageCost(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"getSendTransactionStorageCost()uint64\"]\n | BridgeArgs[\"tuple\"][\"getSendTransactionStorageCost()uint64\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"getSendTransactionStorageCost()uint64\"] | undefined]>;\n\n /**\n * Calls the swap(uint64,uint64,address,uint64)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n swap(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"swap(uint64,uint64,address,uint64)void\"]\n | BridgeArgs[\"tuple\"][\"swap(uint64,uint64,address,uint64)void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"swap(uint64,uint64,address,uint64)void\"] | undefined]>;\n\n /**\n * Calls the addPool(uint64,uint64)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n addPool(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"addPool(uint64,uint64)void\"] | BridgeArgs[\"tuple\"][\"addPool(uint64,uint64)void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"addPool(uint64,uint64)void\"] | undefined]>;\n\n /**\n * Calls the removePool(uint64)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n removePool(\n params?: CallParams<BridgeArgs[\"obj\"][\"removePool(uint64)void\"] | BridgeArgs[\"tuple\"][\"removePool(uint64)void\"]>\n ): BridgeComposer<[...TReturns, BridgeReturns[\"removePool(uint64)void\"] | undefined]>;\n\n /**\n * Calls the stopSwap()void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n stopSwap(\n params?: CallParams<BridgeArgs[\"obj\"][\"stopSwap()void\"] | BridgeArgs[\"tuple\"][\"stopSwap()void\"]>\n ): BridgeComposer<[...TReturns, BridgeReturns[\"stopSwap()void\"] | undefined]>;\n\n /**\n * Calls the startSwap()void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n startSwap(\n params?: CallParams<BridgeArgs[\"obj\"][\"startSwap()void\"] | BridgeArgs[\"tuple\"][\"startSwap()void\"]>\n ): BridgeComposer<[...TReturns, BridgeReturns[\"startSwap()void\"] | undefined]>;\n\n /**\n * Calls the setStopAuthority(address)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n setStopAuthority(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"setStopAuthority(address)void\"] | BridgeArgs[\"tuple\"][\"setStopAuthority(address)void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"setStopAuthority(address)void\"] | undefined]>;\n\n /**\n * Calls the setRebalancer(address)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n setRebalancer(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"setRebalancer(address)void\"] | BridgeArgs[\"tuple\"][\"setRebalancer(address)void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"setRebalancer(address)void\"] | undefined]>;\n\n /**\n * Calls the getGasUsage(byte)uint64 ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n getGasUsage(\n params?: CallParams<BridgeArgs[\"obj\"][\"getGasUsage(byte)uint64\"] | BridgeArgs[\"tuple\"][\"getGasUsage(byte)uint64\"]>\n ): BridgeComposer<[...TReturns, BridgeReturns[\"getGasUsage(byte)uint64\"] | undefined]>;\n\n /**\n * Calls the setGasUsage(byte,uint64)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n setGasUsage(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"setGasUsage(byte,uint64)void\"] | BridgeArgs[\"tuple\"][\"setGasUsage(byte,uint64)void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"setGasUsage(byte,uint64)void\"] | undefined]>;\n\n /**\n * Calls the setGasOracle(application)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n setGasOracle(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"setGasOracle(application)void\"] | BridgeArgs[\"tuple\"][\"setGasOracle(application)void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"setGasOracle(application)void\"] | undefined]>;\n\n /**\n * Calls the getTransactionRelayerCost(byte)uint64 ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n getTransactionRelayerCost(\n params?: CallParams<\n | BridgeArgs[\"obj\"][\"getTransactionRelayerCost(byte)uint64\"]\n | BridgeArgs[\"tuple\"][\"getTransactionRelayerCost(byte)uint64\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"getTransactionRelayerCost(byte)uint64\"] | undefined]>;\n\n /**\n * Calls the transferOwnership(address)void ABI method.\n *\n * @param args The arguments for the contract call\n * @param params Any additional parameters for the call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n transferOwnership(\n params?: CallParams<\n BridgeArgs[\"obj\"][\"transferOwnership(address)void\"] | BridgeArgs[\"tuple\"][\"transferOwnership(address)void\"]\n >\n ): BridgeComposer<[...TReturns, BridgeReturns[\"transferOwnership(address)void\"] | undefined]>;\n\n /**\n * Makes a clear_state call to an existing instance of the Bridge smart contract.\n *\n * @param args The arguments for the bare call\n * @returns The typed transaction composer so you can fluently chain multiple calls or call execute to execute all queued up transactions\n */\n clearState(params?: AppClientBareCallParams): BridgeComposer<[...TReturns, undefined]>;\n\n /**\n * Adds a transaction to the composer\n *\n * @param txn A transaction to add to the transaction group\n * @param signer The optional signer to use when signing this transaction.\n */\n addTransaction(txn: Transaction, signer?: TransactionSigner): BridgeComposer<TReturns>;\n /**\n * Returns the underlying AtomicTransactionComposer instance\n */\n composer(): Promise<TransactionComposer>;\n /**\n * Simulates the transaction group and returns the result\n */\n simulate(): Promise<BridgeComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>;\n simulate(\n options: SkipSignaturesSimulateOptions\n ): Promise<BridgeComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>;\n simulate(\n options: RawSimulateOptions\n ): Promise<BridgeComposerResults<TReturns> & { simulateResponse: modelsv2.SimulateResponse }>;\n /**\n * Sends the transaction group to the network and returns the results\n */\n send(params?: SendParams): Promise<BridgeComposerResults<TReturns>>;\n};\nexport type BridgeComposerResults<TReturns extends [...any[]]> = Expand<\n SendAtomicTransactionComposerResults & {\n returns: TReturns;\n }\n>;\n"]}
|