@keep-network/tbtc-v2 1.6.0-dev.0 → 1.6.0-dev.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.
Files changed (109) hide show
  1. package/artifacts/BLS.json +1 -1
  2. package/artifacts/Bank.json +3 -3
  3. package/artifacts/BeaconAuthorization.json +1 -1
  4. package/artifacts/BeaconDkg.json +1 -1
  5. package/artifacts/BeaconDkgValidator.json +1 -1
  6. package/artifacts/BeaconInactivity.json +1 -1
  7. package/artifacts/BeaconSortitionPool.json +3 -3
  8. package/artifacts/Bridge.json +5 -5
  9. package/artifacts/BridgeGovernance.json +2 -2
  10. package/artifacts/BridgeGovernanceParameters.json +2 -2
  11. package/artifacts/Deposit.json +2 -2
  12. package/artifacts/DepositSweep.json +2 -2
  13. package/artifacts/DonationVault.json +3 -3
  14. package/artifacts/EcdsaDkgValidator.json +1 -1
  15. package/artifacts/EcdsaInactivity.json +1 -1
  16. package/artifacts/EcdsaSortitionPool.json +3 -3
  17. package/artifacts/Fraud.json +2 -2
  18. package/artifacts/KeepRegistry.json +1 -1
  19. package/artifacts/KeepStake.json +2 -2
  20. package/artifacts/KeepToken.json +2 -2
  21. package/artifacts/KeepTokenStaking.json +1 -1
  22. package/artifacts/LightRelay.json +18 -18
  23. package/artifacts/LightRelayMaintainerProxy.json +8 -8
  24. package/artifacts/MaintainerProxy.json +19 -19
  25. package/artifacts/MovingFunds.json +2 -2
  26. package/artifacts/NuCypherStakingEscrow.json +1 -1
  27. package/artifacts/NuCypherToken.json +2 -2
  28. package/artifacts/RandomBeacon.json +2 -2
  29. package/artifacts/RandomBeaconChaosnet.json +2 -2
  30. package/artifacts/RandomBeaconGovernance.json +2 -2
  31. package/artifacts/Redemption.json +2 -2
  32. package/artifacts/ReimbursementPool.json +2 -2
  33. package/artifacts/T.json +2 -2
  34. package/artifacts/TBTC.json +3 -3
  35. package/artifacts/TBTCToken.json +3 -3
  36. package/artifacts/TBTCVault.json +23 -23
  37. package/artifacts/TokenStaking.json +1 -1
  38. package/artifacts/TokenholderGovernor.json +9 -9
  39. package/artifacts/TokenholderTimelock.json +8 -8
  40. package/artifacts/VendingMachine.json +3 -3
  41. package/artifacts/VendingMachineKeep.json +1 -1
  42. package/artifacts/VendingMachineNuCypher.json +1 -1
  43. package/artifacts/VendingMachineV2.json +3 -3
  44. package/artifacts/VendingMachineV3.json +3 -3
  45. package/artifacts/WalletCoordinator.json +5 -5
  46. package/artifacts/WalletRegistry.json +5 -5
  47. package/artifacts/WalletRegistryGovernance.json +2 -2
  48. package/artifacts/Wallets.json +2 -2
  49. package/artifacts/solcInputs/{6cc4a0b423ac26dbfcae644b54bee6ae.json → 9c1bc2cca49796c7f9e7712adfa86bb8.json} +1 -1
  50. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  51. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  52. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  53. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  54. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  55. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  56. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  57. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  58. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  59. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  60. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  61. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  62. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  63. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  64. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  65. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  66. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  67. package/build/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.dbg.json +1 -1
  68. package/build/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.dbg.json +1 -1
  69. package/build/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.dbg.json +1 -1
  70. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  71. package/build/contracts/l2/L2TBTC.sol/L2TBTC.dbg.json +1 -1
  72. package/build/contracts/l2/L2WormholeGateway.sol/IWormholeTokenBridge.dbg.json +1 -1
  73. package/build/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.dbg.json +1 -1
  74. package/build/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.json +2 -15
  75. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  76. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  77. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  78. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  79. package/build/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.dbg.json +1 -1
  80. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  81. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  82. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  83. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  84. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  85. package/contracts/l2/L2WormholeGateway.sol +7 -27
  86. package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +6 -6
  87. package/export/artifacts/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.json +6 -6
  88. package/export/artifacts/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.json +6 -6
  89. package/export/artifacts/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.json +3030 -3498
  90. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +88 -88
  91. package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +57 -57
  92. package/export/artifacts/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.json +31 -31
  93. package/export/artifacts/contracts/test/BankStub.sol/BankStub.json +2 -2
  94. package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +30 -30
  95. package/export/artifacts/contracts/test/GoerliLightRelay.sol/GoerliLightRelay.json +59 -59
  96. package/export/artifacts/contracts/test/HeartbeatStub.sol/HeartbeatStub.json +2 -2
  97. package/export/artifacts/contracts/test/LightRelayStub.sol/LightRelayStub.json +59 -59
  98. package/export/artifacts/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.json +7 -7
  99. package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +14 -14
  100. package/export/artifacts/contracts/test/TestERC20.sol/TestERC20.json +6 -6
  101. package/export/artifacts/contracts/test/TestERC721.sol/TestERC721.json +8 -8
  102. package/export/artifacts/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.json +2 -2
  103. package/export/artifacts/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.json +38 -38
  104. package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +2 -2
  105. package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +11 -11
  106. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +135 -135
  107. package/export/typechain/factories/L2WormholeGateway__factory.js +1 -14
  108. package/export/typechain/factories/WormholeBridgeStub__factory.js +1 -1
  109. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ad2c4f91b13417738dc63e06bfaa5d8f.json"
3
+ "buildInfo": "../../../build-info/4f90af423168be79298b347a1f9c7753.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ad2c4f91b13417738dc63e06bfaa5d8f.json"
3
+ "buildInfo": "../../../build-info/4f90af423168be79298b347a1f9c7753.json"
4
4
  }
@@ -281,14 +281,17 @@ contract L2WormholeGateway is
281
281
  /// - The receiver of the canonical tBTC should be abi-encoded in the
282
282
  /// payload.
283
283
  /// - The receiver of the canonical tBTC must not be the zero address.
284
+ ///
284
285
  /// The Wormhole Token Bridge contract has protection against redeeming
285
286
  /// the same VAA again. When a Token Bridge VAA is redeemed, its
286
287
  /// message body hash is stored in a map. This map is used to check
287
288
  /// whether the hash has already been set in this map. For this reason,
288
- /// this function does not have to be nonReentrant.
289
+ /// this function does not have to be nonReentrant in theory. However,
290
+ /// to make this function non-dependent on Wormhole Bridge implementation,
291
+ /// we are making it nonReentrant anyway.
289
292
  /// @param encodedVm A byte array containing a Wormhole VAA signed by the
290
293
  /// guardians.
291
- function receiveTbtc(bytes calldata encodedVm) external {
294
+ function receiveTbtc(bytes calldata encodedVm) external nonReentrant {
292
295
  // ITokenBridge.completeTransferWithPayload completes a contract-controlled
293
296
  // transfer of an ERC20 token. Calling this function is not enough to
294
297
  // ensure L2WormholeGateway received Wormhole tBTC representation.
@@ -318,40 +321,17 @@ contract L2WormholeGateway is
318
321
  if (mintedAmount + amount > mintingLimit) {
319
322
  bridgeToken.safeTransfer(receiver, amount);
320
323
  } else {
321
- // The function is non-reentrant given bridge.completeTransferWithPayload
322
- // call that does not allow to use the same VAA again.
324
+ // The function is non-reentrant.
323
325
  // slither-disable-next-line reentrancy-benign
324
326
  mintedAmount += amount;
325
327
  tbtc.mint(receiver, amount);
326
328
  }
327
329
 
328
- // The function is non-reentrant given bridge.completeTransferWithPayload
329
- // call that does not allow to use the same VAA again.
330
+ // The function is non-reentrant.
330
331
  // slither-disable-next-line reentrancy-events
331
332
  emit WormholeTbtcReceived(receiver, amount);
332
333
  }
333
334
 
334
- /// @notice Allows to deposit Wormhole tBTC token in exchange for canonical
335
- /// tBTC. Useful in a situation when user received wormhole tBTC
336
- /// instead of canonical tBTC. One example of such situation is
337
- /// when the minting limit was exceeded but the user minted anyway.
338
- /// @dev Requirements:
339
- /// - The sender must have at least `amount` of the Wormhole tBTC and
340
- /// it has to be approved for L2WormholeGateway.
341
- /// - The minting limit must allow for minting the given amount.
342
- /// @param amount The amount of Wormhole tBTC to deposit.
343
- function depositWormholeTbtc(uint256 amount) external {
344
- require(
345
- mintedAmount + amount <= mintingLimit,
346
- "Minting limit exceeded"
347
- );
348
-
349
- emit WormholeTbtcDeposited(msg.sender, amount);
350
- mintedAmount += amount;
351
- bridgeToken.safeTransferFrom(msg.sender, address(this), amount);
352
- tbtc.mint(msg.sender, amount);
353
- }
354
-
355
335
  /// @notice Lets the governance to update the tBTC gateway address on the
356
336
  /// chain with the given Wormhole ID.
357
337
  /// @dev Use toWormholeAddress function to convert between Ethereum and
@@ -601,7 +601,7 @@
601
601
  "parameterSlots": 1,
602
602
  "returnSlots": 0
603
603
  },
604
- "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41342t_uint256_fromMemory": {
604
+ "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41298t_uint256_fromMemory": {
605
605
  "entryPoint": 230,
606
606
  "id": null,
607
607
  "parameterSlots": 2,
@@ -1045,7 +1045,7 @@
1045
1045
  }
1046
1046
  ]
1047
1047
  },
1048
- "name": "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41342t_uint256_fromMemory",
1048
+ "name": "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41298t_uint256_fromMemory",
1049
1049
  "nodeType": "YulFunctionDefinition",
1050
1050
  "parameters": [
1051
1051
  {
@@ -1085,7 +1085,7 @@
1085
1085
  }
1086
1086
  ]
1087
1087
  },
1088
- "contents": "{\n { }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41342t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := mload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n value2 := mload(add(headStart, 64))\n }\n}",
1088
+ "contents": "{\n { }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41298t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := mload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n value2 := mload(add(headStart, 64))\n }\n}",
1089
1089
  "id": 125,
1090
1090
  "language": "Yul",
1091
1091
  "name": "#utility.yul"
@@ -1415,7 +1415,7 @@
1415
1415
  "parameterSlots": 2,
1416
1416
  "returnSlots": 1
1417
1417
  },
1418
- "abi_encode_tuple_t_contract$_TBTC_$41342__to_t_address__fromStack_reversed": {
1418
+ "abi_encode_tuple_t_contract$_TBTC_$41298__to_t_address__fromStack_reversed": {
1419
1419
  "entryPoint": null,
1420
1420
  "id": null,
1421
1421
  "parameterSlots": 2,
@@ -3111,7 +3111,7 @@
3111
3111
  }
3112
3112
  ]
3113
3113
  },
3114
- "name": "abi_encode_tuple_t_contract$_TBTC_$41342__to_t_address__fromStack_reversed",
3114
+ "name": "abi_encode_tuple_t_contract$_TBTC_$41298__to_t_address__fromStack_reversed",
3115
3115
  "nodeType": "YulFunctionDefinition",
3116
3116
  "parameters": [
3117
3117
  {
@@ -8190,7 +8190,7 @@
8190
8190
  }
8191
8191
  ]
8192
8192
  },
8193
- "contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_contract$_IERC20_$18219__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_addresst_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_2, 32)\n value4 := length\n }\n function abi_encode_tuple_t_contract$_TBTC_$41342__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_9e5d6ee1ae898a2df1a30570594add9e68ad8b6af4a57d7f5f0cb2842bacfb92__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"Caller is not authorized\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_df41f55d800b6607edb1865fb30b4ab33d723889d164c99cca8fee73ff0a30ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"New initiator must not be zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_b1549855d8fed0f683c741615955b3e3f5ac1fbe3fc645d4559c62450ecc9620__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"New VendingMachine cannot be zer\")\n mstore(add(headStart, 96), \"o address\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_1a06921938f9f63c056c578e8a5f166d5d113ae30837c6c39a7741ed0e1467eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"Amount + fee exceeds TBTC v2 bal\")\n mstore(add(headStart, 96), \"ance\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_ea12df8d4a8fcefc5cad59efc2d58b797f642582ed766ffab36a121e023bc406__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Token is not TBTC v1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_fd4966bd1bdd27d0ab34b8489f15fc58fd6abfe9ed90887e0c2e4963267e6422__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Only TBTC v1 caller allowed\")\n tail := add(headStart, 96)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_61334796e55ed72efd746c0931e2d3cac4c97d3130d7bb275d5f0f57af1f045e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Change not initiated\")\n tail := add(headStart, 96)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_92dde2c37d5ac1c8388fee9c21ec0fe0c957aca7e978d56c81b848f962f0a8ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Governance delay has not elapsed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n mstore(add(headStart, 96), \"ot succeed\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
8193
+ "contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_contract$_IERC20_$18219__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_addresst_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_2, 32)\n value4 := length\n }\n function abi_encode_tuple_t_contract$_TBTC_$41298__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_9e5d6ee1ae898a2df1a30570594add9e68ad8b6af4a57d7f5f0cb2842bacfb92__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"Caller is not authorized\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_df41f55d800b6607edb1865fb30b4ab33d723889d164c99cca8fee73ff0a30ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"New initiator must not be zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_b1549855d8fed0f683c741615955b3e3f5ac1fbe3fc645d4559c62450ecc9620__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"New VendingMachine cannot be zer\")\n mstore(add(headStart, 96), \"o address\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_1a06921938f9f63c056c578e8a5f166d5d113ae30837c6c39a7741ed0e1467eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"Amount + fee exceeds TBTC v2 bal\")\n mstore(add(headStart, 96), \"ance\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_ea12df8d4a8fcefc5cad59efc2d58b797f642582ed766ffab36a121e023bc406__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Token is not TBTC v1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_fd4966bd1bdd27d0ab34b8489f15fc58fd6abfe9ed90887e0c2e4963267e6422__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Only TBTC v1 caller allowed\")\n tail := add(headStart, 96)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_61334796e55ed72efd746c0931e2d3cac4c97d3130d7bb275d5f0f57af1f045e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Change not initiated\")\n tail := add(headStart, 96)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_92dde2c37d5ac1c8388fee9c21ec0fe0c957aca7e978d56c81b848f962f0a8ba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Governance delay has not elapsed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n mstore(add(headStart, 96), \"ot succeed\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
8194
8194
  "id": 125,
8195
8195
  "language": "Yul",
8196
8196
  "name": "#utility.yul"
@@ -311,7 +311,7 @@
311
311
  "parameterSlots": 1,
312
312
  "returnSlots": 0
313
313
  },
314
- "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41342_fromMemory": {
314
+ "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41298_fromMemory": {
315
315
  "entryPoint": 183,
316
316
  "id": null,
317
317
  "parameterSlots": 2,
@@ -710,7 +710,7 @@
710
710
  }
711
711
  ]
712
712
  },
713
- "name": "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41342_fromMemory",
713
+ "name": "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41298_fromMemory",
714
714
  "nodeType": "YulFunctionDefinition",
715
715
  "parameters": [
716
716
  {
@@ -744,7 +744,7 @@
744
744
  }
745
745
  ]
746
746
  },
747
- "contents": "{\n { }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41342_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := mload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n }\n}",
747
+ "contents": "{\n { }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41298_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := mload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n }\n}",
748
748
  "id": 125,
749
749
  "language": "Yul",
750
750
  "name": "#utility.yul"
@@ -948,7 +948,7 @@
948
948
  "parameterSlots": 2,
949
949
  "returnSlots": 1
950
950
  },
951
- "abi_encode_tuple_t_contract$_TBTC_$41342__to_t_address__fromStack_reversed": {
951
+ "abi_encode_tuple_t_contract$_TBTC_$41298__to_t_address__fromStack_reversed": {
952
952
  "entryPoint": null,
953
953
  "id": null,
954
954
  "parameterSlots": 2,
@@ -2707,7 +2707,7 @@
2707
2707
  }
2708
2708
  ]
2709
2709
  },
2710
- "name": "abi_encode_tuple_t_contract$_TBTC_$41342__to_t_address__fromStack_reversed",
2710
+ "name": "abi_encode_tuple_t_contract$_TBTC_$41298__to_t_address__fromStack_reversed",
2711
2711
  "nodeType": "YulFunctionDefinition",
2712
2712
  "parameters": [
2713
2713
  {
@@ -6076,7 +6076,7 @@
6076
6076
  }
6077
6077
  ]
6078
6078
  },
6079
- "contents": "{\n { }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IERC20_$18219__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_addresst_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n let value_1 := calldataload(add(headStart, 64))\n validator_revert_contract_IERC20(value_1)\n value2 := value_1\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_2, 32)\n value4 := length\n }\n function abi_encode_tuple_t_contract$_TBTC_$41342__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_stringliteral_f9abe958fad76966d1c3d8b1924bd1c1f7130eb77673292d88e768625cb7d832__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Token is not tBTC v1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_82afa2706b38d988b36925e5facb3efa4666973f2e3f984e55eedf106656e77a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Only tBTC v1 caller allowed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_faa67e5aa2cc69c3aaf867fefd341e0cdc57e1efd0108087082c2f3812369ba4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"Not enough tBTC v2 available in \")\n mstore(add(headStart, 96), \"the Vending Machine\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n mstore(add(headStart, 96), \"ot succeed\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
6079
+ "contents": "{\n { }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_contract$_IERC20_$18219__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_addresst_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n let value_1 := calldataload(add(headStart, 64))\n validator_revert_contract_IERC20(value_1)\n value2 := value_1\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_2, 32)\n value4 := length\n }\n function abi_encode_tuple_t_contract$_TBTC_$41298__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_stringliteral_f9abe958fad76966d1c3d8b1924bd1c1f7130eb77673292d88e768625cb7d832__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Token is not tBTC v1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_82afa2706b38d988b36925e5facb3efa4666973f2e3f984e55eedf106656e77a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Only tBTC v1 caller allowed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_stringliteral_faa67e5aa2cc69c3aaf867fefd341e0cdc57e1efd0108087082c2f3812369ba4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"Not enough tBTC v2 available in \")\n mstore(add(headStart, 96), \"the Vending Machine\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n mstore(add(headStart, 96), \"ot succeed\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
6080
6080
  "id": 125,
6081
6081
  "language": "Yul",
6082
6082
  "name": "#utility.yul"
@@ -353,7 +353,7 @@
353
353
  "parameterSlots": 1,
354
354
  "returnSlots": 0
355
355
  },
356
- "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41342_fromMemory": {
356
+ "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41298_fromMemory": {
357
357
  "entryPoint": 183,
358
358
  "id": null,
359
359
  "parameterSlots": 2,
@@ -752,7 +752,7 @@
752
752
  }
753
753
  ]
754
754
  },
755
- "name": "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41342_fromMemory",
755
+ "name": "abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41298_fromMemory",
756
756
  "nodeType": "YulFunctionDefinition",
757
757
  "parameters": [
758
758
  {
@@ -786,7 +786,7 @@
786
786
  }
787
787
  ]
788
788
  },
789
- "contents": "{\n { }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41342_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := mload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n }\n}",
789
+ "contents": "{\n { }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_contract$_TBTC_$41298_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := mload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n }\n}",
790
790
  "id": 125,
791
791
  "language": "Yul",
792
792
  "name": "#utility.yul"
@@ -1002,7 +1002,7 @@
1002
1002
  "parameterSlots": 2,
1003
1003
  "returnSlots": 1
1004
1004
  },
1005
- "abi_encode_tuple_t_contract$_TBTC_$41342__to_t_address__fromStack_reversed": {
1005
+ "abi_encode_tuple_t_contract$_TBTC_$41298__to_t_address__fromStack_reversed": {
1006
1006
  "entryPoint": null,
1007
1007
  "id": null,
1008
1008
  "parameterSlots": 2,
@@ -3005,7 +3005,7 @@
3005
3005
  }
3006
3006
  ]
3007
3007
  },
3008
- "name": "abi_encode_tuple_t_contract$_TBTC_$41342__to_t_address__fromStack_reversed",
3008
+ "name": "abi_encode_tuple_t_contract$_TBTC_$41298__to_t_address__fromStack_reversed",
3009
3009
  "nodeType": "YulFunctionDefinition",
3010
3010
  "parameters": [
3011
3011
  {
@@ -7007,7 +7007,7 @@
7007
7007
  }
7008
7008
  ]
7009
7009
  },
7010
- "contents": "{\n { }\n function abi_encode_tuple_t_contract$_IERC20_$18219__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_addresst_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n let value_1 := calldataload(add(headStart, 64))\n validator_revert_contract_IERC20(value_1)\n value2 := value_1\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_2, 32)\n value4 := length\n }\n function abi_encode_tuple_t_contract$_TBTC_$41342__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_e6b01149c0b69b924c8919686bb5ab07e4289d19f1ab61ede5b2cc5d8565f86a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 63)\n mstore(add(headStart, 64), \"tBTC v2 tokens can not be recove\")\n mstore(add(headStart, 96), \"red, use withdrawTbtcV2 instead\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_24f712f65021c229d1c5d91cd9d1d0e07e437faddc79dd451f9b1ee7f591f8c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"tBTC v1 must not be left unbacke\")\n mstore(add(headStart, 96), \"d\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_f9abe958fad76966d1c3d8b1924bd1c1f7130eb77673292d88e768625cb7d832__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Token is not tBTC v1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_82afa2706b38d988b36925e5facb3efa4666973f2e3f984e55eedf106656e77a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Only tBTC v1 caller allowed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_faa67e5aa2cc69c3aaf867fefd341e0cdc57e1efd0108087082c2f3812369ba4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"Not enough tBTC v2 available in \")\n mstore(add(headStart, 96), \"the Vending Machine\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n mstore(add(headStart, 96), \"ot succeed\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
7010
+ "contents": "{\n { }\n function abi_encode_tuple_t_contract$_IERC20_$18219__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function validator_revert_contract_IERC20(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IERC20_$18219t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_contract_IERC20(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_addresst_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n let value_1 := calldataload(add(headStart, 64))\n validator_revert_contract_IERC20(value_1)\n value2 := value_1\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_2, 32)\n value4 := length\n }\n function abi_encode_tuple_t_contract$_TBTC_$41298__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_contract_IERC20(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_e6b01149c0b69b924c8919686bb5ab07e4289d19f1ab61ede5b2cc5d8565f86a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 63)\n mstore(add(headStart, 64), \"tBTC v2 tokens can not be recove\")\n mstore(add(headStart, 96), \"red, use withdrawTbtcV2 instead\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x)\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_24f712f65021c229d1c5d91cd9d1d0e07e437faddc79dd451f9b1ee7f591f8c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"tBTC v1 must not be left unbacke\")\n mstore(add(headStart, 96), \"d\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_f9abe958fad76966d1c3d8b1924bd1c1f7130eb77673292d88e768625cb7d832__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Token is not tBTC v1\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_82afa2706b38d988b36925e5facb3efa4666973f2e3f984e55eedf106656e77a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Only tBTC v1 caller allowed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_faa67e5aa2cc69c3aaf867fefd341e0cdc57e1efd0108087082c2f3812369ba4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"Not enough tBTC v2 available in \")\n mstore(add(headStart, 96), \"the Vending Machine\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 42)\n mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n mstore(add(headStart, 96), \"ot succeed\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n mstore(add(headStart, 96), \"r call\")\n tail := add(headStart, 128)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Address: call to non-contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}",
7011
7011
  "id": 125,
7012
7012
  "language": "Yul",
7013
7013
  "name": "#utility.yul"