From 427aa7eda541f3275e3ef6ca6f29df4c15622d64 Mon Sep 17 00:00:00 2001 From: DC Date: Thu, 3 Oct 2024 03:58:44 -0700 Subject: [PATCH 1/7] contract: intent addrs --- .../contract/src/interfaces/IDaimoBridger.sol | 9 +- packages/contract/src/pay/PayIntent.sol | 126 ++++++++++++++++++ packages/contract/src/pay/TokenUtils.sol | 37 +++++ 3 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 packages/contract/src/pay/PayIntent.sol create mode 100644 packages/contract/src/pay/TokenUtils.sol diff --git a/packages/contract/src/interfaces/IDaimoBridger.sol b/packages/contract/src/interfaces/IDaimoBridger.sol index fd0cde22e..f5340a134 100644 --- a/packages/contract/src/interfaces/IDaimoBridger.sol +++ b/packages/contract/src/interfaces/IDaimoBridger.sol @@ -3,13 +3,16 @@ pragma solidity ^0.8.12; import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -/// Bridges assets automatically. Specifically, it lets any market maker +/// @notice Bridges assets automatically. Specifically, it lets any market maker /// initiate a bridge transaction to another chain. interface IDaimoBridger { + /// @dev Initiates a bridge. Guarantees that (toToken, toAmount) shows up + /// in (toAddress) on (toChainId). Otherwise, reverts. function sendToChain( - IERC20 tokenIn, - uint256 amountIn, uint256 toChainId, + address toAddress, + address toToken, + uint256 toAmount, bytes calldata extraData ) external; } diff --git a/packages/contract/src/pay/PayIntent.sol b/packages/contract/src/pay/PayIntent.sol new file mode 100644 index 000000000..5a16d9767 --- /dev/null +++ b/packages/contract/src/pay/PayIntent.sol @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.12; + +import "openzeppelin-contracts/contracts/proxy/utils/Initializable.sol"; +import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; + +import "./TokenUtils.sol"; +import "../interfaces/IDaimoBridger.sol"; + +/// @dev Asset amount, eg $100 USDC or 0.1 ETH +struct TokenAmount { + /// @dev Zero address = native asset, eg ETH + IERC20 addr; + uint256 amount; +} + +/// @dev Represents a destination address + optional arbitrary contract call +struct Call { + /// @dev Destination receiving address or contract + address to; + /// @dev Native token amount for call, or 0 + uint256 value; + /// @dev Calldata for call, or empty = no contract call + bytes data; +} + +/// @dev Represents an intended call: "make X of token Y show up on chain Z, then +/// use it to do an arbitrary contract call". +struct PayIntent { + /// @dev Intent only executes on given target chain. + uint256 chainId; + /// @dev Expected token after bridging to the destination chain. + TokenAmount bridgeToken; + /// @dev Expected token amount after swapping on the destination chain. + TokenAmount finalCallToken; + /// @dev Destination on target chain. If dest.data != "" specifies a call, + /// (token, amount) is approved. Otherwise, it's transferred to dest.to + Call finalCall; + /// @dev Escrow contract for fast-finish. + address escrow; + /// @dev Address to refund tokens if call fails, or zero. + address refundAddress; + /// @dev Nonce. PayIntent receiving addresses are one-time use. + uint256 nonce; +} + +IDaimoBridger bridger = IDaimoBridger(address(0)); // TODO + +/// @dev This is an ephemeral intent contract. Any supported tokens sent to this +/// address on any supported chain are forwarded, via a combination of +/// bridging and swapping, into a specified call on a destination chain. +contract PayIntentContract is Initializable { + using SafeERC20 for IERC20; + + /// @dev Save gas by minimizing storage to a single word. This makes intents + /// usable on L1. intentHash = keccak(abi.encode(PayIntent)) + bytes32 intentHash; + + /// @dev Runs at deploy time. Singleton implementation contract = no init, + /// no state. All other methods are called via proxy. + constructor() { + _disableInitializers(); + } + + function initialize(bytes32 _intentHash) public initializer { + intentHash = _intentHash; + } + + /// Can only be called on foreign chains. Sends funds to dest chain. + function sendAndSelfDestruct( + PayIntent calldata intent, + Call[] calldata swapCalls, + bytes calldata bridgeExtraData + ) public { + require(msg.sender == intent.escrow, "FCCTP: only escrow"); + require(block.chainid != intent.chainId, "FCCTP: only foreign chain"); + require(keccak256(abi.encode(intent)) == intentHash, "FCCTP: intent"); + + // Run arbitrary calls provided by the LP. These will generally swap if + // necessary, then approve tokens to the bridger. + for (uint256 i = 0; i < swapCalls.length; ++i) { + Call calldata call = swapCalls[i]; + (bool success, ) = call.to.call{value: call.value}(call.data); + require(success, "FCCTP: swap call failed"); + } + + // Bridge (via CCTP, etc) + bridger.sendToChain({ + toChainId: intent.chainId, + toAddress: address(this), + toToken: address(intent.bridgeToken.addr), + toAmount: intent.bridgeToken.amount, + extraData: bridgeExtraData + }); + + // This use of SELFDESTRUCT is compatible with EIP-6780. Ephemeral + // contracts are deployed, then destroyed in the same transaction. + // solhint-disable-next-line + selfdestruct(creator); + } + + /// One step: receive mintToken and send to creator + function receiveAndSelfDestruct(PayIntent calldata intent) public { + require(msg.sender == creator, "FCCTP: only creator"); + require(block.chainid == intent.chainId, "FCCTP: only dest chain"); + require(keccak256(abi.encode(intent)) == intentHash, "FCCTP: intent"); + + IERC20 bridgeTok = intent.bridgeToken.addr; + uint256 amount = TokenUtils.getBalanceOf(bridgeTok, address(this)); + require( + amount >= intent.bridgeToken.amount, + "FCCTP: insufficient bridge token received" + ); + + // Send to escrow contract, which will forward to current recipient + TokenUtils.transfer(intent.bridgeToken.addr, intent.escrow, amount); + + // This use of SELFDESTRUCT is compatible with EIP-6780. Handoff + // contracts are deployed, then destroyed in the same transaction. + // solhint-disable-next-line + selfdestruct(intent.escrow); + } + + /// Accept native-token (eg ETH) inputs + fallback() external payable {} +} diff --git a/packages/contract/src/pay/TokenUtils.sol b/packages/contract/src/pay/TokenUtils.sol new file mode 100644 index 000000000..962d7db8e --- /dev/null +++ b/packages/contract/src/pay/TokenUtils.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.12; + +import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; + +/** Utility functions that work for both ERC20 and native tokens. */ +library TokenUtils { + using SafeERC20 for IERC20; + + /** Returns ERC20 or ETH balance. */ + function getBalanceOf( + IERC20 token, + address addr + ) internal view returns (uint256) { + if (address(token) == address(0)) { + return addr.balance; + } else { + return token.balanceOf(addr); + } + } + + /** Sends an ERC20 or ETH transfer. For ETH, verify call success. */ + function transfer( + IERC20 token, + address payable recipient, + uint256 amount + ) internal { + if (address(token) != address(0)) { + token.safeTransfer(recipient, amount); + } else { + // Native token transfer + (bool success, ) = recipient.call{value: amount}(""); + require(success, "TokenUtils: ETH transfer failed"); + } + } +} From eef919a721a7e432b8115b86f6a4800ae1ef68fb Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 3 Oct 2024 18:22:43 -0700 Subject: [PATCH 2/7] pay contract: bridger interface and cctp bridger --- packages/contract/src/DaimoPayCCTPBridger.sol | 129 ++++++++++++++++++ .../src/interfaces/IDaimoPayBridger.sol | 18 +++ 2 files changed, 147 insertions(+) create mode 100644 packages/contract/src/DaimoPayCCTPBridger.sol create mode 100644 packages/contract/src/interfaces/IDaimoPayBridger.sol diff --git a/packages/contract/src/DaimoPayCCTPBridger.sol b/packages/contract/src/DaimoPayCCTPBridger.sol new file mode 100644 index 000000000..87a4fec84 --- /dev/null +++ b/packages/contract/src/DaimoPayCCTPBridger.sol @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.12; + +import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; +import "openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol"; + +import "./interfaces/IDaimoPayBridger.sol"; +import "./DaimoFastCCTP.sol"; + +/// @title Bridger implementation for Circle's Cross-Chain Transfer Protocol (CCTP) +/// @author The Daimo team +/// @custom:security-contact security@daimo.com +/// +/// Bridges assets from to a destination chain using CCTP. The only supported +/// bridge token is USDC. +contract DaimoPayCCTPBridger is + IDaimoPayBridger, + Ownable2StepUpgradeable, + UUPSUpgradeable +{ + using SafeERC20 for IERC20; + + // CCTP TokenMessenger for this chain. + ICCTPTokenMessenger public immutable cctpMessenger; + + // Map chainID to CCTP domain. CCTP uses 0 as a domain. In order to use + // 0 as a not-found value, store CCTP domain + 1 in the mapping. + // 0 = not found, 1 = Ethereum, 2 = Avalanche, etc. + mapping(uint256 chainId => uint32 domain) public cctpDomainMapping; + + event DomainAdded(uint256 indexed chainID, uint32 domain); + event BridgeInitiated( + address indexed sender, + IERC20 indexed tokenIn, + uint256 amountIn, + uint256 toChainID + ); + + constructor() { + _disableInitializers(); + } + + // ----- ADMIN FUNCTIONS ----- + + /// Initialize. Specify owner (not msg.sender) to allow CREATE3 deployment. + function init( + address _initialOwner, + ICCTPTokenMessenger _cctpMessenger, + uint256[] memory _cctpChainIDs, + uint32[] memory _cctpDomains + ) public initializer { + __Ownable_init(_initialOwner); + + cctpMessenger = _cctpMessenger; + + uint256 n = _cctpChainIDs.length; + require(n == _cctpDomains.length, "DPCCTPB: wrong cctpDomains length"); + + for (uint256 i = 0; i < n; ++i) { + _addDomain(_cctpChainIDs[i], _cctpDomains[i]); + } + } + + /// UUPSUpsgradeable: only allow owner to upgrade + function _authorizeUpgrade(address) internal view override onlyOwner {} + + /// UUPSUpgradeable: expose implementation + function implementation() public view returns (address) { + return ERC1967Utils.getImplementation(); + } + + /// Adds a new supported CCTP recipient chain. + function addCCTPDomain( + uint256 chainID, + uint32 domain + ) public onlyOwner { + _addDomain(chainID, domain); + } + + function _addDomain(uint256 chainID, uint32 domain) private { + require(chainID != 0, "DPCCTPB: missing chainID"); + // CCTP uses 0 as a domain. In order to use 0 as a not-found value, + // store CCTP domain + 1 in the mapping. + cctpDomainMapping[chainID] = domain + 1; + emit DomainAdded(chainID, domain); + } + + function _getDomain(uint256 chainID) internal view returns (uint32) { + uint32 domain = cctpDomainMapping[chainID]; + // The mapping stores CCTP domain + 1 and reserves 0 for not-found. + require(domain != 0, "DPCCTPB: missing domain"); + return domain - 1; + } + + function addressToBytes32(address addr) internal pure returns (bytes32) { + return bytes32(uint256(uint160(addr))); + } + + // ----- PUBLIC FUNCTIONS ----- + + /// Initiates a bridge to a destination chain using CCTP. + function sendToChain( + IERC20 tokenIn, + uint256 amountIn, + uint256 toChainID, + bytes calldata /* extraData */ + ) public { + // Move input token from caller to this contract and approve CCTP. + tokenIn.safeTransferFrom({ + from: msg.sender, + to: address(this), + value: amountIn + }); + tokenIn.forceApprove({spender: address(cctpMessenger), value: amountIn}); + + uint32 domain = _getDomain(toChainID); + + cctpMessenger.depositForBurn({ + amount: amountIn, + destinationDomain: domain, + mintRecipient: addressToBytes32(address(this)), + burnToken: address(tokenIn) + }); + + emit BridgeInitiated(msg.sender, tokenIn, amountIn, toChainID); + } +} diff --git a/packages/contract/src/interfaces/IDaimoPayBridger.sol b/packages/contract/src/interfaces/IDaimoPayBridger.sol new file mode 100644 index 000000000..dc732f3a3 --- /dev/null +++ b/packages/contract/src/interfaces/IDaimoPayBridger.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.12; + +import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; + +/// @notice Bridges assets automatically. Specifically, it lets any market maker +/// initiate a bridge transaction to another chain. +interface IDaimoPayBridger { + /// @dev Initiates a bridge. Guarantees that (toToken, toAmount) shows up + /// in (toAddress) on (toChainId). Otherwise, reverts. + function sendToChain( + uint256 toChainId, + address toAddress, + address toToken, + uint256 toAmount, + bytes calldata extraData + ) external; +} From 713db56bf84e939d49239e36e58975e23f1cc065 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 3 Oct 2024 22:13:03 -0700 Subject: [PATCH 3/7] pay contract: across bridger --- .../contract/src/DaimoPayAcrossBridger.sol | 105 ++++++++ .../vendor/across/V3SpokePoolInterface.sol | 238 ++++++++++++++++++ 2 files changed, 343 insertions(+) create mode 100644 packages/contract/src/DaimoPayAcrossBridger.sol create mode 100644 packages/contract/vendor/across/V3SpokePoolInterface.sol diff --git a/packages/contract/src/DaimoPayAcrossBridger.sol b/packages/contract/src/DaimoPayAcrossBridger.sol new file mode 100644 index 000000000..dbfdb40e0 --- /dev/null +++ b/packages/contract/src/DaimoPayAcrossBridger.sol @@ -0,0 +1,105 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.12; + +import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; +import "openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol"; + +import "./interfaces/IDaimoPayBridger.sol"; +import "./DaimoFastCCTP.sol"; +import "../vendor/across/V3SpokePoolInterface.sol"; + +/// @title Bridger implementation for Across Protocol +/// @author The Daimo team +/// @custom:security-contact security@daimo.com +/// +/// Bridges assets from to a destination chain using Across Protocol. +contract DaimoPayAcrossBridger is + IDaimoPayBridger, + Ownable2StepUpgradeable, + UUPSUpgradeable +{ + using SafeERC20 for IERC20; + + // SpokePool contract address for this chain. + V3SpokePoolInterface public immutable spokePool; + + event BridgeInitiated( + address indexed sender, + IERC20 indexed tokenIn, + uint256 amountIn, + uint256 toChainID + ); + + constructor() { + _disableInitializers(); + } + + // ----- ADMIN FUNCTIONS ----- + + /// Initialize. Specify owner (not msg.sender) to allow CREATE3 deployment. + function init( + address _initialOwner, + V3SpokePoolInterface _spokePool + ) public initializer { + __Ownable_init(_initialOwner); + + spokePool = _spokePool; + } + + /// UUPSUpsgradeable: only allow owner to upgrade + function _authorizeUpgrade(address) internal view override onlyOwner {} + + /// UUPSUpgradeable: expose implementation + function implementation() public view returns (address) { + return ERC1967Utils.getImplementation(); + } + + // ----- PUBLIC FUNCTIONS ----- + + /// Initiates a bridge to a destination chain using Across Protocol. + function sendToChain( + IERC20 tokenIn, + uint256 amountIn, + uint256 toChainID, + bytes calldata extraData + ) public { + // Parse remaining arguments from extraData + ( + address outputToken, + uint256 outputAmount, + address exclusiveRelayer, + uint32 quoteTimestamp, + uint32 fillDeadline, + uint32 exclusivityDeadline, + bytes memory message + ) = abi.decode(extraData, (address, uint256, address, uint32, uint32, uint32, bytes)); + + // Move input token from caller to this contract and approve the + // SpokePool contract. + tokenIn.safeTransferFrom({ + from: msg.sender, + to: address(this), + value: amountIn + }); + tokenIn.forceApprove({spender: address(spokePool), value: amountIn}); + + spokePool.depositV3({ + depositor: address(this), + recipient: msg.sender, + inputToken: address(tokenIn), + outputToken: outputToken, + inputAmount: amountIn, + outputAmount: outputAmount, + destinationChainId: toChainID, + exclusiveRelayer: exclusiveRelayer, + quoteTimestamp: quoteTimestamp, + fillDeadline: fillDeadline, + exclusivityDeadline: exclusivityDeadline, + message: message + }); + + emit BridgeInitiated(msg.sender, tokenIn, amountIn, toChainID); + } +} diff --git a/packages/contract/vendor/across/V3SpokePoolInterface.sol b/packages/contract/vendor/across/V3SpokePoolInterface.sol new file mode 100644 index 000000000..abe7a197a --- /dev/null +++ b/packages/contract/vendor/across/V3SpokePoolInterface.sol @@ -0,0 +1,238 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.0; + +// Contains structs and functions used by SpokePool contracts to facilitate universal settlement. +interface V3SpokePoolInterface { + /************************************** + * ENUMS * + **************************************/ + + // Fill status tracks on-chain state of deposit, uniquely identified by relayHash. + enum FillStatus { + Unfilled, + RequestedSlowFill, + Filled + } + // Fill type is emitted in the FilledRelay event to assist Dataworker with determining which types of + // fills to refund (e.g. only fast fills) and whether a fast fill created a sow fill excess. + enum FillType { + FastFill, + // Fast fills are normal fills that do not replace a slow fill request. + ReplacedSlowFill, + // Replaced slow fills are fast fills that replace a slow fill request. This type is used by the Dataworker + // to know when to send excess funds from the SpokePool to the HubPool because they can no longer be used + // for a slow fill execution. + SlowFill + // Slow fills are requested via requestSlowFill and executed by executeSlowRelayLeaf after a bundle containing + // the slow fill is validated. + } + + /************************************** + * STRUCTS * + **************************************/ + + // This struct represents the data to fully specify a **unique** relay submitted on this chain. + // This data is hashed with the chainId() and saved by the SpokePool to prevent collisions and protect against + // replay attacks on other chains. If any portion of this data differs, the relay is considered to be + // completely distinct. + struct V3RelayData { + // The address that made the deposit on the origin chain. + address depositor; + // The recipient address on the destination chain. + address recipient; + // This is the exclusive relayer who can fill the deposit before the exclusivity deadline. + address exclusiveRelayer; + // Token that is deposited on origin chain by depositor. + address inputToken; + // Token that is received on destination chain by recipient. + address outputToken; + // The amount of input token deposited by depositor. + uint256 inputAmount; + // The amount of output token to be received by recipient. + uint256 outputAmount; + // Origin chain id. + uint256 originChainId; + // The id uniquely identifying this deposit on the origin chain. + uint32 depositId; + // The timestamp on the destination chain after which this deposit can no longer be filled. + uint32 fillDeadline; + // The timestamp on the destination chain after which any relayer can fill the deposit. + uint32 exclusivityDeadline; + // Data that is forwarded to the recipient. + bytes message; + } + + // Contains parameters passed in by someone who wants to execute a slow relay leaf. + struct V3SlowFill { + V3RelayData relayData; + uint256 chainId; + uint256 updatedOutputAmount; + } + + // Contains information about a relay to be sent along with additional information that is not unique to the + // relay itself but is required to know how to process the relay. For example, "updatedX" fields can be used + // by the relayer to modify fields of the relay with the depositor's permission, and "repaymentChainId" is specified + // by the relayer to determine where to take a relayer refund, but doesn't affect the uniqueness of the relay. + struct V3RelayExecutionParams { + V3RelayData relay; + bytes32 relayHash; + uint256 updatedOutputAmount; + address updatedRecipient; + bytes updatedMessage; + uint256 repaymentChainId; + } + + // Packs together parameters emitted in FilledV3Relay because there are too many emitted otherwise. + // Similar to V3RelayExecutionParams, these parameters are not used to uniquely identify the deposit being + // filled so they don't have to be unpacked by all clients. + struct V3RelayExecutionEventInfo { + address updatedRecipient; + bytes updatedMessage; + uint256 updatedOutputAmount; + FillType fillType; + } + + /************************************** + * EVENTS * + **************************************/ + + event V3FundsDeposited( + address inputToken, + address outputToken, + uint256 inputAmount, + uint256 outputAmount, + uint256 indexed destinationChainId, + uint32 indexed depositId, + uint32 quoteTimestamp, + uint32 fillDeadline, + uint32 exclusivityDeadline, + address indexed depositor, + address recipient, + address exclusiveRelayer, + bytes message + ); + + event RequestedSpeedUpV3Deposit( + uint256 updatedOutputAmount, + uint32 indexed depositId, + address indexed depositor, + address updatedRecipient, + bytes updatedMessage, + bytes depositorSignature + ); + + event FilledV3Relay( + address inputToken, + address outputToken, + uint256 inputAmount, + uint256 outputAmount, + uint256 repaymentChainId, + uint256 indexed originChainId, + uint32 indexed depositId, + uint32 fillDeadline, + uint32 exclusivityDeadline, + address exclusiveRelayer, + address indexed relayer, + address depositor, + address recipient, + bytes message, + V3RelayExecutionEventInfo relayExecutionInfo + ); + + event RequestedV3SlowFill( + address inputToken, + address outputToken, + uint256 inputAmount, + uint256 outputAmount, + uint256 indexed originChainId, + uint32 indexed depositId, + uint32 fillDeadline, + uint32 exclusivityDeadline, + address exclusiveRelayer, + address depositor, + address recipient, + bytes message + ); + + /************************************** + * FUNCTIONS * + **************************************/ + + function depositV3( + address depositor, + address recipient, + address inputToken, + address outputToken, + uint256 inputAmount, + uint256 outputAmount, + uint256 destinationChainId, + address exclusiveRelayer, + uint32 quoteTimestamp, + uint32 fillDeadline, + uint32 exclusivityDeadline, + bytes calldata message + ) external payable; + + function depositV3Now( + address depositor, + address recipient, + address inputToken, + address outputToken, + uint256 inputAmount, + uint256 outputAmount, + uint256 destinationChainId, + address exclusiveRelayer, + uint32 fillDeadlineOffset, + uint32 exclusivityDeadline, + bytes calldata message + ) external payable; + + function speedUpV3Deposit( + address depositor, + uint32 depositId, + uint256 updatedOutputAmount, + address updatedRecipient, + bytes calldata updatedMessage, + bytes calldata depositorSignature + ) external; + + function fillV3Relay(V3RelayData calldata relayData, uint256 repaymentChainId) external; + + function fillV3RelayWithUpdatedDeposit( + V3RelayData calldata relayData, + uint256 repaymentChainId, + uint256 updatedOutputAmount, + address updatedRecipient, + bytes calldata updatedMessage, + bytes calldata depositorSignature + ) external; + + function requestV3SlowFill(V3RelayData calldata relayData) external; + + function executeV3SlowRelayLeaf( + V3SlowFill calldata slowFillLeaf, + uint32 rootBundleId, + bytes32[] calldata proof + ) external; + + /************************************** + * ERRORS * + **************************************/ + + error DisabledRoute(); + error InvalidQuoteTimestamp(); + error InvalidFillDeadline(); + error InvalidExclusiveRelayer(); + error InvalidExclusivityDeadline(); + error MsgValueDoesNotMatchInputAmount(); + error NotExclusiveRelayer(); + error NoSlowFillsInExclusivityWindow(); + error RelayFilled(); + error InvalidSlowFillRequest(); + error ExpiredFillDeadline(); + error InvalidMerkleProof(); + error InvalidChainId(); + error InvalidMerkleLeaf(); + error ClaimedMerkleLeaf(); + error InvalidPayoutAdjustmentPct(); +} \ No newline at end of file From 4fe9b05ef1f16a7211c2f5cd065859853ddfb3e7 Mon Sep 17 00:00:00 2001 From: DC Date: Fri, 4 Oct 2024 09:42:04 -0700 Subject: [PATCH 4/7] contract: deploy Crepe* to sepolia+baseSepolia --- .../84532/run-latest.json | 83 ++++++++++++++++++ .../11155111/run-latest.json | 44 ++++++++++ .../84532/run-latest.json | 67 +++++++++++++++ .../11155111/run-latest.json | 80 +++++++++++++++++ .../84532/run-latest.json | 86 +++++++++++++++++++ 5 files changed, 360 insertions(+) create mode 100644 packages/contract/broadcast/DeployCrepeBotLP.s.sol/84532/run-latest.json create mode 100644 packages/contract/broadcast/DeployCrepeFastCCTP.s.sol/11155111/run-latest.json create mode 100644 packages/contract/broadcast/DeployCrepeFastCCTP.s.sol/84532/run-latest.json create mode 100644 packages/contract/broadcast/DeployCrepeHandoffFactory.s.sol/11155111/run-latest.json create mode 100644 packages/contract/broadcast/DeployCrepeHandoffFactory.s.sol/84532/run-latest.json diff --git a/packages/contract/broadcast/DeployCrepeBotLP.s.sol/84532/run-latest.json b/packages/contract/broadcast/DeployCrepeBotLP.s.sol/84532/run-latest.json new file mode 100644 index 000000000..15dfbefe5 --- /dev/null +++ b/packages/contract/broadcast/DeployCrepeBotLP.s.sol/84532/run-latest.json @@ -0,0 +1,83 @@ +{ + "transactions": [ + { + "hash": "0x752a7c1e17f8fde1e2ebafca67cf0e34804b9afec0aaceda922ede20a5f95243", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "function": "deploy(bytes32,bytes)", + "arguments": [ + "0x0f7958f1fd8fb0280b8d5bc044f6cd82efb572410ca1d90cf5ede833770b5d61", + "0x6080346100f157601f6116f438819003918201601f19168301916001600160401b038311848410176100f55780849260409485528339810103126100f15780516001600160a01b03811691908290036100f157602001516001600160a01b038116908190036100f15781156100de57600180546001600160a01b03199081169091555f80549182168417815560405193916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3600280546001600160a01b0319169190911790556115ea908161010a8239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081633e413bee14610d8c57508063715018a614610cca57806379ba509714610bc25780638da5cb5b14610b725780639753f7d7146106775780639e9a74e3146103bc578063b85e284d1461019a578063e30c3978146101485763f2fde38b0361000f57346101455760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101455773ffffffffffffffffffffffffffffffffffffffff6100d3610dda565b6100db61121e565b16807fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015573ffffffffffffffffffffffffffffffffffffffff8254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b80fd5b503461014557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014557602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101455760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101455760043567ffffffffffffffff811161036057818160040160607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126103605760243573ffffffffffffffffffffffffffffffffffffffff811680910361036f576044359367ffffffffffffffff85116103b8576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc86360301126103b8576064359267ffffffffffffffff84116103b45760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85360301126103b45784916102b761121e565b604481016102c58184610faa565b9050610373575b50505050803b1561036f5761031b83929183926040519485809481937f7be2e14c0000000000000000000000000000000000000000000000000000000083526004018a60040160048401611149565b03925af180156103645761034b575b5061034882606461033d60448301610e64565b9101359033906113fa565b80f35b8161035591610f24565b61036057815f61032a565b5080fd5b6040513d84823e3d90fd5b8280fd5b8261038a6024926103848796610e64565b92610faa565b9290836040519485928337810186815203930135905af1506103aa610ffb565b50825f80806102cc565b8480fd5b8380fd5b50346105eb5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb576103f4610dda565b60243567ffffffffffffffff81116105eb576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126105eb576044359067ffffffffffffffff82116105eb5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126105eb5761047a61121e565b604481019161048883610e64565b61049b606484013580923090339061123e565b73ffffffffffffffffffffffffffffffffffffffff806104ba86610e64565b96169516806105ef575b5050833b156105eb5761050e915f9160405193849283927f1faf25310000000000000000000000000000000000000000000000000000000084526004019060040160048401611149565b038183875af180156105e0576105c9575b5061053e73ffffffffffffffffffffffffffffffffffffffff91610e64565b169081610549578280f35b6020906040519283917f095ea7b300000000000000000000000000000000000000000000000000000000835260048301528460248301528185604482800301925af180156103645761059a57808280f35b6105bb9060203d6020116105c2575b6105b38183610f24565b810190610f92565b505f808280f35b503d6105a9565b6105d69193505f90610f24565b5f9161053e61051f565b6040513d5f823e3d90fd5b5f80fd5b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810192909252602090829060449082905f905af180156105e057610658575b806104c4565b6106709060203d6020116105c2576105b38183610f24565b505f610652565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160e081126105eb576040136105eb5760443560407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126105eb5760a4359060c4359067ffffffffffffffff82116105eb57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126105eb5773ffffffffffffffffffffffffffffffffffffffff5f54163203610b145773ffffffffffffffffffffffffffffffffffffffff610759610e1e565b1661097a5750346024350361091c575f806107d2935b602461078361077c610e41565b309061134c565b9461079b61079082610e64565b916044850190610faa565b9290836040519485928337810186815203930135905af1506107bb610ffb565b506107cd306107c8610e41565b61134c565b610e85565b60843590818110156108df576107eb6107f49183610e85565b92831115610ebf565b6107fc610e41565b73ffffffffffffffffffffffffffffffffffffffff806002541691160361085b5761084c61001a9261082c610e41565b309073ffffffffffffffffffffffffffffffffffffffff5f54169061123e565b610854610e41565b33906113fa565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f43424c503a2061736b656420746f206f75747075742077726f6e6720746f6b6560448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b61001a92506108f18261091792610e85565b6108f9610e41565b73ffffffffffffffffffffffffffffffffffffffff5f5416906113fa565b61084c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f43424c503a2077726f6e67206d73672e76616c756500000000000000000000006044820152fd5b61098f81610986610e1e565b3090339061123e565b60243590818110610a5e575b506020610a229173ffffffffffffffffffffffffffffffffffffffff6109bf610e1e565b166109c985610e64565b5f6040518096819582947f095ea7b3000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af180156105e0576107d2935f928392610a3f575b5061076f565b610a579060203d6020116105c2576105b38183610f24565b5086610a39565b610a689082610e85565b610a7485821115610ebf565b610a7c610e1e565b73ffffffffffffffffffffffffffffffffffffffff8060025416911603610ab657610a2291610aaf60209261082c610e1e565b915061099b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f43424c503a2061736b656420746f20696e7075742077726f6e6720746f6b656e6044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43424c503a206f6e6c7920757361626c65206279206f776e65720000000000006044820152fd5b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb573373ffffffffffffffffffffffffffffffffffffffff6001541603610c9e577fffffffffffffffffffffffff0000000000000000000000000000000000000000600154166001555f54337fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f5573ffffffffffffffffffffffffffffffffffffffff3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb57610d0061121e565b7fffffffffffffffffffffffff0000000000000000000000000000000000000000600154166001555f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb5760209073ffffffffffffffffffffffffffffffffffffffff600254168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036105eb57565b359073ffffffffffffffffffffffffffffffffffffffff821682036105eb57565b60043573ffffffffffffffffffffffffffffffffffffffff811681036105eb5790565b60643573ffffffffffffffffffffffffffffffffffffffff811681036105eb5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036105eb5790565b91908203918211610e9257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15610ec657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f43424c503a2065786365737369766520746970000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f6557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b908160209103126105eb575180151581036105eb5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156105eb570180359067ffffffffffffffff82116105eb576020019181360383136105eb57565b3d15611053573d9067ffffffffffffffff8211610f65576040519161104860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610f24565b82523d5f602084013e565b606090565b803573ffffffffffffffffffffffffffffffffffffffff81168091036105eb578252602090810135910152565b73ffffffffffffffffffffffffffffffffffffffff6110a382610dfd565b1682526020810135602083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156105eb5701906020823592019167ffffffffffffffff81116105eb5780360383136105eb57601f817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09260809560606040870152816060870152868601375f8582860101520116010190565b916040835281356040840152602082013563ffffffff81168091036105eb57606084015261117d6080840160408401611058565b61118d60c0840160808401611058565b60c0820135927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018412156105eb576101006111dd61121b95610120838501528561016085019101611085565b9373ffffffffffffffffffffffffffffffffffffffff6111ff60e08301610dfd565b1661012084015201356101408201526020818403910152611085565b90565b73ffffffffffffffffffffffffffffffffffffffff5f54163303610c9e57565b90919273ffffffffffffffffffffffffffffffffffffffff8216156112c85773ffffffffffffffffffffffffffffffffffffffff6112c69481604051957f23b872dd0000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606482526112c1608483610f24565b61152d565b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4372657065546f6b656e5574696c733a20455448207472616e7366657246726f60448201527f6d206d7573742062652063616c6c6572000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff168061136c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156105e0575f916113cb575090565b90506020813d6020116113f2575b816113e660209383610f24565b810103126105eb575190565b3d91506113d9565b9073ffffffffffffffffffffffffffffffffffffffff82161561147a576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9190911660248201526044808201939093529182526112c691906112c1606483610f24565b5f809381935073ffffffffffffffffffffffffffffffffffffffff8293165af16114a2610ffb565b50156114aa57565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b905f602091828151910182855af1156105e0575f513d6115ab575073ffffffffffffffffffffffffffffffffffffffff81163b155b6115695750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001141561156256fea264697066735822122008f0d001625a0e41f6b86d61216c0f9dfe0587bebc5ee18218a573fca71cf0c264736f6c634300081a00330000000000000000000000002a6d311394184eeb6df8fbbf58626b085374ffe7000000000000000000000000036cbd53842c5426634e7929541ec2318f3dcf7e" + ], + "transaction": { + "from": "0x2a6d311394184eeb6df8fbbf58626b085374ffe7", + "to": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "gas": "0x1cbe1c", + "value": "0x0", + "input": "0xcdcb760a0f7958f1fd8fb0280b8d5bc044f6cd82efb572410ca1d90cf5ede833770b5d61000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000017346080346100f157601f6116f438819003918201601f19168301916001600160401b038311848410176100f55780849260409485528339810103126100f15780516001600160a01b03811691908290036100f157602001516001600160a01b038116908190036100f15781156100de57600180546001600160a01b03199081169091555f80549182168417815560405193916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3600280546001600160a01b0319169190911790556115ea908161010a8239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081633e413bee14610d8c57508063715018a614610cca57806379ba509714610bc25780638da5cb5b14610b725780639753f7d7146106775780639e9a74e3146103bc578063b85e284d1461019a578063e30c3978146101485763f2fde38b0361000f57346101455760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101455773ffffffffffffffffffffffffffffffffffffffff6100d3610dda565b6100db61121e565b16807fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015573ffffffffffffffffffffffffffffffffffffffff8254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b80fd5b503461014557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014557602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101455760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101455760043567ffffffffffffffff811161036057818160040160607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126103605760243573ffffffffffffffffffffffffffffffffffffffff811680910361036f576044359367ffffffffffffffff85116103b8576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc86360301126103b8576064359267ffffffffffffffff84116103b45760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85360301126103b45784916102b761121e565b604481016102c58184610faa565b9050610373575b50505050803b1561036f5761031b83929183926040519485809481937f7be2e14c0000000000000000000000000000000000000000000000000000000083526004018a60040160048401611149565b03925af180156103645761034b575b5061034882606461033d60448301610e64565b9101359033906113fa565b80f35b8161035591610f24565b61036057815f61032a565b5080fd5b6040513d84823e3d90fd5b8280fd5b8261038a6024926103848796610e64565b92610faa565b9290836040519485928337810186815203930135905af1506103aa610ffb565b50825f80806102cc565b8480fd5b8380fd5b50346105eb5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb576103f4610dda565b60243567ffffffffffffffff81116105eb576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126105eb576044359067ffffffffffffffff82116105eb5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126105eb5761047a61121e565b604481019161048883610e64565b61049b606484013580923090339061123e565b73ffffffffffffffffffffffffffffffffffffffff806104ba86610e64565b96169516806105ef575b5050833b156105eb5761050e915f9160405193849283927f1faf25310000000000000000000000000000000000000000000000000000000084526004019060040160048401611149565b038183875af180156105e0576105c9575b5061053e73ffffffffffffffffffffffffffffffffffffffff91610e64565b169081610549578280f35b6020906040519283917f095ea7b300000000000000000000000000000000000000000000000000000000835260048301528460248301528185604482800301925af180156103645761059a57808280f35b6105bb9060203d6020116105c2575b6105b38183610f24565b810190610f92565b505f808280f35b503d6105a9565b6105d69193505f90610f24565b5f9161053e61051f565b6040513d5f823e3d90fd5b5f80fd5b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810192909252602090829060449082905f905af180156105e057610658575b806104c4565b6106709060203d6020116105c2576105b38183610f24565b505f610652565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160e081126105eb576040136105eb5760443560407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126105eb5760a4359060c4359067ffffffffffffffff82116105eb57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126105eb5773ffffffffffffffffffffffffffffffffffffffff5f54163203610b145773ffffffffffffffffffffffffffffffffffffffff610759610e1e565b1661097a5750346024350361091c575f806107d2935b602461078361077c610e41565b309061134c565b9461079b61079082610e64565b916044850190610faa565b9290836040519485928337810186815203930135905af1506107bb610ffb565b506107cd306107c8610e41565b61134c565b610e85565b60843590818110156108df576107eb6107f49183610e85565b92831115610ebf565b6107fc610e41565b73ffffffffffffffffffffffffffffffffffffffff806002541691160361085b5761084c61001a9261082c610e41565b309073ffffffffffffffffffffffffffffffffffffffff5f54169061123e565b610854610e41565b33906113fa565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f43424c503a2061736b656420746f206f75747075742077726f6e6720746f6b6560448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b61001a92506108f18261091792610e85565b6108f9610e41565b73ffffffffffffffffffffffffffffffffffffffff5f5416906113fa565b61084c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f43424c503a2077726f6e67206d73672e76616c756500000000000000000000006044820152fd5b61098f81610986610e1e565b3090339061123e565b60243590818110610a5e575b506020610a229173ffffffffffffffffffffffffffffffffffffffff6109bf610e1e565b166109c985610e64565b5f6040518096819582947f095ea7b3000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af180156105e0576107d2935f928392610a3f575b5061076f565b610a579060203d6020116105c2576105b38183610f24565b5086610a39565b610a689082610e85565b610a7485821115610ebf565b610a7c610e1e565b73ffffffffffffffffffffffffffffffffffffffff8060025416911603610ab657610a2291610aaf60209261082c610e1e565b915061099b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f43424c503a2061736b656420746f20696e7075742077726f6e6720746f6b656e6044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43424c503a206f6e6c7920757361626c65206279206f776e65720000000000006044820152fd5b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb573373ffffffffffffffffffffffffffffffffffffffff6001541603610c9e577fffffffffffffffffffffffff0000000000000000000000000000000000000000600154166001555f54337fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f5573ffffffffffffffffffffffffffffffffffffffff3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb57610d0061121e565b7fffffffffffffffffffffffff0000000000000000000000000000000000000000600154166001555f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb5760209073ffffffffffffffffffffffffffffffffffffffff600254168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036105eb57565b359073ffffffffffffffffffffffffffffffffffffffff821682036105eb57565b60043573ffffffffffffffffffffffffffffffffffffffff811681036105eb5790565b60643573ffffffffffffffffffffffffffffffffffffffff811681036105eb5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036105eb5790565b91908203918211610e9257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15610ec657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f43424c503a2065786365737369766520746970000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f6557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b908160209103126105eb575180151581036105eb5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156105eb570180359067ffffffffffffffff82116105eb576020019181360383136105eb57565b3d15611053573d9067ffffffffffffffff8211610f65576040519161104860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610f24565b82523d5f602084013e565b606090565b803573ffffffffffffffffffffffffffffffffffffffff81168091036105eb578252602090810135910152565b73ffffffffffffffffffffffffffffffffffffffff6110a382610dfd565b1682526020810135602083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156105eb5701906020823592019167ffffffffffffffff81116105eb5780360383136105eb57601f817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09260809560606040870152816060870152868601375f8582860101520116010190565b916040835281356040840152602082013563ffffffff81168091036105eb57606084015261117d6080840160408401611058565b61118d60c0840160808401611058565b60c0820135927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018412156105eb576101006111dd61121b95610120838501528561016085019101611085565b9373ffffffffffffffffffffffffffffffffffffffff6111ff60e08301610dfd565b1661012084015201356101408201526020818403910152611085565b90565b73ffffffffffffffffffffffffffffffffffffffff5f54163303610c9e57565b90919273ffffffffffffffffffffffffffffffffffffffff8216156112c85773ffffffffffffffffffffffffffffffffffffffff6112c69481604051957f23b872dd0000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606482526112c1608483610f24565b61152d565b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4372657065546f6b656e5574696c733a20455448207472616e7366657246726f60448201527f6d206d7573742062652063616c6c6572000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff168061136c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156105e0575f916113cb575090565b90506020813d6020116113f2575b816113e660209383610f24565b810103126105eb575190565b3d91506113d9565b9073ffffffffffffffffffffffffffffffffffffffff82161561147a576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9190911660248201526044808201939093529182526112c691906112c1606483610f24565b5f809381935073ffffffffffffffffffffffffffffffffffffffff8293165af16114a2610ffb565b50156114aa57565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b905f602091828151910182855af1156105e0575f513d6115ab575073ffffffffffffffffffffffffffffffffffffffff81163b155b6115695750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001141561156256fea264697066735822122008f0d001625a0e41f6b86d61216c0f9dfe0587bebc5ee18218a573fca71cf0c264736f6c634300081a00330000000000000000000000002a6d311394184eeb6df8fbbf58626b085374ffe7000000000000000000000000036cbd53842c5426634e7929541ec2318f3dcf7e000000000000000000000000", + "nonce": "0x782", + "chainId": "0x14a34" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "address": "0x6f92ca43cc813b9b135f89147730340ecbfba45d", + "initCode": "0x67363d3d37363d34f03d5260086018f3" + }, + { + "transactionType": "CREATE", + "address": "0x28b56d1d956c8908e79925a03ea4446373d26b22", + "initCode": "0x6080346100f157601f6116f438819003918201601f19168301916001600160401b038311848410176100f55780849260409485528339810103126100f15780516001600160a01b03811691908290036100f157602001516001600160a01b038116908190036100f15781156100de57600180546001600160a01b03199081169091555f80549182168417815560405193916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3600280546001600160a01b0319169190911790556115ea908161010a8239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081633e413bee14610d8c57508063715018a614610cca57806379ba509714610bc25780638da5cb5b14610b725780639753f7d7146106775780639e9a74e3146103bc578063b85e284d1461019a578063e30c3978146101485763f2fde38b0361000f57346101455760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101455773ffffffffffffffffffffffffffffffffffffffff6100d3610dda565b6100db61121e565b16807fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015573ffffffffffffffffffffffffffffffffffffffff8254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b80fd5b503461014557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014557602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101455760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101455760043567ffffffffffffffff811161036057818160040160607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126103605760243573ffffffffffffffffffffffffffffffffffffffff811680910361036f576044359367ffffffffffffffff85116103b8576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc86360301126103b8576064359267ffffffffffffffff84116103b45760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85360301126103b45784916102b761121e565b604481016102c58184610faa565b9050610373575b50505050803b1561036f5761031b83929183926040519485809481937f7be2e14c0000000000000000000000000000000000000000000000000000000083526004018a60040160048401611149565b03925af180156103645761034b575b5061034882606461033d60448301610e64565b9101359033906113fa565b80f35b8161035591610f24565b61036057815f61032a565b5080fd5b6040513d84823e3d90fd5b8280fd5b8261038a6024926103848796610e64565b92610faa565b9290836040519485928337810186815203930135905af1506103aa610ffb565b50825f80806102cc565b8480fd5b8380fd5b50346105eb5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb576103f4610dda565b60243567ffffffffffffffff81116105eb576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126105eb576044359067ffffffffffffffff82116105eb5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126105eb5761047a61121e565b604481019161048883610e64565b61049b606484013580923090339061123e565b73ffffffffffffffffffffffffffffffffffffffff806104ba86610e64565b96169516806105ef575b5050833b156105eb5761050e915f9160405193849283927f1faf25310000000000000000000000000000000000000000000000000000000084526004019060040160048401611149565b038183875af180156105e0576105c9575b5061053e73ffffffffffffffffffffffffffffffffffffffff91610e64565b169081610549578280f35b6020906040519283917f095ea7b300000000000000000000000000000000000000000000000000000000835260048301528460248301528185604482800301925af180156103645761059a57808280f35b6105bb9060203d6020116105c2575b6105b38183610f24565b810190610f92565b505f808280f35b503d6105a9565b6105d69193505f90610f24565b5f9161053e61051f565b6040513d5f823e3d90fd5b5f80fd5b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810192909252602090829060449082905f905af180156105e057610658575b806104c4565b6106709060203d6020116105c2576105b38183610f24565b505f610652565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160e081126105eb576040136105eb5760443560407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126105eb5760a4359060c4359067ffffffffffffffff82116105eb57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126105eb5773ffffffffffffffffffffffffffffffffffffffff5f54163203610b145773ffffffffffffffffffffffffffffffffffffffff610759610e1e565b1661097a5750346024350361091c575f806107d2935b602461078361077c610e41565b309061134c565b9461079b61079082610e64565b916044850190610faa565b9290836040519485928337810186815203930135905af1506107bb610ffb565b506107cd306107c8610e41565b61134c565b610e85565b60843590818110156108df576107eb6107f49183610e85565b92831115610ebf565b6107fc610e41565b73ffffffffffffffffffffffffffffffffffffffff806002541691160361085b5761084c61001a9261082c610e41565b309073ffffffffffffffffffffffffffffffffffffffff5f54169061123e565b610854610e41565b33906113fa565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f43424c503a2061736b656420746f206f75747075742077726f6e6720746f6b6560448201527f6e000000000000000000000000000000000000000000000000000000000000006064820152fd5b61001a92506108f18261091792610e85565b6108f9610e41565b73ffffffffffffffffffffffffffffffffffffffff5f5416906113fa565b61084c565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f43424c503a2077726f6e67206d73672e76616c756500000000000000000000006044820152fd5b61098f81610986610e1e565b3090339061123e565b60243590818110610a5e575b506020610a229173ffffffffffffffffffffffffffffffffffffffff6109bf610e1e565b166109c985610e64565b5f6040518096819582947f095ea7b3000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af180156105e0576107d2935f928392610a3f575b5061076f565b610a579060203d6020116105c2576105b38183610f24565b5086610a39565b610a689082610e85565b610a7485821115610ebf565b610a7c610e1e565b73ffffffffffffffffffffffffffffffffffffffff8060025416911603610ab657610a2291610aaf60209261082c610e1e565b915061099b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f43424c503a2061736b656420746f20696e7075742077726f6e6720746f6b656e6044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43424c503a206f6e6c7920757361626c65206279206f776e65720000000000006044820152fd5b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb573373ffffffffffffffffffffffffffffffffffffffff6001541603610c9e577fffffffffffffffffffffffff0000000000000000000000000000000000000000600154166001555f54337fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f5573ffffffffffffffffffffffffffffffffffffffff3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb57610d0061121e565b7fffffffffffffffffffffffff0000000000000000000000000000000000000000600154166001555f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346105eb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105eb5760209073ffffffffffffffffffffffffffffffffffffffff600254168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036105eb57565b359073ffffffffffffffffffffffffffffffffffffffff821682036105eb57565b60043573ffffffffffffffffffffffffffffffffffffffff811681036105eb5790565b60643573ffffffffffffffffffffffffffffffffffffffff811681036105eb5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036105eb5790565b91908203918211610e9257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b15610ec657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f43424c503a2065786365737369766520746970000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f6557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b908160209103126105eb575180151581036105eb5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156105eb570180359067ffffffffffffffff82116105eb576020019181360383136105eb57565b3d15611053573d9067ffffffffffffffff8211610f65576040519161104860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610f24565b82523d5f602084013e565b606090565b803573ffffffffffffffffffffffffffffffffffffffff81168091036105eb578252602090810135910152565b73ffffffffffffffffffffffffffffffffffffffff6110a382610dfd565b1682526020810135602083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156105eb5701906020823592019167ffffffffffffffff81116105eb5780360383136105eb57601f817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09260809560606040870152816060870152868601375f8582860101520116010190565b916040835281356040840152602082013563ffffffff81168091036105eb57606084015261117d6080840160408401611058565b61118d60c0840160808401611058565b60c0820135927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018412156105eb576101006111dd61121b95610120838501528561016085019101611085565b9373ffffffffffffffffffffffffffffffffffffffff6111ff60e08301610dfd565b1661012084015201356101408201526020818403910152611085565b90565b73ffffffffffffffffffffffffffffffffffffffff5f54163303610c9e57565b90919273ffffffffffffffffffffffffffffffffffffffff8216156112c85773ffffffffffffffffffffffffffffffffffffffff6112c69481604051957f23b872dd0000000000000000000000000000000000000000000000000000000060208801521660248601521660448401526064830152606482526112c1608483610f24565b61152d565b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4372657065546f6b656e5574696c733a20455448207472616e7366657246726f60448201527f6d206d7573742062652063616c6c6572000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff168061136c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156105e0575f916113cb575090565b90506020813d6020116113f2575b816113e660209383610f24565b810103126105eb575190565b3d91506113d9565b9073ffffffffffffffffffffffffffffffffffffffff82161561147a576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9190911660248201526044808201939093529182526112c691906112c1606483610f24565b5f809381935073ffffffffffffffffffffffffffffffffffffffff8293165af16114a2610ffb565b50156114aa57565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b905f602091828151910182855af1156105e0575f513d6115ab575073ffffffffffffffffffffffffffffffffffffffff81163b155b6115695750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001141561156256fea264697066735822122008f0d001625a0e41f6b86d61216c0f9dfe0587bebc5ee18218a573fca71cf0c264736f6c634300081a00330000000000000000000000002a6d311394184eeb6df8fbbf58626b085374ffe7000000000000000000000000036cbd53842c5426634e7929541ec2318f3dcf7e" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x3e6170", + "logs": [ + { + "address": "0x28b56d1d956c8908e79925a03ea4446373d26b22", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000002a6d311394184eeb6df8fbbf58626b085374ffe7" + ], + "data": "0x", + "blockHash": "0x5b0b2c34de25e144deb44c79d3a84fcb3f489283ce2bd039168d41cd9b07c376", + "blockNumber": "0xf62fc6", + "transactionHash": "0x752a7c1e17f8fde1e2ebafca67cf0e34804b9afec0aaceda922ede20a5f95243", + "transactionIndex": "0x6", + "logIndex": "0x22", + "removed": false + } + ], + "logsBloom": "0x00000200000000000000040000000000000000000000000000800000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000020000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x752a7c1e17f8fde1e2ebafca67cf0e34804b9afec0aaceda922ede20a5f95243", + "transactionIndex": "0x6", + "blockHash": "0x5b0b2c34de25e144deb44c79d3a84fcb3f489283ce2bd039168d41cd9b07c376", + "blockNumber": "0xf62fc6", + "gasUsed": "0x14cf24", + "effectiveGasPrice": "0xd4666", + "from": "0x2a6d311394184eeb6df8fbbf58626b085374ffe7", + "to": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "contractAddress": null, + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0xdb07f24e8bc", + "l1GasPrice": "0x4b6cd3cefb", + "l1GasUsed": "0xa4d8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1728036482, + "chain": 84532, + "commit": "c2679066" +} \ No newline at end of file diff --git a/packages/contract/broadcast/DeployCrepeFastCCTP.s.sol/11155111/run-latest.json b/packages/contract/broadcast/DeployCrepeFastCCTP.s.sol/11155111/run-latest.json new file mode 100644 index 000000000..135edfeb9 --- /dev/null +++ b/packages/contract/broadcast/DeployCrepeFastCCTP.s.sol/11155111/run-latest.json @@ -0,0 +1,44 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "function": "deploy(bytes32,bytes)", + "arguments": [ + "0x06b6c605645a3c163a60451e79cdc7552fa49da151d91e048eddc5da44e7e57e", + "0x60e0346100d157601f611a6338819003918201601f19168301916001600160401b038311848410176100d5578084926060946040528339810103126100d1578051906001600160a01b03821682036100d1576020810151906001600160a01b03821682036100d15760400151916001600160a01b03831683036100d15760805260a05260c05260405161197990816100ea823960805181818160d20152611150015260a05181818161055601526107ec015260c051818181610247015281816102d80152818161070e0152610a3e0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c80631faf2531146109d3578063399512bf1461057a5780633a4beec81461050b5780634b56db72146104a65780637be2e14c1461026b57806392354010146101fc578063ae6f51b414610195578063ca2a7a5c146100f95763cfb3647b14610088575061000e565b346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f6576004359067ffffffffffffffff82116100f6576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126100f6576020610177836004016110b8565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760ff604060209273ffffffffffffffffffffffffffffffffffffffff6101e9610d72565b1681528084522054166040519015158152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100f65761027a36610cbf565b61028646833514610db6565b6040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806102be863060048401611034565b03818773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561049b5773ffffffffffffffffffffffffffffffffffffffff91859161046c575b501690813b1561045d57836040517fa5cd39ca000000000000000000000000000000000000000000000000000000008152818160048183885af1801561046157610448575b507f2d680d6e364e4f011c477837036636513f10f6d61c87bf0a3dd43d3508b4954a918373ffffffffffffffffffffffffffffffffffffffff925260016020528160408720541680155f1461042657506104076103ca6103c560c0880188611085565b611064565b918588526001602052604088208484167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905586611264565b6104206040519283926020845216956020830190610f79565b0390a380f35b905061044361043760408701611064565b826060880135916116ba565b610407565b8161045291610e1b565b61045d57835f610362565b8380fd5b6040513d84823e3d90fd5b61048e915060203d602011610494575b6104868183610e1b565b810190610e5c565b5f61031d565b503d61047c565b6040513d86823e3d90fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65773ffffffffffffffffffffffffffffffffffffffff6040602092826104f9610d72565b16815260018452205416604051908152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109255760043567ffffffffffffffff811161092557366023820112156109255780600401359067ffffffffffffffff8211610925573660248360061b83010111610925576024359167ffffffffffffffff83116109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8436030112610925576044359167ffffffffffffffff83116109255782600401926101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261092557610678846110b8565b9160405192604084019084821067ffffffffffffffff8311176109a65773ffffffffffffffffffffffffffffffffffffffff9160405216835260646020840192013582526040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806106f4893060048401611034565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610987575b501695865f525f60205260ff60405f20541661092957865f525f60205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055863b15610925579391906040519485937f209764030000000000000000000000000000000000000000000000000000000085528060a4860173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600488015260a0602488015252602460c486019301905f5b8181106108ff575050509173ffffffffffffffffffffffffffffffffffffffff61087e8386957ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc875f9a9703016044880152600401610eb5565b9251166064840152516084830152038183875af180156108f4576108dd575b506108d77fdf6f9600164762fc05c1699b1c56e038374a0e184038977bb5925074585ecc4991604051918291602083526020830190610f79565b0390a280f35b6108ea9193505f90610e1b565b5f916108d761089d565b6040513d5f823e3d90fd5b9194955091926040808261091560019489610e88565b0195019101918795949392610824565b5f80fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a20616c72656164792073656e74000000000000000000000000006044820152fd5b6109a0915060203d602011610494576104868183610e1b565b5f610753565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610925576109e136610cbf565b6109ed46833514610db6565b6040517fd6c5526600000000000000000000000000000000000000000000000000000000815260208180610a25863060048401611034565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610ca0575b501690815f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f205416610c4257815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610b0360408401611064565b9073ffffffffffffffffffffffffffffffffffffffff821615610bbe57610b7b610b8192604051907f23b872dd0000000000000000000000000000000000000000000000000000000060208301523360248301523060448301526060870135606483015260648252610b76608483610e1b565b6118bc565b83611264565b7f6e18134e5b219f1786dd555b831eb2b7faee00475bf43015fc58d045fdeb8f086040516020815280610bb933956020830190610f79565b0390a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4372657065546f6b656e5574696c733a20455448207472616e7366657246726f60448201527f6d206d7573742062652063616c6c6572000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20616c72656164792066696e69736865640000000000000000006044820152fd5b610cb9915060203d602011610494576104868183610e1b565b84610a83565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126109255760043567ffffffffffffffff8111610925576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261092557600401916024359067ffffffffffffffff8211610925577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126109255760040190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b15610dbd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2077726f6e6720636861696e00000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176109a657604052565b90816020910312610925575173ffffffffffffffffffffffffffffffffffffffff811681036109255790565b803573ffffffffffffffffffffffffffffffffffffffff8116809103610925578252602090810135910152565b73ffffffffffffffffffffffffffffffffffffffff610ed382610d95565b1682526020810135602083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156109255701906020823592019167ffffffffffffffff811161092557803603831361092557601f817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09260809560606040870152816060870152868601375f8582860101520116010190565b9081358152602082013563ffffffff8116809103610925576020820152610fa66040820160408401610e88565b610fb66080820160808401610e88565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181121561092557610100611004819261012060c08601528561012086019101610eb5565b9373ffffffffffffffffffffffffffffffffffffffff61102660e08301610d95565b1660e0850152013591015290565b60409073ffffffffffffffffffffffffffffffffffffffff61106194931681528160208201520190610f79565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036109255790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610925570190565b803546036110cc5760406110619101611064565b60208101359063ffffffff821680920361092557611101604073ffffffffffffffffffffffffffffffffffffffff9201611064565b16604051917f78a0565e0000000000000000000000000000000000000000000000000000000083526004830152602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f9161119957501690565b6111b2915060203d602011610494576104868183610e1b565b1690565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610925570180359067ffffffffffffffff82116109255760200191813603831361092557565b3d1561125f573d9067ffffffffffffffff82116109a6576040519161125460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e1b565b82523d5f602084013e565b606090565b906040810161127381836111b6565b90506114db575b5050608081019061129461128d83611064565b309061171c565b9060a08101358092106114575760c081016112bc6112b28284611085565b60408101906111b6565b15905061142957826112cd85611064565b73ffffffffffffffffffffffffffffffffffffffff6112ef6103c58587611085565b91169081611384575b5050505f8161130b6103c5839486611085565b906113276112b2602061131e8489611085565b01359287611085565b9190826040519384928337810185815203925af1611343611207565b501561134e57505050565b73ffffffffffffffffffffffffffffffffffffffff61137b60e061137461138296611064565b9301611064565b16906117ca565b565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810192909252602090829060449082905f905af180156108f4576113f1575b8084916112f8565b6020813d602011611421575b8161140a60209383610e1b565b81010312610925575180151503610925575f6113e9565b3d91506113fd565b61137b6103c573ffffffffffffffffffffffffffffffffffffffff9261145161138297611064565b94611085565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f46434354503a20696e73756666696369656e742066696e616c2063616c6c207460448201527f6f6b656e207265636569766564000000000000000000000000000000000000006064820152fd5b5f91602083926114ed60408701611064565b6114f684611064565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000085820190815273ffffffffffffffffffffffffffffffffffffffff8316602483015260608a01356044808401919091528252919290918590889061155f606486610e1b565b84519082855af187513d82611685575b505015611617575b50505061158d61158684611064565b91846111b6565b9290836040519485928337810186815203930135905af16115ac611207565b50156115b9575f8061127a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2073776170206661696c656400000000000000000000000000006044820152fd5b610b7661167d9373ffffffffffffffffffffffffffffffffffffffff604051917f095ea7b3000000000000000000000000000000000000000000000000000000008984015216602482015288604482015260448152611677606482610e1b565b826118bc565b5f8080611577565b9091501588146116b2575073ffffffffffffffffffffffffffffffffffffffff81163b15155b5f8061156f565b6001146116ab565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261138291610b76606483610e1b565b73ffffffffffffffffffffffffffffffffffffffff168061173c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156108f4575f9161179b575090565b90506020813d6020116117c2575b816117b660209383610e1b565b81010312610925575190565b3d91506117a9565b90919073ffffffffffffffffffffffffffffffffffffffff8116156118095773ffffffffffffffffffffffffffffffffffffffff6113829316906116ba565b505f8080939273ffffffffffffffffffffffffffffffffffffffff8294165af1611831611207565b501561183957565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b905f602091828151910182855af1156108f4575f513d61193a575073ffffffffffffffffffffffffffffffffffffffff81163b155b6118f85750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156118f156fea264697066735822122099a1554c30b8a4675d5c9c134182e07203a222c014ef85b35a326f14273fd19664736f6c634300081a0033000000000000000000000000e997d7d2f6e065a9a93fa2175e878fb9081f1f0a0000000000000000000000009f3b8679c73c2fef8b59b4f3444d4e156fb70aa500000000000000000000000085efccba0451b70d4ca3763db7c348058bfc5b07" + ], + "transaction": { + "from": "0x2a6d311394184eeb6df8fbbf58626b085374ffe7", + "to": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "gas": "0x1fdf3f", + "value": "0x0", + "input": "0xcdcb760a06b6c605645a3c163a60451e79cdc7552fa49da151d91e048eddc5da44e7e57e00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001ac360e0346100d157601f611a6338819003918201601f19168301916001600160401b038311848410176100d5578084926060946040528339810103126100d1578051906001600160a01b03821682036100d1576020810151906001600160a01b03821682036100d15760400151916001600160a01b03831683036100d15760805260a05260c05260405161197990816100ea823960805181818160d20152611150015260a05181818161055601526107ec015260c051818181610247015281816102d80152818161070e0152610a3e0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c80631faf2531146109d3578063399512bf1461057a5780633a4beec81461050b5780634b56db72146104a65780637be2e14c1461026b57806392354010146101fc578063ae6f51b414610195578063ca2a7a5c146100f95763cfb3647b14610088575061000e565b346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f6576004359067ffffffffffffffff82116100f6576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126100f6576020610177836004016110b8565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760ff604060209273ffffffffffffffffffffffffffffffffffffffff6101e9610d72565b1681528084522054166040519015158152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100f65761027a36610cbf565b61028646833514610db6565b6040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806102be863060048401611034565b03818773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561049b5773ffffffffffffffffffffffffffffffffffffffff91859161046c575b501690813b1561045d57836040517fa5cd39ca000000000000000000000000000000000000000000000000000000008152818160048183885af1801561046157610448575b507f2d680d6e364e4f011c477837036636513f10f6d61c87bf0a3dd43d3508b4954a918373ffffffffffffffffffffffffffffffffffffffff925260016020528160408720541680155f1461042657506104076103ca6103c560c0880188611085565b611064565b918588526001602052604088208484167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905586611264565b6104206040519283926020845216956020830190610f79565b0390a380f35b905061044361043760408701611064565b826060880135916116ba565b610407565b8161045291610e1b565b61045d57835f610362565b8380fd5b6040513d84823e3d90fd5b61048e915060203d602011610494575b6104868183610e1b565b810190610e5c565b5f61031d565b503d61047c565b6040513d86823e3d90fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65773ffffffffffffffffffffffffffffffffffffffff6040602092826104f9610d72565b16815260018452205416604051908152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109255760043567ffffffffffffffff811161092557366023820112156109255780600401359067ffffffffffffffff8211610925573660248360061b83010111610925576024359167ffffffffffffffff83116109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8436030112610925576044359167ffffffffffffffff83116109255782600401926101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261092557610678846110b8565b9160405192604084019084821067ffffffffffffffff8311176109a65773ffffffffffffffffffffffffffffffffffffffff9160405216835260646020840192013582526040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806106f4893060048401611034565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610987575b501695865f525f60205260ff60405f20541661092957865f525f60205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055863b15610925579391906040519485937f209764030000000000000000000000000000000000000000000000000000000085528060a4860173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600488015260a0602488015252602460c486019301905f5b8181106108ff575050509173ffffffffffffffffffffffffffffffffffffffff61087e8386957ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc875f9a9703016044880152600401610eb5565b9251166064840152516084830152038183875af180156108f4576108dd575b506108d77fdf6f9600164762fc05c1699b1c56e038374a0e184038977bb5925074585ecc4991604051918291602083526020830190610f79565b0390a280f35b6108ea9193505f90610e1b565b5f916108d761089d565b6040513d5f823e3d90fd5b9194955091926040808261091560019489610e88565b0195019101918795949392610824565b5f80fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a20616c72656164792073656e74000000000000000000000000006044820152fd5b6109a0915060203d602011610494576104868183610e1b565b5f610753565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610925576109e136610cbf565b6109ed46833514610db6565b6040517fd6c5526600000000000000000000000000000000000000000000000000000000815260208180610a25863060048401611034565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610ca0575b501690815f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f205416610c4257815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610b0360408401611064565b9073ffffffffffffffffffffffffffffffffffffffff821615610bbe57610b7b610b8192604051907f23b872dd0000000000000000000000000000000000000000000000000000000060208301523360248301523060448301526060870135606483015260648252610b76608483610e1b565b6118bc565b83611264565b7f6e18134e5b219f1786dd555b831eb2b7faee00475bf43015fc58d045fdeb8f086040516020815280610bb933956020830190610f79565b0390a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4372657065546f6b656e5574696c733a20455448207472616e7366657246726f60448201527f6d206d7573742062652063616c6c6572000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20616c72656164792066696e69736865640000000000000000006044820152fd5b610cb9915060203d602011610494576104868183610e1b565b84610a83565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126109255760043567ffffffffffffffff8111610925576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261092557600401916024359067ffffffffffffffff8211610925577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126109255760040190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b15610dbd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2077726f6e6720636861696e00000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176109a657604052565b90816020910312610925575173ffffffffffffffffffffffffffffffffffffffff811681036109255790565b803573ffffffffffffffffffffffffffffffffffffffff8116809103610925578252602090810135910152565b73ffffffffffffffffffffffffffffffffffffffff610ed382610d95565b1682526020810135602083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156109255701906020823592019167ffffffffffffffff811161092557803603831361092557601f817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09260809560606040870152816060870152868601375f8582860101520116010190565b9081358152602082013563ffffffff8116809103610925576020820152610fa66040820160408401610e88565b610fb66080820160808401610e88565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181121561092557610100611004819261012060c08601528561012086019101610eb5565b9373ffffffffffffffffffffffffffffffffffffffff61102660e08301610d95565b1660e0850152013591015290565b60409073ffffffffffffffffffffffffffffffffffffffff61106194931681528160208201520190610f79565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036109255790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610925570190565b803546036110cc5760406110619101611064565b60208101359063ffffffff821680920361092557611101604073ffffffffffffffffffffffffffffffffffffffff9201611064565b16604051917f78a0565e0000000000000000000000000000000000000000000000000000000083526004830152602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f9161119957501690565b6111b2915060203d602011610494576104868183610e1b565b1690565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610925570180359067ffffffffffffffff82116109255760200191813603831361092557565b3d1561125f573d9067ffffffffffffffff82116109a6576040519161125460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e1b565b82523d5f602084013e565b606090565b906040810161127381836111b6565b90506114db575b5050608081019061129461128d83611064565b309061171c565b9060a08101358092106114575760c081016112bc6112b28284611085565b60408101906111b6565b15905061142957826112cd85611064565b73ffffffffffffffffffffffffffffffffffffffff6112ef6103c58587611085565b91169081611384575b5050505f8161130b6103c5839486611085565b906113276112b2602061131e8489611085565b01359287611085565b9190826040519384928337810185815203925af1611343611207565b501561134e57505050565b73ffffffffffffffffffffffffffffffffffffffff61137b60e061137461138296611064565b9301611064565b16906117ca565b565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810192909252602090829060449082905f905af180156108f4576113f1575b8084916112f8565b6020813d602011611421575b8161140a60209383610e1b565b81010312610925575180151503610925575f6113e9565b3d91506113fd565b61137b6103c573ffffffffffffffffffffffffffffffffffffffff9261145161138297611064565b94611085565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f46434354503a20696e73756666696369656e742066696e616c2063616c6c207460448201527f6f6b656e207265636569766564000000000000000000000000000000000000006064820152fd5b5f91602083926114ed60408701611064565b6114f684611064565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000085820190815273ffffffffffffffffffffffffffffffffffffffff8316602483015260608a01356044808401919091528252919290918590889061155f606486610e1b565b84519082855af187513d82611685575b505015611617575b50505061158d61158684611064565b91846111b6565b9290836040519485928337810186815203930135905af16115ac611207565b50156115b9575f8061127a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2073776170206661696c656400000000000000000000000000006044820152fd5b610b7661167d9373ffffffffffffffffffffffffffffffffffffffff604051917f095ea7b3000000000000000000000000000000000000000000000000000000008984015216602482015288604482015260448152611677606482610e1b565b826118bc565b5f8080611577565b9091501588146116b2575073ffffffffffffffffffffffffffffffffffffffff81163b15155b5f8061156f565b6001146116ab565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261138291610b76606483610e1b565b73ffffffffffffffffffffffffffffffffffffffff168061173c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156108f4575f9161179b575090565b90506020813d6020116117c2575b816117b660209383610e1b565b81010312610925575190565b3d91506117a9565b90919073ffffffffffffffffffffffffffffffffffffffff8116156118095773ffffffffffffffffffffffffffffffffffffffff6113829316906116ba565b505f8080939273ffffffffffffffffffffffffffffffffffffffff8294165af1611831611207565b501561183957565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b905f602091828151910182855af1156108f4575f513d61193a575073ffffffffffffffffffffffffffffffffffffffff81163b155b6118f85750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156118f156fea264697066735822122099a1554c30b8a4675d5c9c134182e07203a222c014ef85b35a326f14273fd19664736f6c634300081a0033000000000000000000000000e997d7d2f6e065a9a93fa2175e878fb9081f1f0a0000000000000000000000009f3b8679c73c2fef8b59b4f3444d4e156fb70aa500000000000000000000000085efccba0451b70d4ca3763db7c348058bfc5b070000000000000000000000000000000000000000000000000000000000", + "nonce": "0x47", + "chainId": "0xaa36a7" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "address": "0x462b8e0e75b96c90ae60a7d544bc5b77ac549728", + "initCode": "0x67363d3d37363d34f03d5260086018f3" + }, + { + "transactionType": "CREATE", + "address": "0xdded5678127d89c2d6e062c62c9c8654a88821a7", + "initCode": "0x60e0346100d157601f611a6338819003918201601f19168301916001600160401b038311848410176100d5578084926060946040528339810103126100d1578051906001600160a01b03821682036100d1576020810151906001600160a01b03821682036100d15760400151916001600160a01b03831683036100d15760805260a05260c05260405161197990816100ea823960805181818160d20152611150015260a05181818161055601526107ec015260c051818181610247015281816102d80152818161070e0152610a3e0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c80631faf2531146109d3578063399512bf1461057a5780633a4beec81461050b5780634b56db72146104a65780637be2e14c1461026b57806392354010146101fc578063ae6f51b414610195578063ca2a7a5c146100f95763cfb3647b14610088575061000e565b346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f6576004359067ffffffffffffffff82116100f6576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126100f6576020610177836004016110b8565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760ff604060209273ffffffffffffffffffffffffffffffffffffffff6101e9610d72565b1681528084522054166040519015158152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100f65761027a36610cbf565b61028646833514610db6565b6040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806102be863060048401611034565b03818773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561049b5773ffffffffffffffffffffffffffffffffffffffff91859161046c575b501690813b1561045d57836040517fa5cd39ca000000000000000000000000000000000000000000000000000000008152818160048183885af1801561046157610448575b507f2d680d6e364e4f011c477837036636513f10f6d61c87bf0a3dd43d3508b4954a918373ffffffffffffffffffffffffffffffffffffffff925260016020528160408720541680155f1461042657506104076103ca6103c560c0880188611085565b611064565b918588526001602052604088208484167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905586611264565b6104206040519283926020845216956020830190610f79565b0390a380f35b905061044361043760408701611064565b826060880135916116ba565b610407565b8161045291610e1b565b61045d57835f610362565b8380fd5b6040513d84823e3d90fd5b61048e915060203d602011610494575b6104868183610e1b565b810190610e5c565b5f61031d565b503d61047c565b6040513d86823e3d90fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65773ffffffffffffffffffffffffffffffffffffffff6040602092826104f9610d72565b16815260018452205416604051908152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109255760043567ffffffffffffffff811161092557366023820112156109255780600401359067ffffffffffffffff8211610925573660248360061b83010111610925576024359167ffffffffffffffff83116109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8436030112610925576044359167ffffffffffffffff83116109255782600401926101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261092557610678846110b8565b9160405192604084019084821067ffffffffffffffff8311176109a65773ffffffffffffffffffffffffffffffffffffffff9160405216835260646020840192013582526040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806106f4893060048401611034565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610987575b501695865f525f60205260ff60405f20541661092957865f525f60205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055863b15610925579391906040519485937f209764030000000000000000000000000000000000000000000000000000000085528060a4860173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600488015260a0602488015252602460c486019301905f5b8181106108ff575050509173ffffffffffffffffffffffffffffffffffffffff61087e8386957ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc875f9a9703016044880152600401610eb5565b9251166064840152516084830152038183875af180156108f4576108dd575b506108d77fdf6f9600164762fc05c1699b1c56e038374a0e184038977bb5925074585ecc4991604051918291602083526020830190610f79565b0390a280f35b6108ea9193505f90610e1b565b5f916108d761089d565b6040513d5f823e3d90fd5b9194955091926040808261091560019489610e88565b0195019101918795949392610824565b5f80fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a20616c72656164792073656e74000000000000000000000000006044820152fd5b6109a0915060203d602011610494576104868183610e1b565b5f610753565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610925576109e136610cbf565b6109ed46833514610db6565b6040517fd6c5526600000000000000000000000000000000000000000000000000000000815260208180610a25863060048401611034565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610ca0575b501690815f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f205416610c4257815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610b0360408401611064565b9073ffffffffffffffffffffffffffffffffffffffff821615610bbe57610b7b610b8192604051907f23b872dd0000000000000000000000000000000000000000000000000000000060208301523360248301523060448301526060870135606483015260648252610b76608483610e1b565b6118bc565b83611264565b7f6e18134e5b219f1786dd555b831eb2b7faee00475bf43015fc58d045fdeb8f086040516020815280610bb933956020830190610f79565b0390a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4372657065546f6b656e5574696c733a20455448207472616e7366657246726f60448201527f6d206d7573742062652063616c6c6572000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20616c72656164792066696e69736865640000000000000000006044820152fd5b610cb9915060203d602011610494576104868183610e1b565b84610a83565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126109255760043567ffffffffffffffff8111610925576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261092557600401916024359067ffffffffffffffff8211610925577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126109255760040190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b15610dbd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2077726f6e6720636861696e00000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176109a657604052565b90816020910312610925575173ffffffffffffffffffffffffffffffffffffffff811681036109255790565b803573ffffffffffffffffffffffffffffffffffffffff8116809103610925578252602090810135910152565b73ffffffffffffffffffffffffffffffffffffffff610ed382610d95565b1682526020810135602083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156109255701906020823592019167ffffffffffffffff811161092557803603831361092557601f817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09260809560606040870152816060870152868601375f8582860101520116010190565b9081358152602082013563ffffffff8116809103610925576020820152610fa66040820160408401610e88565b610fb66080820160808401610e88565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181121561092557610100611004819261012060c08601528561012086019101610eb5565b9373ffffffffffffffffffffffffffffffffffffffff61102660e08301610d95565b1660e0850152013591015290565b60409073ffffffffffffffffffffffffffffffffffffffff61106194931681528160208201520190610f79565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036109255790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610925570190565b803546036110cc5760406110619101611064565b60208101359063ffffffff821680920361092557611101604073ffffffffffffffffffffffffffffffffffffffff9201611064565b16604051917f78a0565e0000000000000000000000000000000000000000000000000000000083526004830152602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f9161119957501690565b6111b2915060203d602011610494576104868183610e1b565b1690565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610925570180359067ffffffffffffffff82116109255760200191813603831361092557565b3d1561125f573d9067ffffffffffffffff82116109a6576040519161125460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e1b565b82523d5f602084013e565b606090565b906040810161127381836111b6565b90506114db575b5050608081019061129461128d83611064565b309061171c565b9060a08101358092106114575760c081016112bc6112b28284611085565b60408101906111b6565b15905061142957826112cd85611064565b73ffffffffffffffffffffffffffffffffffffffff6112ef6103c58587611085565b91169081611384575b5050505f8161130b6103c5839486611085565b906113276112b2602061131e8489611085565b01359287611085565b9190826040519384928337810185815203925af1611343611207565b501561134e57505050565b73ffffffffffffffffffffffffffffffffffffffff61137b60e061137461138296611064565b9301611064565b16906117ca565b565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810192909252602090829060449082905f905af180156108f4576113f1575b8084916112f8565b6020813d602011611421575b8161140a60209383610e1b565b81010312610925575180151503610925575f6113e9565b3d91506113fd565b61137b6103c573ffffffffffffffffffffffffffffffffffffffff9261145161138297611064565b94611085565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f46434354503a20696e73756666696369656e742066696e616c2063616c6c207460448201527f6f6b656e207265636569766564000000000000000000000000000000000000006064820152fd5b5f91602083926114ed60408701611064565b6114f684611064565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000085820190815273ffffffffffffffffffffffffffffffffffffffff8316602483015260608a01356044808401919091528252919290918590889061155f606486610e1b565b84519082855af187513d82611685575b505015611617575b50505061158d61158684611064565b91846111b6565b9290836040519485928337810186815203930135905af16115ac611207565b50156115b9575f8061127a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2073776170206661696c656400000000000000000000000000006044820152fd5b610b7661167d9373ffffffffffffffffffffffffffffffffffffffff604051917f095ea7b3000000000000000000000000000000000000000000000000000000008984015216602482015288604482015260448152611677606482610e1b565b826118bc565b5f8080611577565b9091501588146116b2575073ffffffffffffffffffffffffffffffffffffffff81163b15155b5f8061156f565b6001146116ab565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261138291610b76606483610e1b565b73ffffffffffffffffffffffffffffffffffffffff168061173c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156108f4575f9161179b575090565b90506020813d6020116117c2575b816117b660209383610e1b565b81010312610925575190565b3d91506117a9565b90919073ffffffffffffffffffffffffffffffffffffffff8116156118095773ffffffffffffffffffffffffffffffffffffffff6113829316906116ba565b505f8080939273ffffffffffffffffffffffffffffffffffffffff8294165af1611831611207565b501561183957565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b905f602091828151910182855af1156108f4575f513d61193a575073ffffffffffffffffffffffffffffffffffffffff81163b155b6118f85750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156118f156fea264697066735822122099a1554c30b8a4675d5c9c134182e07203a222c014ef85b35a326f14273fd19664736f6c634300081a0033000000000000000000000000e997d7d2f6e065a9a93fa2175e878fb9081f1f0a0000000000000000000000009f3b8679c73c2fef8b59b4f3444d4e156fb70aa500000000000000000000000085efccba0451b70d4ca3763db7c348058bfc5b07" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1728036825, + "chain": 11155111, + "commit": "c2679066" +} \ No newline at end of file diff --git a/packages/contract/broadcast/DeployCrepeFastCCTP.s.sol/84532/run-latest.json b/packages/contract/broadcast/DeployCrepeFastCCTP.s.sol/84532/run-latest.json new file mode 100644 index 000000000..d70b6158f --- /dev/null +++ b/packages/contract/broadcast/DeployCrepeFastCCTP.s.sol/84532/run-latest.json @@ -0,0 +1,67 @@ +{ + "transactions": [ + { + "hash": "0x77d2124d5bdb124d5d207a55bb1d3abb8826a2ceee95eedb886089fbaa58722d", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "function": "deploy(bytes32,bytes)", + "arguments": [ + "0x06b6c605645a3c163a60451e79cdc7552fa49da151d91e048eddc5da44e7e57e", + "0x60e0346100d157601f611a6338819003918201601f19168301916001600160401b038311848410176100d5578084926060946040528339810103126100d1578051906001600160a01b03821682036100d1576020810151906001600160a01b03821682036100d15760400151916001600160a01b03831683036100d15760805260a05260c05260405161197990816100ea823960805181818160d20152611150015260a05181818161055601526107ec015260c051818181610247015281816102d80152818161070e0152610a3e0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c80631faf2531146109d3578063399512bf1461057a5780633a4beec81461050b5780634b56db72146104a65780637be2e14c1461026b57806392354010146101fc578063ae6f51b414610195578063ca2a7a5c146100f95763cfb3647b14610088575061000e565b346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f6576004359067ffffffffffffffff82116100f6576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126100f6576020610177836004016110b8565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760ff604060209273ffffffffffffffffffffffffffffffffffffffff6101e9610d72565b1681528084522054166040519015158152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100f65761027a36610cbf565b61028646833514610db6565b6040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806102be863060048401611034565b03818773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561049b5773ffffffffffffffffffffffffffffffffffffffff91859161046c575b501690813b1561045d57836040517fa5cd39ca000000000000000000000000000000000000000000000000000000008152818160048183885af1801561046157610448575b507f2d680d6e364e4f011c477837036636513f10f6d61c87bf0a3dd43d3508b4954a918373ffffffffffffffffffffffffffffffffffffffff925260016020528160408720541680155f1461042657506104076103ca6103c560c0880188611085565b611064565b918588526001602052604088208484167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905586611264565b6104206040519283926020845216956020830190610f79565b0390a380f35b905061044361043760408701611064565b826060880135916116ba565b610407565b8161045291610e1b565b61045d57835f610362565b8380fd5b6040513d84823e3d90fd5b61048e915060203d602011610494575b6104868183610e1b565b810190610e5c565b5f61031d565b503d61047c565b6040513d86823e3d90fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65773ffffffffffffffffffffffffffffffffffffffff6040602092826104f9610d72565b16815260018452205416604051908152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109255760043567ffffffffffffffff811161092557366023820112156109255780600401359067ffffffffffffffff8211610925573660248360061b83010111610925576024359167ffffffffffffffff83116109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8436030112610925576044359167ffffffffffffffff83116109255782600401926101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261092557610678846110b8565b9160405192604084019084821067ffffffffffffffff8311176109a65773ffffffffffffffffffffffffffffffffffffffff9160405216835260646020840192013582526040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806106f4893060048401611034565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610987575b501695865f525f60205260ff60405f20541661092957865f525f60205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055863b15610925579391906040519485937f209764030000000000000000000000000000000000000000000000000000000085528060a4860173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600488015260a0602488015252602460c486019301905f5b8181106108ff575050509173ffffffffffffffffffffffffffffffffffffffff61087e8386957ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc875f9a9703016044880152600401610eb5565b9251166064840152516084830152038183875af180156108f4576108dd575b506108d77fdf6f9600164762fc05c1699b1c56e038374a0e184038977bb5925074585ecc4991604051918291602083526020830190610f79565b0390a280f35b6108ea9193505f90610e1b565b5f916108d761089d565b6040513d5f823e3d90fd5b9194955091926040808261091560019489610e88565b0195019101918795949392610824565b5f80fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a20616c72656164792073656e74000000000000000000000000006044820152fd5b6109a0915060203d602011610494576104868183610e1b565b5f610753565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610925576109e136610cbf565b6109ed46833514610db6565b6040517fd6c5526600000000000000000000000000000000000000000000000000000000815260208180610a25863060048401611034565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610ca0575b501690815f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f205416610c4257815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610b0360408401611064565b9073ffffffffffffffffffffffffffffffffffffffff821615610bbe57610b7b610b8192604051907f23b872dd0000000000000000000000000000000000000000000000000000000060208301523360248301523060448301526060870135606483015260648252610b76608483610e1b565b6118bc565b83611264565b7f6e18134e5b219f1786dd555b831eb2b7faee00475bf43015fc58d045fdeb8f086040516020815280610bb933956020830190610f79565b0390a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4372657065546f6b656e5574696c733a20455448207472616e7366657246726f60448201527f6d206d7573742062652063616c6c6572000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20616c72656164792066696e69736865640000000000000000006044820152fd5b610cb9915060203d602011610494576104868183610e1b565b84610a83565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126109255760043567ffffffffffffffff8111610925576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261092557600401916024359067ffffffffffffffff8211610925577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126109255760040190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b15610dbd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2077726f6e6720636861696e00000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176109a657604052565b90816020910312610925575173ffffffffffffffffffffffffffffffffffffffff811681036109255790565b803573ffffffffffffffffffffffffffffffffffffffff8116809103610925578252602090810135910152565b73ffffffffffffffffffffffffffffffffffffffff610ed382610d95565b1682526020810135602083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156109255701906020823592019167ffffffffffffffff811161092557803603831361092557601f817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09260809560606040870152816060870152868601375f8582860101520116010190565b9081358152602082013563ffffffff8116809103610925576020820152610fa66040820160408401610e88565b610fb66080820160808401610e88565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181121561092557610100611004819261012060c08601528561012086019101610eb5565b9373ffffffffffffffffffffffffffffffffffffffff61102660e08301610d95565b1660e0850152013591015290565b60409073ffffffffffffffffffffffffffffffffffffffff61106194931681528160208201520190610f79565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036109255790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610925570190565b803546036110cc5760406110619101611064565b60208101359063ffffffff821680920361092557611101604073ffffffffffffffffffffffffffffffffffffffff9201611064565b16604051917f78a0565e0000000000000000000000000000000000000000000000000000000083526004830152602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f9161119957501690565b6111b2915060203d602011610494576104868183610e1b565b1690565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610925570180359067ffffffffffffffff82116109255760200191813603831361092557565b3d1561125f573d9067ffffffffffffffff82116109a6576040519161125460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e1b565b82523d5f602084013e565b606090565b906040810161127381836111b6565b90506114db575b5050608081019061129461128d83611064565b309061171c565b9060a08101358092106114575760c081016112bc6112b28284611085565b60408101906111b6565b15905061142957826112cd85611064565b73ffffffffffffffffffffffffffffffffffffffff6112ef6103c58587611085565b91169081611384575b5050505f8161130b6103c5839486611085565b906113276112b2602061131e8489611085565b01359287611085565b9190826040519384928337810185815203925af1611343611207565b501561134e57505050565b73ffffffffffffffffffffffffffffffffffffffff61137b60e061137461138296611064565b9301611064565b16906117ca565b565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810192909252602090829060449082905f905af180156108f4576113f1575b8084916112f8565b6020813d602011611421575b8161140a60209383610e1b565b81010312610925575180151503610925575f6113e9565b3d91506113fd565b61137b6103c573ffffffffffffffffffffffffffffffffffffffff9261145161138297611064565b94611085565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f46434354503a20696e73756666696369656e742066696e616c2063616c6c207460448201527f6f6b656e207265636569766564000000000000000000000000000000000000006064820152fd5b5f91602083926114ed60408701611064565b6114f684611064565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000085820190815273ffffffffffffffffffffffffffffffffffffffff8316602483015260608a01356044808401919091528252919290918590889061155f606486610e1b565b84519082855af187513d82611685575b505015611617575b50505061158d61158684611064565b91846111b6565b9290836040519485928337810186815203930135905af16115ac611207565b50156115b9575f8061127a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2073776170206661696c656400000000000000000000000000006044820152fd5b610b7661167d9373ffffffffffffffffffffffffffffffffffffffff604051917f095ea7b3000000000000000000000000000000000000000000000000000000008984015216602482015288604482015260448152611677606482610e1b565b826118bc565b5f8080611577565b9091501588146116b2575073ffffffffffffffffffffffffffffffffffffffff81163b15155b5f8061156f565b6001146116ab565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261138291610b76606483610e1b565b73ffffffffffffffffffffffffffffffffffffffff168061173c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156108f4575f9161179b575090565b90506020813d6020116117c2575b816117b660209383610e1b565b81010312610925575190565b3d91506117a9565b90919073ffffffffffffffffffffffffffffffffffffffff8116156118095773ffffffffffffffffffffffffffffffffffffffff6113829316906116ba565b505f8080939273ffffffffffffffffffffffffffffffffffffffff8294165af1611831611207565b501561183957565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b905f602091828151910182855af1156108f4575f513d61193a575073ffffffffffffffffffffffffffffffffffffffff81163b155b6118f85750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156118f156fea264697066735822122099a1554c30b8a4675d5c9c134182e07203a222c014ef85b35a326f14273fd19664736f6c634300081a0033000000000000000000000000e997d7d2f6e065a9a93fa2175e878fb9081f1f0a0000000000000000000000009f3b8679c73c2fef8b59b4f3444d4e156fb70aa500000000000000000000000085efccba0451b70d4ca3763db7c348058bfc5b07" + ], + "transaction": { + "from": "0x2a6d311394184eeb6df8fbbf58626b085374ffe7", + "to": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "gas": "0x1fdf3f", + "value": "0x0", + "input": "0xcdcb760a06b6c605645a3c163a60451e79cdc7552fa49da151d91e048eddc5da44e7e57e00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001ac360e0346100d157601f611a6338819003918201601f19168301916001600160401b038311848410176100d5578084926060946040528339810103126100d1578051906001600160a01b03821682036100d1576020810151906001600160a01b03821682036100d15760400151916001600160a01b03831683036100d15760805260a05260c05260405161197990816100ea823960805181818160d20152611150015260a05181818161055601526107ec015260c051818181610247015281816102d80152818161070e0152610a3e0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c80631faf2531146109d3578063399512bf1461057a5780633a4beec81461050b5780634b56db72146104a65780637be2e14c1461026b57806392354010146101fc578063ae6f51b414610195578063ca2a7a5c146100f95763cfb3647b14610088575061000e565b346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f6576004359067ffffffffffffffff82116100f6576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126100f6576020610177836004016110b8565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760ff604060209273ffffffffffffffffffffffffffffffffffffffff6101e9610d72565b1681528084522054166040519015158152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100f65761027a36610cbf565b61028646833514610db6565b6040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806102be863060048401611034565b03818773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561049b5773ffffffffffffffffffffffffffffffffffffffff91859161046c575b501690813b1561045d57836040517fa5cd39ca000000000000000000000000000000000000000000000000000000008152818160048183885af1801561046157610448575b507f2d680d6e364e4f011c477837036636513f10f6d61c87bf0a3dd43d3508b4954a918373ffffffffffffffffffffffffffffffffffffffff925260016020528160408720541680155f1461042657506104076103ca6103c560c0880188611085565b611064565b918588526001602052604088208484167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905586611264565b6104206040519283926020845216956020830190610f79565b0390a380f35b905061044361043760408701611064565b826060880135916116ba565b610407565b8161045291610e1b565b61045d57835f610362565b8380fd5b6040513d84823e3d90fd5b61048e915060203d602011610494575b6104868183610e1b565b810190610e5c565b5f61031d565b503d61047c565b6040513d86823e3d90fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65773ffffffffffffffffffffffffffffffffffffffff6040602092826104f9610d72565b16815260018452205416604051908152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109255760043567ffffffffffffffff811161092557366023820112156109255780600401359067ffffffffffffffff8211610925573660248360061b83010111610925576024359167ffffffffffffffff83116109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8436030112610925576044359167ffffffffffffffff83116109255782600401926101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261092557610678846110b8565b9160405192604084019084821067ffffffffffffffff8311176109a65773ffffffffffffffffffffffffffffffffffffffff9160405216835260646020840192013582526040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806106f4893060048401611034565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610987575b501695865f525f60205260ff60405f20541661092957865f525f60205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055863b15610925579391906040519485937f209764030000000000000000000000000000000000000000000000000000000085528060a4860173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600488015260a0602488015252602460c486019301905f5b8181106108ff575050509173ffffffffffffffffffffffffffffffffffffffff61087e8386957ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc875f9a9703016044880152600401610eb5565b9251166064840152516084830152038183875af180156108f4576108dd575b506108d77fdf6f9600164762fc05c1699b1c56e038374a0e184038977bb5925074585ecc4991604051918291602083526020830190610f79565b0390a280f35b6108ea9193505f90610e1b565b5f916108d761089d565b6040513d5f823e3d90fd5b9194955091926040808261091560019489610e88565b0195019101918795949392610824565b5f80fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a20616c72656164792073656e74000000000000000000000000006044820152fd5b6109a0915060203d602011610494576104868183610e1b565b5f610753565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610925576109e136610cbf565b6109ed46833514610db6565b6040517fd6c5526600000000000000000000000000000000000000000000000000000000815260208180610a25863060048401611034565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610ca0575b501690815f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f205416610c4257815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610b0360408401611064565b9073ffffffffffffffffffffffffffffffffffffffff821615610bbe57610b7b610b8192604051907f23b872dd0000000000000000000000000000000000000000000000000000000060208301523360248301523060448301526060870135606483015260648252610b76608483610e1b565b6118bc565b83611264565b7f6e18134e5b219f1786dd555b831eb2b7faee00475bf43015fc58d045fdeb8f086040516020815280610bb933956020830190610f79565b0390a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4372657065546f6b656e5574696c733a20455448207472616e7366657246726f60448201527f6d206d7573742062652063616c6c6572000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20616c72656164792066696e69736865640000000000000000006044820152fd5b610cb9915060203d602011610494576104868183610e1b565b84610a83565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126109255760043567ffffffffffffffff8111610925576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261092557600401916024359067ffffffffffffffff8211610925577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126109255760040190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b15610dbd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2077726f6e6720636861696e00000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176109a657604052565b90816020910312610925575173ffffffffffffffffffffffffffffffffffffffff811681036109255790565b803573ffffffffffffffffffffffffffffffffffffffff8116809103610925578252602090810135910152565b73ffffffffffffffffffffffffffffffffffffffff610ed382610d95565b1682526020810135602083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156109255701906020823592019167ffffffffffffffff811161092557803603831361092557601f817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09260809560606040870152816060870152868601375f8582860101520116010190565b9081358152602082013563ffffffff8116809103610925576020820152610fa66040820160408401610e88565b610fb66080820160808401610e88565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181121561092557610100611004819261012060c08601528561012086019101610eb5565b9373ffffffffffffffffffffffffffffffffffffffff61102660e08301610d95565b1660e0850152013591015290565b60409073ffffffffffffffffffffffffffffffffffffffff61106194931681528160208201520190610f79565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036109255790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610925570190565b803546036110cc5760406110619101611064565b60208101359063ffffffff821680920361092557611101604073ffffffffffffffffffffffffffffffffffffffff9201611064565b16604051917f78a0565e0000000000000000000000000000000000000000000000000000000083526004830152602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f9161119957501690565b6111b2915060203d602011610494576104868183610e1b565b1690565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610925570180359067ffffffffffffffff82116109255760200191813603831361092557565b3d1561125f573d9067ffffffffffffffff82116109a6576040519161125460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e1b565b82523d5f602084013e565b606090565b906040810161127381836111b6565b90506114db575b5050608081019061129461128d83611064565b309061171c565b9060a08101358092106114575760c081016112bc6112b28284611085565b60408101906111b6565b15905061142957826112cd85611064565b73ffffffffffffffffffffffffffffffffffffffff6112ef6103c58587611085565b91169081611384575b5050505f8161130b6103c5839486611085565b906113276112b2602061131e8489611085565b01359287611085565b9190826040519384928337810185815203925af1611343611207565b501561134e57505050565b73ffffffffffffffffffffffffffffffffffffffff61137b60e061137461138296611064565b9301611064565b16906117ca565b565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810192909252602090829060449082905f905af180156108f4576113f1575b8084916112f8565b6020813d602011611421575b8161140a60209383610e1b565b81010312610925575180151503610925575f6113e9565b3d91506113fd565b61137b6103c573ffffffffffffffffffffffffffffffffffffffff9261145161138297611064565b94611085565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f46434354503a20696e73756666696369656e742066696e616c2063616c6c207460448201527f6f6b656e207265636569766564000000000000000000000000000000000000006064820152fd5b5f91602083926114ed60408701611064565b6114f684611064565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000085820190815273ffffffffffffffffffffffffffffffffffffffff8316602483015260608a01356044808401919091528252919290918590889061155f606486610e1b565b84519082855af187513d82611685575b505015611617575b50505061158d61158684611064565b91846111b6565b9290836040519485928337810186815203930135905af16115ac611207565b50156115b9575f8061127a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2073776170206661696c656400000000000000000000000000006044820152fd5b610b7661167d9373ffffffffffffffffffffffffffffffffffffffff604051917f095ea7b3000000000000000000000000000000000000000000000000000000008984015216602482015288604482015260448152611677606482610e1b565b826118bc565b5f8080611577565b9091501588146116b2575073ffffffffffffffffffffffffffffffffffffffff81163b15155b5f8061156f565b6001146116ab565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261138291610b76606483610e1b565b73ffffffffffffffffffffffffffffffffffffffff168061173c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156108f4575f9161179b575090565b90506020813d6020116117c2575b816117b660209383610e1b565b81010312610925575190565b3d91506117a9565b90919073ffffffffffffffffffffffffffffffffffffffff8116156118095773ffffffffffffffffffffffffffffffffffffffff6113829316906116ba565b505f8080939273ffffffffffffffffffffffffffffffffffffffff8294165af1611831611207565b501561183957565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b905f602091828151910182855af1156108f4575f513d61193a575073ffffffffffffffffffffffffffffffffffffffff81163b155b6118f85750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156118f156fea264697066735822122099a1554c30b8a4675d5c9c134182e07203a222c014ef85b35a326f14273fd19664736f6c634300081a0033000000000000000000000000e997d7d2f6e065a9a93fa2175e878fb9081f1f0a0000000000000000000000009f3b8679c73c2fef8b59b4f3444d4e156fb70aa500000000000000000000000085efccba0451b70d4ca3763db7c348058bfc5b070000000000000000000000000000000000000000000000000000000000", + "nonce": "0x781", + "chainId": "0x14a34" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "address": "0x462b8e0e75b96c90ae60a7d544bc5b77ac549728", + "initCode": "0x67363d3d37363d34f03d5260086018f3" + }, + { + "transactionType": "CREATE", + "address": "0xdded5678127d89c2d6e062c62c9c8654a88821a7", + "initCode": "0x60e0346100d157601f611a6338819003918201601f19168301916001600160401b038311848410176100d5578084926060946040528339810103126100d1578051906001600160a01b03821682036100d1576020810151906001600160a01b03821682036100d15760400151916001600160a01b03831683036100d15760805260a05260c05260405161197990816100ea823960805181818160d20152611150015260a05181818161055601526107ec015260c051818181610247015281816102d80152818161070e0152610a3e0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c80631faf2531146109d3578063399512bf1461057a5780633a4beec81461050b5780634b56db72146104a65780637be2e14c1461026b57806392354010146101fc578063ae6f51b414610195578063ca2a7a5c146100f95763cfb3647b14610088575061000e565b346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f6576004359067ffffffffffffffff82116100f6576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126100f6576020610177836004016110b8565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65760ff604060209273ffffffffffffffffffffffffffffffffffffffff6101e9610d72565b1681528084522054166040519015158152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346100f65761027a36610cbf565b61028646833514610db6565b6040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806102be863060048401611034565b03818773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561049b5773ffffffffffffffffffffffffffffffffffffffff91859161046c575b501690813b1561045d57836040517fa5cd39ca000000000000000000000000000000000000000000000000000000008152818160048183885af1801561046157610448575b507f2d680d6e364e4f011c477837036636513f10f6d61c87bf0a3dd43d3508b4954a918373ffffffffffffffffffffffffffffffffffffffff925260016020528160408720541680155f1461042657506104076103ca6103c560c0880188611085565b611064565b918588526001602052604088208484167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905586611264565b6104206040519283926020845216956020830190610f79565b0390a380f35b905061044361043760408701611064565b826060880135916116ba565b610407565b8161045291610e1b565b61045d57835f610362565b8380fd5b6040513d84823e3d90fd5b61048e915060203d602011610494575b6104868183610e1b565b810190610e5c565b5f61031d565b503d61047c565b6040513d86823e3d90fd5b50346100f65760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f65773ffffffffffffffffffffffffffffffffffffffff6040602092826104f9610d72565b16815260018452205416604051908152f35b50346100f657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126109255760043567ffffffffffffffff811161092557366023820112156109255780600401359067ffffffffffffffff8211610925573660248360061b83010111610925576024359167ffffffffffffffff83116109255760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8436030112610925576044359167ffffffffffffffff83116109255782600401926101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261092557610678846110b8565b9160405192604084019084821067ffffffffffffffff8311176109a65773ffffffffffffffffffffffffffffffffffffffff9160405216835260646020840192013582526040517f9c512187000000000000000000000000000000000000000000000000000000008152602081806106f4893060048401611034565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610987575b501695865f525f60205260ff60405f20541661092957865f525f60205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055863b15610925579391906040519485937f209764030000000000000000000000000000000000000000000000000000000085528060a4860173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600488015260a0602488015252602460c486019301905f5b8181106108ff575050509173ffffffffffffffffffffffffffffffffffffffff61087e8386957ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc875f9a9703016044880152600401610eb5565b9251166064840152516084830152038183875af180156108f4576108dd575b506108d77fdf6f9600164762fc05c1699b1c56e038374a0e184038977bb5925074585ecc4991604051918291602083526020830190610f79565b0390a280f35b6108ea9193505f90610e1b565b5f916108d761089d565b6040513d5f823e3d90fd5b9194955091926040808261091560019489610e88565b0195019101918795949392610824565b5f80fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a20616c72656164792073656e74000000000000000000000000006044820152fd5b6109a0915060203d602011610494576104868183610e1b565b5f610753565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610925576109e136610cbf565b6109ed46833514610db6565b6040517fd6c5526600000000000000000000000000000000000000000000000000000000815260208180610a25863060048401611034565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f91610ca0575b501690815f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f205416610c4257815f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610b0360408401611064565b9073ffffffffffffffffffffffffffffffffffffffff821615610bbe57610b7b610b8192604051907f23b872dd0000000000000000000000000000000000000000000000000000000060208301523360248301523060448301526060870135606483015260648252610b76608483610e1b565b6118bc565b83611264565b7f6e18134e5b219f1786dd555b831eb2b7faee00475bf43015fc58d045fdeb8f086040516020815280610bb933956020830190610f79565b0390a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4372657065546f6b656e5574696c733a20455448207472616e7366657246726f60448201527f6d206d7573742062652063616c6c6572000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20616c72656164792066696e69736865640000000000000000006044820152fd5b610cb9915060203d602011610494576104868183610e1b565b84610a83565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126109255760043567ffffffffffffffff8111610925576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261092557600401916024359067ffffffffffffffff8211610925577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126109255760040190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b359073ffffffffffffffffffffffffffffffffffffffff8216820361092557565b15610dbd57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2077726f6e6720636861696e00000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176109a657604052565b90816020910312610925575173ffffffffffffffffffffffffffffffffffffffff811681036109255790565b803573ffffffffffffffffffffffffffffffffffffffff8116809103610925578252602090810135910152565b73ffffffffffffffffffffffffffffffffffffffff610ed382610d95565b1682526020810135602083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156109255701906020823592019167ffffffffffffffff811161092557803603831361092557601f817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09260809560606040870152816060870152868601375f8582860101520116010190565b9081358152602082013563ffffffff8116809103610925576020820152610fa66040820160408401610e88565b610fb66080820160808401610e88565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181121561092557610100611004819261012060c08601528561012086019101610eb5565b9373ffffffffffffffffffffffffffffffffffffffff61102660e08301610d95565b1660e0850152013591015290565b60409073ffffffffffffffffffffffffffffffffffffffff61106194931681528160208201520190610f79565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036109255790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa181360301821215610925570190565b803546036110cc5760406110619101611064565b60208101359063ffffffff821680920361092557611101604073ffffffffffffffffffffffffffffffffffffffff9201611064565b16604051917f78a0565e0000000000000000000000000000000000000000000000000000000083526004830152602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156108f45773ffffffffffffffffffffffffffffffffffffffff915f9161119957501690565b6111b2915060203d602011610494576104868183610e1b565b1690565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610925570180359067ffffffffffffffff82116109255760200191813603831361092557565b3d1561125f573d9067ffffffffffffffff82116109a6576040519161125460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610e1b565b82523d5f602084013e565b606090565b906040810161127381836111b6565b90506114db575b5050608081019061129461128d83611064565b309061171c565b9060a08101358092106114575760c081016112bc6112b28284611085565b60408101906111b6565b15905061142957826112cd85611064565b73ffffffffffffffffffffffffffffffffffffffff6112ef6103c58587611085565b91169081611384575b5050505f8161130b6103c5839486611085565b906113276112b2602061131e8489611085565b01359287611085565b9190826040519384928337810185815203925af1611343611207565b501561134e57505050565b73ffffffffffffffffffffffffffffffffffffffff61137b60e061137461138296611064565b9301611064565b16906117ca565b565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911660048201526024810192909252602090829060449082905f905af180156108f4576113f1575b8084916112f8565b6020813d602011611421575b8161140a60209383610e1b565b81010312610925575180151503610925575f6113e9565b3d91506113fd565b61137b6103c573ffffffffffffffffffffffffffffffffffffffff9261145161138297611064565b94611085565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f46434354503a20696e73756666696369656e742066696e616c2063616c6c207460448201527f6f6b656e207265636569766564000000000000000000000000000000000000006064820152fd5b5f91602083926114ed60408701611064565b6114f684611064565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000085820190815273ffffffffffffffffffffffffffffffffffffffff8316602483015260608a01356044808401919091528252919290918590889061155f606486610e1b565b84519082855af187513d82611685575b505015611617575b50505061158d61158684611064565b91846111b6565b9290836040519485928337810186815203930135905af16115ac611207565b50156115b9575f8061127a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f46434354503a2073776170206661696c656400000000000000000000000000006044820152fd5b610b7661167d9373ffffffffffffffffffffffffffffffffffffffff604051917f095ea7b3000000000000000000000000000000000000000000000000000000008984015216602482015288604482015260448152611677606482610e1b565b826118bc565b5f8080611577565b9091501588146116b2575073ffffffffffffffffffffffffffffffffffffffff81163b15155b5f8061156f565b6001146116ab565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261138291610b76606483610e1b565b73ffffffffffffffffffffffffffffffffffffffff168061173c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa9081156108f4575f9161179b575090565b90506020813d6020116117c2575b816117b660209383610e1b565b81010312610925575190565b3d91506117a9565b90919073ffffffffffffffffffffffffffffffffffffffff8116156118095773ffffffffffffffffffffffffffffffffffffffff6113829316906116ba565b505f8080939273ffffffffffffffffffffffffffffffffffffffff8294165af1611831611207565b501561183957565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b905f602091828151910182855af1156108f4575f513d61193a575073ffffffffffffffffffffffffffffffffffffffff81163b155b6118f85750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156118f156fea264697066735822122099a1554c30b8a4675d5c9c134182e07203a222c014ef85b35a326f14273fd19664736f6c634300081a0033000000000000000000000000e997d7d2f6e065a9a93fa2175e878fb9081f1f0a0000000000000000000000009f3b8679c73c2fef8b59b4f3444d4e156fb70aa500000000000000000000000085efccba0451b70d4ca3763db7c348058bfc5b07" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x2076f5", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x77d2124d5bdb124d5d207a55bb1d3abb8826a2ceee95eedb886089fbaa58722d", + "transactionIndex": "0x4", + "blockHash": "0x899aab7c1945fb33977d2ec7ee4205e029b5aada2dbfaf725ae6e7fa882d5cee", + "blockNumber": "0xf62fb7", + "gasUsed": "0x171326", + "effectiveGasPrice": "0xc90db", + "from": "0x2a6d311394184eeb6df8fbbf58626b085374ffe7", + "to": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "contractAddress": null, + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x106d70353923", + "l1GasPrice": "0x4fce0d1d89", + "l1GasUsed": "0xbaf6" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1728036452, + "chain": 84532, + "commit": "c2679066" +} \ No newline at end of file diff --git a/packages/contract/broadcast/DeployCrepeHandoffFactory.s.sol/11155111/run-latest.json b/packages/contract/broadcast/DeployCrepeHandoffFactory.s.sol/11155111/run-latest.json new file mode 100644 index 000000000..8ac23a4d3 --- /dev/null +++ b/packages/contract/broadcast/DeployCrepeHandoffFactory.s.sol/11155111/run-latest.json @@ -0,0 +1,80 @@ +{ + "transactions": [ + { + "hash": "0x1ec5dc7316c1b4f4b98463fe870c48f2a7cac67f66b23d5660669f1f8384408d", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "function": "deploy(bytes32,bytes)", + "arguments": [ + "0x1b6d877cd3b3442968bb39d2aa0b3ccf6aaa48ca29659b32c89ff1e334a23a21", + "0x60a080604052346078576111038181016001600160401b0381118382101760645782916109f3833903905ff08015605957608052604051610976908161007d82396080518181816101010152818161028101526103520152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816384c0993f1461030a575080639c512187146101c95763d6c552661461003d575f80fd5b346101c557602073ffffffffffffffffffffffffffffffffffffffff6055600b61006636610376565b6101a26102a86100ee6040519461007f8a8401876105f1565b8286528986019261069984396100c26040519586927f0190f512000000000000000000000000000000000000000000000000000000008d85015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846105f1565b876040519361015385610127848201938c7f00000000000000000000000000000000000000000000000000000000000000001685610632565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866105f1565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b5190206040519060408201525f858201523081520160ff81532016604051908152f35b5f80fd5b346101c5576102406101da36610376565b91906102146040519384927f0190f51200000000000000000000000000000000000000000000000000000000602085015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b6040516102a88082019082821067ffffffffffffffff8311176102dd575f9383926102a792610699853973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690610632565b039082f580156102d25760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346101c5575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c55760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101c55760043573ffffffffffffffffffffffffffffffffffffffff811681036101c557916024359067ffffffffffffffff82116101c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610120920301126101c55760040190565b803573ffffffffffffffffffffffffffffffffffffffff81168091036101c5578252602090810135910152565b359073ffffffffffffffffffffffffffffffffffffffff821682036101c557565b9073ffffffffffffffffffffffffffffffffffffffff1681526040602082015281356040820152602082013563ffffffff81168091036101c55760608201526104a56080820160408401610408565b6104b560c0820160808401610408565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112156101c557820161012061010083015273ffffffffffffffffffffffffffffffffffffffff61050f82610435565b16610160830152602081013561018083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156101c55701916020833593019067ffffffffffffffff84116101c55783360382136101c55783610100601f926101e0967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09560606101a0890152816101c0890152888801375f87848801015273ffffffffffffffffffffffffffffffffffffffff6105db60e08301610435565b1661012087015201356101408501520116010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b90601f602060609473ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0941685526040828601528051918291826040880152018686015e5f858286010152011601019056fe60806040526102a88038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051608d908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040525f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156053573d5ff35b3d5ffdfea264697066735822122027a9d44be0d6d18cf638c81733892ec9c2fa654f1b068c13dc775a93090c072864736f6c634300081a0033a26469706673582212204d416d7f9399b99e0adca2fbbfc5521f06504faa3d87fcd8724f1173a3fc625864736f6c634300081a00336080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161102e90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630190f5121461066557806320976403146102c05763a5cd39ca0361000e57346102bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5773ffffffffffffffffffffffffffffffffffffffff5f5416610090813314610d50565b73ffffffffffffffffffffffffffffffffffffffff60035416906100b43083610f4a565b600454811061023857821561019d576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff9490941660248301526044808301939093529181525f9190610127606482610df2565b519082855af115610192575f513d6101895750803b155b61015e57505b73ffffffffffffffffffffffffffffffffffffffff5f5416ff5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001141561013e565b6040513d5f823e3d90fd5b5f80935080929181925af16101b0610e33565b506101445760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f46434354503a20696e73756666696369656e7420627269646765206d696e742060448201527f746f6b656e2072656365697665640000000000000000000000000000000000006064820152fd5b5f80fd5b346102bc5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576024359067ffffffffffffffff82116102bc57366023830112156102bc5781600401359167ffffffffffffffff83116102bc576024810190602436918560061b0101116102bc576044359067ffffffffffffffff82116102bc57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126102bc5760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102bc576103e773ffffffffffffffffffffffffffffffffffffffff5f54163314610d50565b60448301906103f68284610cff565b9050610574575b50505050905061041561040e610cbb565b3090610f4a565b6084358091106105165760015446036104425773ffffffffffffffffffffffffffffffffffffffff5f5416ff5b8061045760209284610452610cbb565b610e90565b608463ffffffff60025416915f73ffffffffffffffffffffffffffffffffffffffff610481610cbb565b169560405196879586947f6fd3504e0000000000000000000000000000000000000000000000000000000086526004860152602485015230604485015260648401525af18015610192576104d6575b80610144565b6020813d60201161050e575b816104ef60209383610df2565b810103126102bc575167ffffffffffffffff8116036102bc57806104d0565b3d91506104e2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46434354503a20696e73756666696369656e74206275726e20746f6b656e00006044820152fd5b5f5b8681106106285750505f9394508161059b602492610595879695610cde565b92610cff565b9290836040519485928337810186815203930135905af16105ba610e33565b50156105ca5780828080806103fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20737761702063616c6c206661696c65640000000000000000006044820152fd5b8061065f61064161063c6001948b87610db5565b610cde565b61064a87610cde565b6020610657858d89610db5565b013591610e90565b01610576565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc5760243567ffffffffffffffff81116102bc578036036101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159367ffffffffffffffff811680159081610cb3575b6001149081610ca9575b159081610ca0575b50610c78578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610c23575b507fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f558160040135600155602482013563ffffffff81168091036102bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600254161760025573ffffffffffffffffffffffffffffffffffffffff61082760448401610cde565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355606482013560045573ffffffffffffffffffffffffffffffffffffffff61087a60848401610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600554161760055560a48201356006557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d60c483013591018112156102bc5761093f9082016044600482019173ffffffffffffffffffffffffffffffffffffffff61090684610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075560248101356008550190610cff565b9067ffffffffffffffff8211610bf657600954600181811c91168015610bec575b6020821014610bbf57601f8111610b5c575b505f90601f8311600114610ab5576101049392915f9183610aaa575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176009555b73ffffffffffffffffffffffffffffffffffffffff6109e260e48301610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a550135600b55610a1757005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050858061098e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160095f5260205f20925f5b818110610b44575091600193918561010497969410610b0c575b505050811b016009556109c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055858080610afe565b91936020600181928787013581550195019201610ae4565b60095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c81019160208510610bb5575b601f0160051c01905b818110610baa5750610972565b5f8155600101610b9d565b9091508190610b94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610960565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558461079a565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501586610747565b303b15915061073f565b869150610735565b60643573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102bc570180359067ffffffffffffffff82116102bc576020019181360383136102bc57565b15610d5757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a206f6e6c792063726561746f72000000000000000000000000006044820152fd5b9190811015610dc55760061b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b3d15610e8b573d9067ffffffffffffffff8211610bf65760405191610e8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610df2565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff169182610eb157505050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482015290602090829060449082905f905af1801561019257610f165750565b6020813d602011610f42575b81610f2f60209383610df2565b810103126102bc5751801515036102bc57565b3d9150610f22565b73ffffffffffffffffffffffffffffffffffffffff1680610f6a57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610192575f91610fc9575090565b90506020813d602011610ff0575b81610fe460209383610df2565b810103126102bc575190565b3d9150610fd756fea26469706673582212202b9dc600da6aa545569e11ad265f1f3d827709652a2bfabb4888a70a3c2c432764736f6c634300081a0033" + ], + "transaction": { + "from": "0x2a6d311394184eeb6df8fbbf58626b085374ffe7", + "to": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "gas": "0x2150a5", + "value": "0x0", + "input": "0xcdcb760a1b6d877cd3b3442968bb39d2aa0b3ccf6aaa48ca29659b32c89ff1e334a23a2100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001af660a080604052346078576111038181016001600160401b0381118382101760645782916109f3833903905ff08015605957608052604051610976908161007d82396080518181816101010152818161028101526103520152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816384c0993f1461030a575080639c512187146101c95763d6c552661461003d575f80fd5b346101c557602073ffffffffffffffffffffffffffffffffffffffff6055600b61006636610376565b6101a26102a86100ee6040519461007f8a8401876105f1565b8286528986019261069984396100c26040519586927f0190f512000000000000000000000000000000000000000000000000000000008d85015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846105f1565b876040519361015385610127848201938c7f00000000000000000000000000000000000000000000000000000000000000001685610632565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866105f1565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b5190206040519060408201525f858201523081520160ff81532016604051908152f35b5f80fd5b346101c5576102406101da36610376565b91906102146040519384927f0190f51200000000000000000000000000000000000000000000000000000000602085015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b6040516102a88082019082821067ffffffffffffffff8311176102dd575f9383926102a792610699853973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690610632565b039082f580156102d25760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346101c5575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c55760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101c55760043573ffffffffffffffffffffffffffffffffffffffff811681036101c557916024359067ffffffffffffffff82116101c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610120920301126101c55760040190565b803573ffffffffffffffffffffffffffffffffffffffff81168091036101c5578252602090810135910152565b359073ffffffffffffffffffffffffffffffffffffffff821682036101c557565b9073ffffffffffffffffffffffffffffffffffffffff1681526040602082015281356040820152602082013563ffffffff81168091036101c55760608201526104a56080820160408401610408565b6104b560c0820160808401610408565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112156101c557820161012061010083015273ffffffffffffffffffffffffffffffffffffffff61050f82610435565b16610160830152602081013561018083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156101c55701916020833593019067ffffffffffffffff84116101c55783360382136101c55783610100601f926101e0967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09560606101a0890152816101c0890152888801375f87848801015273ffffffffffffffffffffffffffffffffffffffff6105db60e08301610435565b1661012087015201356101408501520116010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b90601f602060609473ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0941685526040828601528051918291826040880152018686015e5f858286010152011601019056fe60806040526102a88038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051608d908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040525f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156053573d5ff35b3d5ffdfea264697066735822122027a9d44be0d6d18cf638c81733892ec9c2fa654f1b068c13dc775a93090c072864736f6c634300081a0033a26469706673582212204d416d7f9399b99e0adca2fbbfc5521f06504faa3d87fcd8724f1173a3fc625864736f6c634300081a00336080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161102e90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630190f5121461066557806320976403146102c05763a5cd39ca0361000e57346102bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5773ffffffffffffffffffffffffffffffffffffffff5f5416610090813314610d50565b73ffffffffffffffffffffffffffffffffffffffff60035416906100b43083610f4a565b600454811061023857821561019d576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff9490941660248301526044808301939093529181525f9190610127606482610df2565b519082855af115610192575f513d6101895750803b155b61015e57505b73ffffffffffffffffffffffffffffffffffffffff5f5416ff5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001141561013e565b6040513d5f823e3d90fd5b5f80935080929181925af16101b0610e33565b506101445760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f46434354503a20696e73756666696369656e7420627269646765206d696e742060448201527f746f6b656e2072656365697665640000000000000000000000000000000000006064820152fd5b5f80fd5b346102bc5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576024359067ffffffffffffffff82116102bc57366023830112156102bc5781600401359167ffffffffffffffff83116102bc576024810190602436918560061b0101116102bc576044359067ffffffffffffffff82116102bc57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126102bc5760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102bc576103e773ffffffffffffffffffffffffffffffffffffffff5f54163314610d50565b60448301906103f68284610cff565b9050610574575b50505050905061041561040e610cbb565b3090610f4a565b6084358091106105165760015446036104425773ffffffffffffffffffffffffffffffffffffffff5f5416ff5b8061045760209284610452610cbb565b610e90565b608463ffffffff60025416915f73ffffffffffffffffffffffffffffffffffffffff610481610cbb565b169560405196879586947f6fd3504e0000000000000000000000000000000000000000000000000000000086526004860152602485015230604485015260648401525af18015610192576104d6575b80610144565b6020813d60201161050e575b816104ef60209383610df2565b810103126102bc575167ffffffffffffffff8116036102bc57806104d0565b3d91506104e2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46434354503a20696e73756666696369656e74206275726e20746f6b656e00006044820152fd5b5f5b8681106106285750505f9394508161059b602492610595879695610cde565b92610cff565b9290836040519485928337810186815203930135905af16105ba610e33565b50156105ca5780828080806103fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20737761702063616c6c206661696c65640000000000000000006044820152fd5b8061065f61064161063c6001948b87610db5565b610cde565b61064a87610cde565b6020610657858d89610db5565b013591610e90565b01610576565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc5760243567ffffffffffffffff81116102bc578036036101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159367ffffffffffffffff811680159081610cb3575b6001149081610ca9575b159081610ca0575b50610c78578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610c23575b507fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f558160040135600155602482013563ffffffff81168091036102bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600254161760025573ffffffffffffffffffffffffffffffffffffffff61082760448401610cde565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355606482013560045573ffffffffffffffffffffffffffffffffffffffff61087a60848401610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600554161760055560a48201356006557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d60c483013591018112156102bc5761093f9082016044600482019173ffffffffffffffffffffffffffffffffffffffff61090684610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075560248101356008550190610cff565b9067ffffffffffffffff8211610bf657600954600181811c91168015610bec575b6020821014610bbf57601f8111610b5c575b505f90601f8311600114610ab5576101049392915f9183610aaa575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176009555b73ffffffffffffffffffffffffffffffffffffffff6109e260e48301610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a550135600b55610a1757005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050858061098e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160095f5260205f20925f5b818110610b44575091600193918561010497969410610b0c575b505050811b016009556109c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055858080610afe565b91936020600181928787013581550195019201610ae4565b60095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c81019160208510610bb5575b601f0160051c01905b818110610baa5750610972565b5f8155600101610b9d565b9091508190610b94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610960565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558461079a565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501586610747565b303b15915061073f565b869150610735565b60643573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102bc570180359067ffffffffffffffff82116102bc576020019181360383136102bc57565b15610d5757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a206f6e6c792063726561746f72000000000000000000000000006044820152fd5b9190811015610dc55760061b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b3d15610e8b573d9067ffffffffffffffff8211610bf65760405191610e8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610df2565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff169182610eb157505050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482015290602090829060449082905f905af1801561019257610f165750565b6020813d602011610f42575b81610f2f60209383610df2565b810103126102bc5751801515036102bc57565b3d9150610f22565b73ffffffffffffffffffffffffffffffffffffffff1680610f6a57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610192575f91610fc9575090565b90506020813d602011610ff0575b81610fe460209383610df2565b810103126102bc575190565b3d9150610fd756fea26469706673582212202b9dc600da6aa545569e11ad265f1f3d827709652a2bfabb4888a70a3c2c432764736f6c634300081a003300000000000000000000", + "nonce": "0x47", + "chainId": "0xaa36a7" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "address": "0xe5028b6bf2e5a1a0a4638580d5c63ef8c736f1cf", + "initCode": "0x67363d3d37363d34f03d5260086018f3" + }, + { + "transactionType": "CREATE", + "address": "0x69ebeef1d112edf1c4d82e0b787d3537ef8839ba", + "initCode": "0x60a080604052346078576111038181016001600160401b0381118382101760645782916109f3833903905ff08015605957608052604051610976908161007d82396080518181816101010152818161028101526103520152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816384c0993f1461030a575080639c512187146101c95763d6c552661461003d575f80fd5b346101c557602073ffffffffffffffffffffffffffffffffffffffff6055600b61006636610376565b6101a26102a86100ee6040519461007f8a8401876105f1565b8286528986019261069984396100c26040519586927f0190f512000000000000000000000000000000000000000000000000000000008d85015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846105f1565b876040519361015385610127848201938c7f00000000000000000000000000000000000000000000000000000000000000001685610632565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866105f1565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b5190206040519060408201525f858201523081520160ff81532016604051908152f35b5f80fd5b346101c5576102406101da36610376565b91906102146040519384927f0190f51200000000000000000000000000000000000000000000000000000000602085015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b6040516102a88082019082821067ffffffffffffffff8311176102dd575f9383926102a792610699853973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690610632565b039082f580156102d25760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346101c5575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c55760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101c55760043573ffffffffffffffffffffffffffffffffffffffff811681036101c557916024359067ffffffffffffffff82116101c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610120920301126101c55760040190565b803573ffffffffffffffffffffffffffffffffffffffff81168091036101c5578252602090810135910152565b359073ffffffffffffffffffffffffffffffffffffffff821682036101c557565b9073ffffffffffffffffffffffffffffffffffffffff1681526040602082015281356040820152602082013563ffffffff81168091036101c55760608201526104a56080820160408401610408565b6104b560c0820160808401610408565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112156101c557820161012061010083015273ffffffffffffffffffffffffffffffffffffffff61050f82610435565b16610160830152602081013561018083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156101c55701916020833593019067ffffffffffffffff84116101c55783360382136101c55783610100601f926101e0967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09560606101a0890152816101c0890152888801375f87848801015273ffffffffffffffffffffffffffffffffffffffff6105db60e08301610435565b1661012087015201356101408501520116010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b90601f602060609473ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0941685526040828601528051918291826040880152018686015e5f858286010152011601019056fe60806040526102a88038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051608d908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040525f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156053573d5ff35b3d5ffdfea264697066735822122027a9d44be0d6d18cf638c81733892ec9c2fa654f1b068c13dc775a93090c072864736f6c634300081a0033a26469706673582212204d416d7f9399b99e0adca2fbbfc5521f06504faa3d87fcd8724f1173a3fc625864736f6c634300081a00336080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161102e90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630190f5121461066557806320976403146102c05763a5cd39ca0361000e57346102bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5773ffffffffffffffffffffffffffffffffffffffff5f5416610090813314610d50565b73ffffffffffffffffffffffffffffffffffffffff60035416906100b43083610f4a565b600454811061023857821561019d576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff9490941660248301526044808301939093529181525f9190610127606482610df2565b519082855af115610192575f513d6101895750803b155b61015e57505b73ffffffffffffffffffffffffffffffffffffffff5f5416ff5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001141561013e565b6040513d5f823e3d90fd5b5f80935080929181925af16101b0610e33565b506101445760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f46434354503a20696e73756666696369656e7420627269646765206d696e742060448201527f746f6b656e2072656365697665640000000000000000000000000000000000006064820152fd5b5f80fd5b346102bc5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576024359067ffffffffffffffff82116102bc57366023830112156102bc5781600401359167ffffffffffffffff83116102bc576024810190602436918560061b0101116102bc576044359067ffffffffffffffff82116102bc57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126102bc5760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102bc576103e773ffffffffffffffffffffffffffffffffffffffff5f54163314610d50565b60448301906103f68284610cff565b9050610574575b50505050905061041561040e610cbb565b3090610f4a565b6084358091106105165760015446036104425773ffffffffffffffffffffffffffffffffffffffff5f5416ff5b8061045760209284610452610cbb565b610e90565b608463ffffffff60025416915f73ffffffffffffffffffffffffffffffffffffffff610481610cbb565b169560405196879586947f6fd3504e0000000000000000000000000000000000000000000000000000000086526004860152602485015230604485015260648401525af18015610192576104d6575b80610144565b6020813d60201161050e575b816104ef60209383610df2565b810103126102bc575167ffffffffffffffff8116036102bc57806104d0565b3d91506104e2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46434354503a20696e73756666696369656e74206275726e20746f6b656e00006044820152fd5b5f5b8681106106285750505f9394508161059b602492610595879695610cde565b92610cff565b9290836040519485928337810186815203930135905af16105ba610e33565b50156105ca5780828080806103fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20737761702063616c6c206661696c65640000000000000000006044820152fd5b8061065f61064161063c6001948b87610db5565b610cde565b61064a87610cde565b6020610657858d89610db5565b013591610e90565b01610576565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc5760243567ffffffffffffffff81116102bc578036036101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159367ffffffffffffffff811680159081610cb3575b6001149081610ca9575b159081610ca0575b50610c78578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610c23575b507fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f558160040135600155602482013563ffffffff81168091036102bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600254161760025573ffffffffffffffffffffffffffffffffffffffff61082760448401610cde565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355606482013560045573ffffffffffffffffffffffffffffffffffffffff61087a60848401610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600554161760055560a48201356006557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d60c483013591018112156102bc5761093f9082016044600482019173ffffffffffffffffffffffffffffffffffffffff61090684610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075560248101356008550190610cff565b9067ffffffffffffffff8211610bf657600954600181811c91168015610bec575b6020821014610bbf57601f8111610b5c575b505f90601f8311600114610ab5576101049392915f9183610aaa575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176009555b73ffffffffffffffffffffffffffffffffffffffff6109e260e48301610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a550135600b55610a1757005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050858061098e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160095f5260205f20925f5b818110610b44575091600193918561010497969410610b0c575b505050811b016009556109c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055858080610afe565b91936020600181928787013581550195019201610ae4565b60095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c81019160208510610bb5575b601f0160051c01905b818110610baa5750610972565b5f8155600101610b9d565b9091508190610b94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610960565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558461079a565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501586610747565b303b15915061073f565b869150610735565b60643573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102bc570180359067ffffffffffffffff82116102bc576020019181360383136102bc57565b15610d5757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a206f6e6c792063726561746f72000000000000000000000000006044820152fd5b9190811015610dc55760061b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b3d15610e8b573d9067ffffffffffffffff8211610bf65760405191610e8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610df2565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff169182610eb157505050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482015290602090829060449082905f905af1801561019257610f165750565b6020813d602011610f42575b81610f2f60209383610df2565b810103126102bc5751801515036102bc57565b3d9150610f22565b73ffffffffffffffffffffffffffffffffffffffff1680610f6a57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610192575f91610fc9575090565b90506020813d602011610ff0575b81610fe460209383610df2565b810103126102bc575190565b3d9150610fd756fea26469706673582212202b9dc600da6aa545569e11ad265f1f3d827709652a2bfabb4888a70a3c2c432764736f6c634300081a0033" + }, + { + "transactionType": "CREATE", + "address": "0x13ef65136d6fb0cb47c2f134dab71c870f7b5f1e", + "initCode": "0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161102e90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630190f5121461066557806320976403146102c05763a5cd39ca0361000e57346102bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5773ffffffffffffffffffffffffffffffffffffffff5f5416610090813314610d50565b73ffffffffffffffffffffffffffffffffffffffff60035416906100b43083610f4a565b600454811061023857821561019d576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff9490941660248301526044808301939093529181525f9190610127606482610df2565b519082855af115610192575f513d6101895750803b155b61015e57505b73ffffffffffffffffffffffffffffffffffffffff5f5416ff5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001141561013e565b6040513d5f823e3d90fd5b5f80935080929181925af16101b0610e33565b506101445760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f46434354503a20696e73756666696369656e7420627269646765206d696e742060448201527f746f6b656e2072656365697665640000000000000000000000000000000000006064820152fd5b5f80fd5b346102bc5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576024359067ffffffffffffffff82116102bc57366023830112156102bc5781600401359167ffffffffffffffff83116102bc576024810190602436918560061b0101116102bc576044359067ffffffffffffffff82116102bc57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126102bc5760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102bc576103e773ffffffffffffffffffffffffffffffffffffffff5f54163314610d50565b60448301906103f68284610cff565b9050610574575b50505050905061041561040e610cbb565b3090610f4a565b6084358091106105165760015446036104425773ffffffffffffffffffffffffffffffffffffffff5f5416ff5b8061045760209284610452610cbb565b610e90565b608463ffffffff60025416915f73ffffffffffffffffffffffffffffffffffffffff610481610cbb565b169560405196879586947f6fd3504e0000000000000000000000000000000000000000000000000000000086526004860152602485015230604485015260648401525af18015610192576104d6575b80610144565b6020813d60201161050e575b816104ef60209383610df2565b810103126102bc575167ffffffffffffffff8116036102bc57806104d0565b3d91506104e2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46434354503a20696e73756666696369656e74206275726e20746f6b656e00006044820152fd5b5f5b8681106106285750505f9394508161059b602492610595879695610cde565b92610cff565b9290836040519485928337810186815203930135905af16105ba610e33565b50156105ca5780828080806103fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20737761702063616c6c206661696c65640000000000000000006044820152fd5b8061065f61064161063c6001948b87610db5565b610cde565b61064a87610cde565b6020610657858d89610db5565b013591610e90565b01610576565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc5760243567ffffffffffffffff81116102bc578036036101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159367ffffffffffffffff811680159081610cb3575b6001149081610ca9575b159081610ca0575b50610c78578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610c23575b507fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f558160040135600155602482013563ffffffff81168091036102bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600254161760025573ffffffffffffffffffffffffffffffffffffffff61082760448401610cde565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355606482013560045573ffffffffffffffffffffffffffffffffffffffff61087a60848401610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600554161760055560a48201356006557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d60c483013591018112156102bc5761093f9082016044600482019173ffffffffffffffffffffffffffffffffffffffff61090684610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075560248101356008550190610cff565b9067ffffffffffffffff8211610bf657600954600181811c91168015610bec575b6020821014610bbf57601f8111610b5c575b505f90601f8311600114610ab5576101049392915f9183610aaa575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176009555b73ffffffffffffffffffffffffffffffffffffffff6109e260e48301610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a550135600b55610a1757005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050858061098e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160095f5260205f20925f5b818110610b44575091600193918561010497969410610b0c575b505050811b016009556109c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055858080610afe565b91936020600181928787013581550195019201610ae4565b60095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c81019160208510610bb5575b601f0160051c01905b818110610baa5750610972565b5f8155600101610b9d565b9091508190610b94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610960565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558461079a565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501586610747565b303b15915061073f565b869150610735565b60643573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102bc570180359067ffffffffffffffff82116102bc576020019181360383136102bc57565b15610d5757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a206f6e6c792063726561746f72000000000000000000000000006044820152fd5b9190811015610dc55760061b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b3d15610e8b573d9067ffffffffffffffff8211610bf65760405191610e8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610df2565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff169182610eb157505050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482015290602090829060449082905f905af1801561019257610f165750565b6020813d602011610f42575b81610f2f60209383610df2565b810103126102bc5751801515036102bc57565b3d9150610f22565b73ffffffffffffffffffffffffffffffffffffffff1680610f6a57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610192575f91610fc9575090565b90506020813d602011610ff0575b81610fe460209383610df2565b810103126102bc575190565b3d9150610fd756fea26469706673582212202b9dc600da6aa545569e11ad265f1f3d827709652a2bfabb4888a70a3c2c432764736f6c634300081a0033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xcc595c", + "logs": [ + { + "address": "0x13ef65136d6fb0cb47c2f134dab71c870f7b5f1e", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xe6bbf2eb082c99a6a65faa3d730db8f1e9fc71edffc76c86ba1b8c977892af38", + "blockNumber": "0x67f422", + "transactionHash": "0x1ec5dc7316c1b4f4b98463fe870c48f2a7cac67f66b23d5660669f1f8384408d", + "transactionIndex": "0x3a", + "logIndex": "0x50", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000800000000000000000000000080000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1ec5dc7316c1b4f4b98463fe870c48f2a7cac67f66b23d5660669f1f8384408d", + "transactionIndex": "0x3a", + "blockHash": "0xe6bbf2eb082c99a6a65faa3d730db8f1e9fc71edffc76c86ba1b8c977892af38", + "blockNumber": "0x67f422", + "gasUsed": "0x181e96", + "effectiveGasPrice": "0x55e40fc7d3", + "from": "0x2a6d311394184eeb6df8fbbf58626b085374ffe7", + "to": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1728037817, + "chain": 11155111, + "commit": "c2679066" +} \ No newline at end of file diff --git a/packages/contract/broadcast/DeployCrepeHandoffFactory.s.sol/84532/run-latest.json b/packages/contract/broadcast/DeployCrepeHandoffFactory.s.sol/84532/run-latest.json new file mode 100644 index 000000000..ea97d81da --- /dev/null +++ b/packages/contract/broadcast/DeployCrepeHandoffFactory.s.sol/84532/run-latest.json @@ -0,0 +1,86 @@ +{ + "transactions": [ + { + "hash": "0x65f789daafba907d9eb06631b78f6e0921d598875340e49468d4910a85374dbc", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "function": "deploy(bytes32,bytes)", + "arguments": [ + "0x2a862e8334a4228da934eda3c91b45db0b0808b4cbe275a8869cd32a9f243ab9", + "0x60a080604052346078576111038181016001600160401b0381118382101760645782916109f3833903905ff08015605957608052604051610976908161007d82396080518181816101010152818161028101526103520152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816384c0993f1461030a575080639c512187146101c95763d6c552661461003d575f80fd5b346101c557602073ffffffffffffffffffffffffffffffffffffffff6055600b61006636610376565b6101a26102a86100ee6040519461007f8a8401876105f1565b8286528986019261069984396100c26040519586927f0190f512000000000000000000000000000000000000000000000000000000008d85015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846105f1565b876040519361015385610127848201938c7f00000000000000000000000000000000000000000000000000000000000000001685610632565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866105f1565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b5190206040519060408201525f858201523081520160ff81532016604051908152f35b5f80fd5b346101c5576102406101da36610376565b91906102146040519384927f0190f51200000000000000000000000000000000000000000000000000000000602085015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b6040516102a88082019082821067ffffffffffffffff8311176102dd575f9383926102a792610699853973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690610632565b039082f580156102d25760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346101c5575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c55760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101c55760043573ffffffffffffffffffffffffffffffffffffffff811681036101c557916024359067ffffffffffffffff82116101c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610120920301126101c55760040190565b803573ffffffffffffffffffffffffffffffffffffffff81168091036101c5578252602090810135910152565b359073ffffffffffffffffffffffffffffffffffffffff821682036101c557565b9073ffffffffffffffffffffffffffffffffffffffff1681526040602082015281356040820152602082013563ffffffff81168091036101c55760608201526104a56080820160408401610408565b6104b560c0820160808401610408565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112156101c557820161012061010083015273ffffffffffffffffffffffffffffffffffffffff61050f82610435565b16610160830152602081013561018083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156101c55701916020833593019067ffffffffffffffff84116101c55783360382136101c55783610100601f926101e0967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09560606101a0890152816101c0890152888801375f87848801015273ffffffffffffffffffffffffffffffffffffffff6105db60e08301610435565b1661012087015201356101408501520116010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b90601f602060609473ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0941685526040828601528051918291826040880152018686015e5f858286010152011601019056fe60806040526102a88038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051608d908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040525f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156053573d5ff35b3d5ffdfea264697066735822122027a9d44be0d6d18cf638c81733892ec9c2fa654f1b068c13dc775a93090c072864736f6c634300081a0033a26469706673582212204d416d7f9399b99e0adca2fbbfc5521f06504faa3d87fcd8724f1173a3fc625864736f6c634300081a00336080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161102e90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630190f5121461066557806320976403146102c05763a5cd39ca0361000e57346102bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5773ffffffffffffffffffffffffffffffffffffffff5f5416610090813314610d50565b73ffffffffffffffffffffffffffffffffffffffff60035416906100b43083610f4a565b600454811061023857821561019d576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff9490941660248301526044808301939093529181525f9190610127606482610df2565b519082855af115610192575f513d6101895750803b155b61015e57505b73ffffffffffffffffffffffffffffffffffffffff5f5416ff5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001141561013e565b6040513d5f823e3d90fd5b5f80935080929181925af16101b0610e33565b506101445760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f46434354503a20696e73756666696369656e7420627269646765206d696e742060448201527f746f6b656e2072656365697665640000000000000000000000000000000000006064820152fd5b5f80fd5b346102bc5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576024359067ffffffffffffffff82116102bc57366023830112156102bc5781600401359167ffffffffffffffff83116102bc576024810190602436918560061b0101116102bc576044359067ffffffffffffffff82116102bc57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126102bc5760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102bc576103e773ffffffffffffffffffffffffffffffffffffffff5f54163314610d50565b60448301906103f68284610cff565b9050610574575b50505050905061041561040e610cbb565b3090610f4a565b6084358091106105165760015446036104425773ffffffffffffffffffffffffffffffffffffffff5f5416ff5b8061045760209284610452610cbb565b610e90565b608463ffffffff60025416915f73ffffffffffffffffffffffffffffffffffffffff610481610cbb565b169560405196879586947f6fd3504e0000000000000000000000000000000000000000000000000000000086526004860152602485015230604485015260648401525af18015610192576104d6575b80610144565b6020813d60201161050e575b816104ef60209383610df2565b810103126102bc575167ffffffffffffffff8116036102bc57806104d0565b3d91506104e2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46434354503a20696e73756666696369656e74206275726e20746f6b656e00006044820152fd5b5f5b8681106106285750505f9394508161059b602492610595879695610cde565b92610cff565b9290836040519485928337810186815203930135905af16105ba610e33565b50156105ca5780828080806103fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20737761702063616c6c206661696c65640000000000000000006044820152fd5b8061065f61064161063c6001948b87610db5565b610cde565b61064a87610cde565b6020610657858d89610db5565b013591610e90565b01610576565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc5760243567ffffffffffffffff81116102bc578036036101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159367ffffffffffffffff811680159081610cb3575b6001149081610ca9575b159081610ca0575b50610c78578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610c23575b507fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f558160040135600155602482013563ffffffff81168091036102bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600254161760025573ffffffffffffffffffffffffffffffffffffffff61082760448401610cde565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355606482013560045573ffffffffffffffffffffffffffffffffffffffff61087a60848401610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600554161760055560a48201356006557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d60c483013591018112156102bc5761093f9082016044600482019173ffffffffffffffffffffffffffffffffffffffff61090684610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075560248101356008550190610cff565b9067ffffffffffffffff8211610bf657600954600181811c91168015610bec575b6020821014610bbf57601f8111610b5c575b505f90601f8311600114610ab5576101049392915f9183610aaa575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176009555b73ffffffffffffffffffffffffffffffffffffffff6109e260e48301610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a550135600b55610a1757005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050858061098e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160095f5260205f20925f5b818110610b44575091600193918561010497969410610b0c575b505050811b016009556109c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055858080610afe565b91936020600181928787013581550195019201610ae4565b60095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c81019160208510610bb5575b601f0160051c01905b818110610baa5750610972565b5f8155600101610b9d565b9091508190610b94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610960565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558461079a565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501586610747565b303b15915061073f565b869150610735565b60643573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102bc570180359067ffffffffffffffff82116102bc576020019181360383136102bc57565b15610d5757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a206f6e6c792063726561746f72000000000000000000000000006044820152fd5b9190811015610dc55760061b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b3d15610e8b573d9067ffffffffffffffff8211610bf65760405191610e8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610df2565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff169182610eb157505050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482015290602090829060449082905f905af1801561019257610f165750565b6020813d602011610f42575b81610f2f60209383610df2565b810103126102bc5751801515036102bc57565b3d9150610f22565b73ffffffffffffffffffffffffffffffffffffffff1680610f6a57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610192575f91610fc9575090565b90506020813d602011610ff0575b81610fe460209383610df2565b810103126102bc575190565b3d9150610fd756fea26469706673582212202b9dc600da6aa545569e11ad265f1f3d827709652a2bfabb4888a70a3c2c432764736f6c634300081a0033" + ], + "transaction": { + "from": "0x2a6d311394184eeb6df8fbbf58626b085374ffe7", + "to": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "gas": "0x2150a5", + "value": "0x0", + "input": "0xcdcb760a2a862e8334a4228da934eda3c91b45db0b0808b4cbe275a8869cd32a9f243ab900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001af660a080604052346078576111038181016001600160401b0381118382101760645782916109f3833903905ff08015605957608052604051610976908161007d82396080518181816101010152818161028101526103520152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816384c0993f1461030a575080639c512187146101c95763d6c552661461003d575f80fd5b346101c557602073ffffffffffffffffffffffffffffffffffffffff6055600b61006636610376565b6101a26102a86100ee6040519461007f8a8401876105f1565b8286528986019261069984396100c26040519586927f0190f512000000000000000000000000000000000000000000000000000000008d85015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846105f1565b876040519361015385610127848201938c7f00000000000000000000000000000000000000000000000000000000000000001685610632565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866105f1565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b5190206040519060408201525f858201523081520160ff81532016604051908152f35b5f80fd5b346101c5576102406101da36610376565b91906102146040519384927f0190f51200000000000000000000000000000000000000000000000000000000602085015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b6040516102a88082019082821067ffffffffffffffff8311176102dd575f9383926102a792610699853973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690610632565b039082f580156102d25760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346101c5575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c55760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101c55760043573ffffffffffffffffffffffffffffffffffffffff811681036101c557916024359067ffffffffffffffff82116101c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610120920301126101c55760040190565b803573ffffffffffffffffffffffffffffffffffffffff81168091036101c5578252602090810135910152565b359073ffffffffffffffffffffffffffffffffffffffff821682036101c557565b9073ffffffffffffffffffffffffffffffffffffffff1681526040602082015281356040820152602082013563ffffffff81168091036101c55760608201526104a56080820160408401610408565b6104b560c0820160808401610408565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112156101c557820161012061010083015273ffffffffffffffffffffffffffffffffffffffff61050f82610435565b16610160830152602081013561018083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156101c55701916020833593019067ffffffffffffffff84116101c55783360382136101c55783610100601f926101e0967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09560606101a0890152816101c0890152888801375f87848801015273ffffffffffffffffffffffffffffffffffffffff6105db60e08301610435565b1661012087015201356101408501520116010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b90601f602060609473ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0941685526040828601528051918291826040880152018686015e5f858286010152011601019056fe60806040526102a88038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051608d908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040525f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156053573d5ff35b3d5ffdfea264697066735822122027a9d44be0d6d18cf638c81733892ec9c2fa654f1b068c13dc775a93090c072864736f6c634300081a0033a26469706673582212204d416d7f9399b99e0adca2fbbfc5521f06504faa3d87fcd8724f1173a3fc625864736f6c634300081a00336080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161102e90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630190f5121461066557806320976403146102c05763a5cd39ca0361000e57346102bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5773ffffffffffffffffffffffffffffffffffffffff5f5416610090813314610d50565b73ffffffffffffffffffffffffffffffffffffffff60035416906100b43083610f4a565b600454811061023857821561019d576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff9490941660248301526044808301939093529181525f9190610127606482610df2565b519082855af115610192575f513d6101895750803b155b61015e57505b73ffffffffffffffffffffffffffffffffffffffff5f5416ff5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001141561013e565b6040513d5f823e3d90fd5b5f80935080929181925af16101b0610e33565b506101445760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f46434354503a20696e73756666696369656e7420627269646765206d696e742060448201527f746f6b656e2072656365697665640000000000000000000000000000000000006064820152fd5b5f80fd5b346102bc5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576024359067ffffffffffffffff82116102bc57366023830112156102bc5781600401359167ffffffffffffffff83116102bc576024810190602436918560061b0101116102bc576044359067ffffffffffffffff82116102bc57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126102bc5760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102bc576103e773ffffffffffffffffffffffffffffffffffffffff5f54163314610d50565b60448301906103f68284610cff565b9050610574575b50505050905061041561040e610cbb565b3090610f4a565b6084358091106105165760015446036104425773ffffffffffffffffffffffffffffffffffffffff5f5416ff5b8061045760209284610452610cbb565b610e90565b608463ffffffff60025416915f73ffffffffffffffffffffffffffffffffffffffff610481610cbb565b169560405196879586947f6fd3504e0000000000000000000000000000000000000000000000000000000086526004860152602485015230604485015260648401525af18015610192576104d6575b80610144565b6020813d60201161050e575b816104ef60209383610df2565b810103126102bc575167ffffffffffffffff8116036102bc57806104d0565b3d91506104e2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46434354503a20696e73756666696369656e74206275726e20746f6b656e00006044820152fd5b5f5b8681106106285750505f9394508161059b602492610595879695610cde565b92610cff565b9290836040519485928337810186815203930135905af16105ba610e33565b50156105ca5780828080806103fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20737761702063616c6c206661696c65640000000000000000006044820152fd5b8061065f61064161063c6001948b87610db5565b610cde565b61064a87610cde565b6020610657858d89610db5565b013591610e90565b01610576565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc5760243567ffffffffffffffff81116102bc578036036101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159367ffffffffffffffff811680159081610cb3575b6001149081610ca9575b159081610ca0575b50610c78578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610c23575b507fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f558160040135600155602482013563ffffffff81168091036102bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600254161760025573ffffffffffffffffffffffffffffffffffffffff61082760448401610cde565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355606482013560045573ffffffffffffffffffffffffffffffffffffffff61087a60848401610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600554161760055560a48201356006557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d60c483013591018112156102bc5761093f9082016044600482019173ffffffffffffffffffffffffffffffffffffffff61090684610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075560248101356008550190610cff565b9067ffffffffffffffff8211610bf657600954600181811c91168015610bec575b6020821014610bbf57601f8111610b5c575b505f90601f8311600114610ab5576101049392915f9183610aaa575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176009555b73ffffffffffffffffffffffffffffffffffffffff6109e260e48301610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a550135600b55610a1757005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050858061098e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160095f5260205f20925f5b818110610b44575091600193918561010497969410610b0c575b505050811b016009556109c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055858080610afe565b91936020600181928787013581550195019201610ae4565b60095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c81019160208510610bb5575b601f0160051c01905b818110610baa5750610972565b5f8155600101610b9d565b9091508190610b94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610960565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558461079a565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501586610747565b303b15915061073f565b869150610735565b60643573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102bc570180359067ffffffffffffffff82116102bc576020019181360383136102bc57565b15610d5757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a206f6e6c792063726561746f72000000000000000000000000006044820152fd5b9190811015610dc55760061b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b3d15610e8b573d9067ffffffffffffffff8211610bf65760405191610e8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610df2565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff169182610eb157505050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482015290602090829060449082905f905af1801561019257610f165750565b6020813d602011610f42575b81610f2f60209383610df2565b810103126102bc5751801515036102bc57565b3d9150610f22565b73ffffffffffffffffffffffffffffffffffffffff1680610f6a57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610192575f91610fc9575090565b90506020813d602011610ff0575b81610fe460209383610df2565b810103126102bc575190565b3d9150610fd756fea26469706673582212202b9dc600da6aa545569e11ad265f1f3d827709652a2bfabb4888a70a3c2c432764736f6c634300081a003300000000000000000000", + "nonce": "0x780", + "chainId": "0x14a34" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "address": "0x6ae83ee7857060dc26556a15da188265b416fef3", + "initCode": "0x67363d3d37363d34f03d5260086018f3" + }, + { + "transactionType": "CREATE", + "address": "0x85efccba0451b70d4ca3763db7c348058bfc5b07", + "initCode": "0x60a080604052346078576111038181016001600160401b0381118382101760645782916109f3833903905ff08015605957608052604051610976908161007d82396080518181816101010152818161028101526103520152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816384c0993f1461030a575080639c512187146101c95763d6c552661461003d575f80fd5b346101c557602073ffffffffffffffffffffffffffffffffffffffff6055600b61006636610376565b6101a26102a86100ee6040519461007f8a8401876105f1565b8286528986019261069984396100c26040519586927f0190f512000000000000000000000000000000000000000000000000000000008d85015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846105f1565b876040519361015385610127848201938c7f00000000000000000000000000000000000000000000000000000000000000001685610632565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866105f1565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b5190206040519060408201525f858201523081520160ff81532016604051908152f35b5f80fd5b346101c5576102406101da36610376565b91906102146040519384927f0190f51200000000000000000000000000000000000000000000000000000000602085015260248401610456565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105f1565b6040516102a88082019082821067ffffffffffffffff8311176102dd575f9383926102a792610699853973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690610632565b039082f580156102d25760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346101c5575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101c55760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101c55760043573ffffffffffffffffffffffffffffffffffffffff811681036101c557916024359067ffffffffffffffff82116101c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610120920301126101c55760040190565b803573ffffffffffffffffffffffffffffffffffffffff81168091036101c5578252602090810135910152565b359073ffffffffffffffffffffffffffffffffffffffff821682036101c557565b9073ffffffffffffffffffffffffffffffffffffffff1681526040602082015281356040820152602082013563ffffffff81168091036101c55760608201526104a56080820160408401610408565b6104b560c0820160808401610408565b60c08201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112156101c557820161012061010083015273ffffffffffffffffffffffffffffffffffffffff61050f82610435565b16610160830152602081013561018083015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156101c55701916020833593019067ffffffffffffffff84116101c55783360382136101c55783610100601f926101e0967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09560606101a0890152816101c0890152888801375f87848801015273ffffffffffffffffffffffffffffffffffffffff6105db60e08301610435565b1661012087015201356101408501520116010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b90601f602060609473ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0941685526040828601528051918291826040880152018686015e5f858286010152011601019056fe60806040526102a88038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051608d908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040525f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156053573d5ff35b3d5ffdfea264697066735822122027a9d44be0d6d18cf638c81733892ec9c2fa654f1b068c13dc775a93090c072864736f6c634300081a0033a26469706673582212204d416d7f9399b99e0adca2fbbfc5521f06504faa3d87fcd8724f1173a3fc625864736f6c634300081a00336080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161102e90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630190f5121461066557806320976403146102c05763a5cd39ca0361000e57346102bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5773ffffffffffffffffffffffffffffffffffffffff5f5416610090813314610d50565b73ffffffffffffffffffffffffffffffffffffffff60035416906100b43083610f4a565b600454811061023857821561019d576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff9490941660248301526044808301939093529181525f9190610127606482610df2565b519082855af115610192575f513d6101895750803b155b61015e57505b73ffffffffffffffffffffffffffffffffffffffff5f5416ff5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001141561013e565b6040513d5f823e3d90fd5b5f80935080929181925af16101b0610e33565b506101445760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f46434354503a20696e73756666696369656e7420627269646765206d696e742060448201527f746f6b656e2072656365697665640000000000000000000000000000000000006064820152fd5b5f80fd5b346102bc5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576024359067ffffffffffffffff82116102bc57366023830112156102bc5781600401359167ffffffffffffffff83116102bc576024810190602436918560061b0101116102bc576044359067ffffffffffffffff82116102bc57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126102bc5760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102bc576103e773ffffffffffffffffffffffffffffffffffffffff5f54163314610d50565b60448301906103f68284610cff565b9050610574575b50505050905061041561040e610cbb565b3090610f4a565b6084358091106105165760015446036104425773ffffffffffffffffffffffffffffffffffffffff5f5416ff5b8061045760209284610452610cbb565b610e90565b608463ffffffff60025416915f73ffffffffffffffffffffffffffffffffffffffff610481610cbb565b169560405196879586947f6fd3504e0000000000000000000000000000000000000000000000000000000086526004860152602485015230604485015260648401525af18015610192576104d6575b80610144565b6020813d60201161050e575b816104ef60209383610df2565b810103126102bc575167ffffffffffffffff8116036102bc57806104d0565b3d91506104e2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46434354503a20696e73756666696369656e74206275726e20746f6b656e00006044820152fd5b5f5b8681106106285750505f9394508161059b602492610595879695610cde565b92610cff565b9290836040519485928337810186815203930135905af16105ba610e33565b50156105ca5780828080806103fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20737761702063616c6c206661696c65640000000000000000006044820152fd5b8061065f61064161063c6001948b87610db5565b610cde565b61064a87610cde565b6020610657858d89610db5565b013591610e90565b01610576565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc5760243567ffffffffffffffff81116102bc578036036101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159367ffffffffffffffff811680159081610cb3575b6001149081610ca9575b159081610ca0575b50610c78578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610c23575b507fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f558160040135600155602482013563ffffffff81168091036102bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600254161760025573ffffffffffffffffffffffffffffffffffffffff61082760448401610cde565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355606482013560045573ffffffffffffffffffffffffffffffffffffffff61087a60848401610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600554161760055560a48201356006557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d60c483013591018112156102bc5761093f9082016044600482019173ffffffffffffffffffffffffffffffffffffffff61090684610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075560248101356008550190610cff565b9067ffffffffffffffff8211610bf657600954600181811c91168015610bec575b6020821014610bbf57601f8111610b5c575b505f90601f8311600114610ab5576101049392915f9183610aaa575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176009555b73ffffffffffffffffffffffffffffffffffffffff6109e260e48301610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a550135600b55610a1757005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050858061098e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160095f5260205f20925f5b818110610b44575091600193918561010497969410610b0c575b505050811b016009556109c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055858080610afe565b91936020600181928787013581550195019201610ae4565b60095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c81019160208510610bb5575b601f0160051c01905b818110610baa5750610972565b5f8155600101610b9d565b9091508190610b94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610960565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558461079a565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501586610747565b303b15915061073f565b869150610735565b60643573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102bc570180359067ffffffffffffffff82116102bc576020019181360383136102bc57565b15610d5757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a206f6e6c792063726561746f72000000000000000000000000006044820152fd5b9190811015610dc55760061b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b3d15610e8b573d9067ffffffffffffffff8211610bf65760405191610e8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610df2565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff169182610eb157505050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482015290602090829060449082905f905af1801561019257610f165750565b6020813d602011610f42575b81610f2f60209383610df2565b810103126102bc5751801515036102bc57565b3d9150610f22565b73ffffffffffffffffffffffffffffffffffffffff1680610f6a57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610192575f91610fc9575090565b90506020813d602011610ff0575b81610fe460209383610df2565b810103126102bc575190565b3d9150610fd756fea26469706673582212202b9dc600da6aa545569e11ad265f1f3d827709652a2bfabb4888a70a3c2c432764736f6c634300081a0033" + }, + { + "transactionType": "CREATE", + "address": "0xb6ca45e22952cb475b87d0ed8de0c200fada1aae", + "initCode": "0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161102e90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630190f5121461066557806320976403146102c05763a5cd39ca0361000e57346102bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5773ffffffffffffffffffffffffffffffffffffffff5f5416610090813314610d50565b73ffffffffffffffffffffffffffffffffffffffff60035416906100b43083610f4a565b600454811061023857821561019d576040517fa9059cbb00000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff9490941660248301526044808301939093529181525f9190610127606482610df2565b519082855af115610192575f513d6101895750803b155b61015e57505b73ffffffffffffffffffffffffffffffffffffffff5f5416ff5b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001141561013e565b6040513d5f823e3d90fd5b5f80935080929181925af16101b0610e33565b506101445760846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4372657065546f6b656e5574696c733a20455448207472616e7366657220666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f46434354503a20696e73756666696369656e7420627269646765206d696e742060448201527f746f6b656e2072656365697665640000000000000000000000000000000000006064820152fd5b5f80fd5b346102bc5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576024359067ffffffffffffffff82116102bc57366023830112156102bc5781600401359167ffffffffffffffff83116102bc576024810190602436918560061b0101116102bc576044359067ffffffffffffffff82116102bc57816004019060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84360301126102bc5760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102bc576103e773ffffffffffffffffffffffffffffffffffffffff5f54163314610d50565b60448301906103f68284610cff565b9050610574575b50505050905061041561040e610cbb565b3090610f4a565b6084358091106105165760015446036104425773ffffffffffffffffffffffffffffffffffffffff5f5416ff5b8061045760209284610452610cbb565b610e90565b608463ffffffff60025416915f73ffffffffffffffffffffffffffffffffffffffff610481610cbb565b169560405196879586947f6fd3504e0000000000000000000000000000000000000000000000000000000086526004860152602485015230604485015260648401525af18015610192576104d6575b80610144565b6020813d60201161050e575b816104ef60209383610df2565b810103126102bc575167ffffffffffffffff8116036102bc57806104d0565b3d91506104e2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46434354503a20696e73756666696369656e74206275726e20746f6b656e00006044820152fd5b5f5b8681106106285750505f9394508161059b602492610595879695610cde565b92610cff565b9290836040519485928337810186815203930135905af16105ba610e33565b50156105ca5780828080806103fd565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f46434354503a20737761702063616c6c206661696c65640000000000000000006044820152fd5b8061065f61064161063c6001948b87610db5565b610cde565b61064a87610cde565b6020610657858d89610db5565b013591610e90565b01610576565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102bc5760243567ffffffffffffffff81116102bc578036036101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549260ff8460401c16159367ffffffffffffffff811680159081610cb3575b6001149081610ca9575b159081610ca0575b50610c78578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610c23575b507fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f558160040135600155602482013563ffffffff81168091036102bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000600254161760025573ffffffffffffffffffffffffffffffffffffffff61082760448401610cde565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355606482013560045573ffffffffffffffffffffffffffffffffffffffff61087a60848401610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600554161760055560a48201356006557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d60c483013591018112156102bc5761093f9082016044600482019173ffffffffffffffffffffffffffffffffffffffff61090684610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075560248101356008550190610cff565b9067ffffffffffffffff8211610bf657600954600181811c91168015610bec575b6020821014610bbf57601f8111610b5c575b505f90601f8311600114610ab5576101049392915f9183610aaa575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176009555b73ffffffffffffffffffffffffffffffffffffffff6109e260e48301610cde565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a550135600b55610a1757005b7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01359050858061098e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160095f5260205f20925f5b818110610b44575091600193918561010497969410610b0c575b505050811b016009556109c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055858080610afe565b91936020600181928787013581550195019201610ae4565b60095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af601f840160051c81019160208510610bb5575b601f0160051c01905b818110610baa5750610972565b5f8155600101610b9d565b9091508190610b94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610960565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00558461079a565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501586610747565b303b15915061073f565b869150610735565b60643573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102bc570180359067ffffffffffffffff82116102bc576020019181360383136102bc57565b15610d5757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46434354503a206f6e6c792063726561746f72000000000000000000000000006044820152fd5b9190811015610dc55760061b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bf657604052565b3d15610e8b573d9067ffffffffffffffff8211610bf65760405191610e8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610df2565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff169182610eb157505050565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482015290602090829060449082905f905af1801561019257610f165750565b6020813d602011610f42575b81610f2f60209383610df2565b810103126102bc5751801515036102bc57565b3d9150610f22565b73ffffffffffffffffffffffffffffffffffffffff1680610f6a57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610192575f91610fc9575090565b90506020813d602011610ff0575b81610fe460209383610df2565b810103126102bc575190565b3d9150610fd756fea26469706673582212202b9dc600da6aa545569e11ad265f1f3d827709652a2bfabb4888a70a3c2c432764736f6c634300081a0033" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1a7187", + "logs": [ + { + "address": "0xb6ca45e22952cb475b87d0ed8de0c200fada1aae", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x409fd9cd0ea8d7e4093522011ea89b74c6d0af91719be7ad8c12403dc8ce2897", + "blockNumber": "0xf62fa0", + "transactionHash": "0x65f789daafba907d9eb06631b78f6e0921d598875340e49468d4910a85374dbc", + "transactionIndex": "0x3", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000040000000000000", + "type": "0x2", + "transactionHash": "0x65f789daafba907d9eb06631b78f6e0921d598875340e49468d4910a85374dbc", + "transactionIndex": "0x3", + "blockHash": "0x409fd9cd0ea8d7e4093522011ea89b74c6d0af91719be7ad8c12403dc8ce2897", + "blockNumber": "0xf62fa0", + "gasUsed": "0x181e96", + "effectiveGasPrice": "0xf4345", + "from": "0x2a6d311394184eeb6df8fbbf58626b085374ffe7", + "to": "0x9fbb3df7c40da2e5a0de984ffe2ccb7c47cd0abf", + "contractAddress": null, + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x1009140d030d", + "l1GasPrice": "0x48e2f2e527", + "l1GasUsed": "0xc7d2" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1728036422, + "chain": 84532, + "commit": "c2679066" +} \ No newline at end of file From b1628af1ed413c78bdb7f9315b7efc85da53fbd5 Mon Sep 17 00:00:00 2001 From: DC Date: Fri, 4 Oct 2024 10:35:48 -0700 Subject: [PATCH 5/7] contract: fix PayIntent --- packages/contract/script/deployV2.sh | 14 +++++++------- packages/contract/src/pay/PayIntent.sol | 16 ++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/contract/script/deployV2.sh b/packages/contract/script/deployV2.sh index 83ca6dc03..c1bac8050 100755 --- a/packages/contract/script/deployV2.sh +++ b/packages/contract/script/deployV2.sh @@ -11,8 +11,8 @@ set -e # ETHERSCAN_API_KEY_... for each target chain SCRIPTS=( - # "script/DeployCrepeHandoffFactory.s.sol" - "script/DeployCrepeFastCCTP.s.sol" + "script/DeployCrepeHandoffFactory.s.sol" + # "script/DeployCrepeFastCCTP.s.sol" # "script/DeployFlexSwapper.s.sol" # "script/DeployCCTPBridger.s.sol" # "script/DeployAccountFactoryV2.s.sol" @@ -24,10 +24,10 @@ SCRIPTS=( ) CHAINS=( # MAINNETS - "$ETHERSCAN_API_KEY_BASE,https://base-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" - "$ETHERSCAN_API_KEY_OP,https://opt-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" - "$ETHERSCAN_API_KEY_ARB,https://arb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" - "$ETHERSCAN_API_KEY_POLYGON,https://polygon-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" + # "$ETHERSCAN_API_KEY_BASE,https://base-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" + # "$ETHERSCAN_API_KEY_OP,https://opt-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" + # "$ETHERSCAN_API_KEY_ARB,https://arb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" + # "$ETHERSCAN_API_KEY_POLYGON,https://polygon-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" # "$ETHERSCAN_API_KEY_L1,https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" # Expensive, deploy last # Not supporting Avalanche, skip. @@ -35,7 +35,7 @@ CHAINS=( # "verifyContract,https://avalanche-c-chain-rpc.publicnode.com" # TESTNETS - # "$ETHERSCAN_API_KEY_L1,wss://ethereum-sepolia-rpc.publicnode.com" + "$ETHERSCAN_API_KEY_L1,wss://ethereum-sepolia-rpc.publicnode.com" # "$ETHERSCAN_API_KEY_BASE,https://sepolia.base.org" ) diff --git a/packages/contract/src/pay/PayIntent.sol b/packages/contract/src/pay/PayIntent.sol index 5a16d9767..e7ee071a2 100644 --- a/packages/contract/src/pay/PayIntent.sol +++ b/packages/contract/src/pay/PayIntent.sol @@ -5,7 +5,7 @@ import "openzeppelin-contracts/contracts/proxy/utils/Initializable.sol"; import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; import "./TokenUtils.sol"; -import "../interfaces/IDaimoBridger.sol"; +import "../interfaces/IDaimoPayBridger.sol"; /// @dev Asset amount, eg $100 USDC or 0.1 ETH struct TokenAmount { @@ -37,14 +37,14 @@ struct PayIntent { /// (token, amount) is approved. Otherwise, it's transferred to dest.to Call finalCall; /// @dev Escrow contract for fast-finish. - address escrow; + address payable escrow; /// @dev Address to refund tokens if call fails, or zero. address refundAddress; /// @dev Nonce. PayIntent receiving addresses are one-time use. uint256 nonce; } -IDaimoBridger bridger = IDaimoBridger(address(0)); // TODO +IDaimoPayBridger constant bridger = IDaimoPayBridger(address(0)); // TODO /// @dev This is an ephemeral intent contract. Any supported tokens sent to this /// address on any supported chain are forwarded, via a combination of @@ -72,9 +72,9 @@ contract PayIntentContract is Initializable { Call[] calldata swapCalls, bytes calldata bridgeExtraData ) public { + require(keccak256(abi.encode(intent)) == intentHash, "FCCTP: intent"); require(msg.sender == intent.escrow, "FCCTP: only escrow"); require(block.chainid != intent.chainId, "FCCTP: only foreign chain"); - require(keccak256(abi.encode(intent)) == intentHash, "FCCTP: intent"); // Run arbitrary calls provided by the LP. These will generally swap if // necessary, then approve tokens to the bridger. @@ -96,14 +96,14 @@ contract PayIntentContract is Initializable { // This use of SELFDESTRUCT is compatible with EIP-6780. Ephemeral // contracts are deployed, then destroyed in the same transaction. // solhint-disable-next-line - selfdestruct(creator); + selfdestruct(intent.escrow); } /// One step: receive mintToken and send to creator function receiveAndSelfDestruct(PayIntent calldata intent) public { - require(msg.sender == creator, "FCCTP: only creator"); - require(block.chainid == intent.chainId, "FCCTP: only dest chain"); require(keccak256(abi.encode(intent)) == intentHash, "FCCTP: intent"); + require(msg.sender == intent.escrow, "FCCTP: only creator"); + require(block.chainid == intent.chainId, "FCCTP: only dest chain"); IERC20 bridgeTok = intent.bridgeToken.addr; uint256 amount = TokenUtils.getBalanceOf(bridgeTok, address(this)); @@ -122,5 +122,5 @@ contract PayIntentContract is Initializable { } /// Accept native-token (eg ETH) inputs - fallback() external payable {} + receive() external payable {} } From c47092f0069b378afbd3ba356fc5677fba09f519 Mon Sep 17 00:00:00 2001 From: DC Date: Fri, 4 Oct 2024 10:36:08 -0700 Subject: [PATCH 6/7] contract: fix PayIntent --- packages/contract/script/deployV2.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/contract/script/deployV2.sh b/packages/contract/script/deployV2.sh index c1bac8050..83ca6dc03 100755 --- a/packages/contract/script/deployV2.sh +++ b/packages/contract/script/deployV2.sh @@ -11,8 +11,8 @@ set -e # ETHERSCAN_API_KEY_... for each target chain SCRIPTS=( - "script/DeployCrepeHandoffFactory.s.sol" - # "script/DeployCrepeFastCCTP.s.sol" + # "script/DeployCrepeHandoffFactory.s.sol" + "script/DeployCrepeFastCCTP.s.sol" # "script/DeployFlexSwapper.s.sol" # "script/DeployCCTPBridger.s.sol" # "script/DeployAccountFactoryV2.s.sol" @@ -24,10 +24,10 @@ SCRIPTS=( ) CHAINS=( # MAINNETS - # "$ETHERSCAN_API_KEY_BASE,https://base-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" - # "$ETHERSCAN_API_KEY_OP,https://opt-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" - # "$ETHERSCAN_API_KEY_ARB,https://arb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" - # "$ETHERSCAN_API_KEY_POLYGON,https://polygon-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" + "$ETHERSCAN_API_KEY_BASE,https://base-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" + "$ETHERSCAN_API_KEY_OP,https://opt-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" + "$ETHERSCAN_API_KEY_ARB,https://arb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" + "$ETHERSCAN_API_KEY_POLYGON,https://polygon-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" # "$ETHERSCAN_API_KEY_L1,https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" # Expensive, deploy last # Not supporting Avalanche, skip. @@ -35,7 +35,7 @@ CHAINS=( # "verifyContract,https://avalanche-c-chain-rpc.publicnode.com" # TESTNETS - "$ETHERSCAN_API_KEY_L1,wss://ethereum-sepolia-rpc.publicnode.com" + # "$ETHERSCAN_API_KEY_L1,wss://ethereum-sepolia-rpc.publicnode.com" # "$ETHERSCAN_API_KEY_BASE,https://sepolia.base.org" ) From 3707d18e0cb233b0130c14b21095cdc5e8bba0f4 Mon Sep 17 00:00:00 2001 From: Andrew Date: Fri, 4 Oct 2024 17:10:36 -0700 Subject: [PATCH 7/7] pay contract: pay bridger implementation --- .../contract/src/DaimoPayAcrossBridger.sol | 105 ------------- .../contract/src/interfaces/IDaimoBridger.sol | 12 +- .../src/interfaces/IDaimoPayBridger.sol | 11 +- .../src/pay/DaimoPayAcrossBridger.sol | 87 +++++++++++ packages/contract/src/pay/DaimoPayBridger.sol | 96 ++++++++++++ .../contract/src/pay/DaimoPayCCTPBridger.sol | 147 ++++++++++++++++++ .../src/{ => pay}/DaimoPaymasterV2.sol | 0 packages/contract/src/pay/PayIntent.sol | 24 +-- 8 files changed, 355 insertions(+), 127 deletions(-) delete mode 100644 packages/contract/src/DaimoPayAcrossBridger.sol create mode 100644 packages/contract/src/pay/DaimoPayAcrossBridger.sol create mode 100644 packages/contract/src/pay/DaimoPayBridger.sol create mode 100644 packages/contract/src/pay/DaimoPayCCTPBridger.sol rename packages/contract/src/{ => pay}/DaimoPaymasterV2.sol (100%) diff --git a/packages/contract/src/DaimoPayAcrossBridger.sol b/packages/contract/src/DaimoPayAcrossBridger.sol deleted file mode 100644 index dbfdb40e0..000000000 --- a/packages/contract/src/DaimoPayAcrossBridger.sol +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity ^0.8.12; - -import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; -import "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; -import "openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol"; - -import "./interfaces/IDaimoPayBridger.sol"; -import "./DaimoFastCCTP.sol"; -import "../vendor/across/V3SpokePoolInterface.sol"; - -/// @title Bridger implementation for Across Protocol -/// @author The Daimo team -/// @custom:security-contact security@daimo.com -/// -/// Bridges assets from to a destination chain using Across Protocol. -contract DaimoPayAcrossBridger is - IDaimoPayBridger, - Ownable2StepUpgradeable, - UUPSUpgradeable -{ - using SafeERC20 for IERC20; - - // SpokePool contract address for this chain. - V3SpokePoolInterface public immutable spokePool; - - event BridgeInitiated( - address indexed sender, - IERC20 indexed tokenIn, - uint256 amountIn, - uint256 toChainID - ); - - constructor() { - _disableInitializers(); - } - - // ----- ADMIN FUNCTIONS ----- - - /// Initialize. Specify owner (not msg.sender) to allow CREATE3 deployment. - function init( - address _initialOwner, - V3SpokePoolInterface _spokePool - ) public initializer { - __Ownable_init(_initialOwner); - - spokePool = _spokePool; - } - - /// UUPSUpsgradeable: only allow owner to upgrade - function _authorizeUpgrade(address) internal view override onlyOwner {} - - /// UUPSUpgradeable: expose implementation - function implementation() public view returns (address) { - return ERC1967Utils.getImplementation(); - } - - // ----- PUBLIC FUNCTIONS ----- - - /// Initiates a bridge to a destination chain using Across Protocol. - function sendToChain( - IERC20 tokenIn, - uint256 amountIn, - uint256 toChainID, - bytes calldata extraData - ) public { - // Parse remaining arguments from extraData - ( - address outputToken, - uint256 outputAmount, - address exclusiveRelayer, - uint32 quoteTimestamp, - uint32 fillDeadline, - uint32 exclusivityDeadline, - bytes memory message - ) = abi.decode(extraData, (address, uint256, address, uint32, uint32, uint32, bytes)); - - // Move input token from caller to this contract and approve the - // SpokePool contract. - tokenIn.safeTransferFrom({ - from: msg.sender, - to: address(this), - value: amountIn - }); - tokenIn.forceApprove({spender: address(spokePool), value: amountIn}); - - spokePool.depositV3({ - depositor: address(this), - recipient: msg.sender, - inputToken: address(tokenIn), - outputToken: outputToken, - inputAmount: amountIn, - outputAmount: outputAmount, - destinationChainId: toChainID, - exclusiveRelayer: exclusiveRelayer, - quoteTimestamp: quoteTimestamp, - fillDeadline: fillDeadline, - exclusivityDeadline: exclusivityDeadline, - message: message - }); - - emit BridgeInitiated(msg.sender, tokenIn, amountIn, toChainID); - } -} diff --git a/packages/contract/src/interfaces/IDaimoBridger.sol b/packages/contract/src/interfaces/IDaimoBridger.sol index f5340a134..54962d8c7 100644 --- a/packages/contract/src/interfaces/IDaimoBridger.sol +++ b/packages/contract/src/interfaces/IDaimoBridger.sol @@ -1,18 +1,12 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity ^0.8.12; - import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; -/// @notice Bridges assets automatically. Specifically, it lets any market maker +/// Bridges assets automatically. Specifically, it lets any market maker /// initiate a bridge transaction to another chain. interface IDaimoBridger { - /// @dev Initiates a bridge. Guarantees that (toToken, toAmount) shows up - /// in (toAddress) on (toChainId). Otherwise, reverts. function sendToChain( + IERC20 tokenIn, + uint256 amountIn, uint256 toChainId, - address toAddress, - address toToken, - uint256 toAmount, bytes calldata extraData ) external; } diff --git a/packages/contract/src/interfaces/IDaimoPayBridger.sol b/packages/contract/src/interfaces/IDaimoPayBridger.sol index dc732f3a3..aa0675d28 100644 --- a/packages/contract/src/interfaces/IDaimoPayBridger.sol +++ b/packages/contract/src/interfaces/IDaimoPayBridger.sol @@ -6,7 +6,16 @@ import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; /// @notice Bridges assets automatically. Specifically, it lets any market maker /// initiate a bridge transaction to another chain. interface IDaimoPayBridger { - /// @dev Initiates a bridge. Guarantees that (toToken, toAmount) shows up + /// @notice Emitted when a bridge transaction is initiated + event BridgeInitiated( + address indexed sender, + uint256 indexed toChainId, + address indexed toAddress, + address toToken, + uint256 toAmount + ); + + /// @dev Initiate a bridge. Guarantees that (toToken, toAmount) shows up /// in (toAddress) on (toChainId). Otherwise, reverts. function sendToChain( uint256 toChainId, diff --git a/packages/contract/src/pay/DaimoPayAcrossBridger.sol b/packages/contract/src/pay/DaimoPayAcrossBridger.sol new file mode 100644 index 000000000..5f6e7c239 --- /dev/null +++ b/packages/contract/src/pay/DaimoPayAcrossBridger.sol @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.12; + +import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; +import "openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol"; + +import "../interfaces/IDaimoPayBridger.sol"; +import "../../vendor/across/V3SpokePoolInterface.sol"; + +/// @title Bridger implementation for Across Protocol +/// @author The Daimo team +/// @custom:security-contact security@daimo.com +/// +/// Bridges assets from to a destination chain using Across Protocol. +contract DaimoPayAcrossBridger is IDaimoPayBridger { + using SafeERC20 for IERC20; + + struct ExtraData { + address fromToken; + uint256 fromAmount; + address exclusiveRelayer; + uint32 quoteTimestamp; + uint32 fillDeadline; + uint32 exclusivityDeadline; + bytes message; + } + + // SpokePool contract address for this chain. + V3SpokePoolInterface public immutable spokePool; + + constructor(V3SpokePoolInterface _spokePool) { + spokePool = _spokePool; + } + + /// Initiate a bridge to a destination chain using Across Protocol. + function sendToChain( + uint256 toChainId, + address toAddress, + address toToken, + uint256 toAmount, + bytes calldata extraData + ) public { + require(toChainId != block.chainid, "DPAB: same chain"); + require(toAmount > 0, "DPAB: zero amount"); + + // Parse remaining arguments from extraData + ExtraData memory extra; + extra = abi.decode(extraData, (ExtraData)); + + // Move input token from caller to this contract and approve the + // SpokePool contract. + IERC20(extra.fromToken).safeTransferFrom({ + from: msg.sender, + to: address(this), + value: extra.fromAmount + }); + IERC20(extra.fromToken).forceApprove({ + spender: address(spokePool), + value: extra.fromAmount + }); + + spokePool.depositV3({ + depositor: address(this), + recipient: toAddress, + inputToken: extra.fromToken, + outputToken: toToken, + inputAmount: extra.fromAmount, + outputAmount: toAmount, + destinationChainId: toChainId, + exclusiveRelayer: extra.exclusiveRelayer, + quoteTimestamp: extra.quoteTimestamp, + fillDeadline: extra.fillDeadline, + exclusivityDeadline: extra.exclusivityDeadline, + message: extra.message + }); + + emit BridgeInitiated( + msg.sender, + toChainId, + toAddress, + toToken, + toAmount + ); + } +} diff --git a/packages/contract/src/pay/DaimoPayBridger.sol b/packages/contract/src/pay/DaimoPayBridger.sol new file mode 100644 index 000000000..5e8a72a53 --- /dev/null +++ b/packages/contract/src/pay/DaimoPayBridger.sol @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.12; + +import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; +import "openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol"; + +import "./interfaces/IDaimoPayBridger.sol"; +import "./pay/TokenUtils.sol"; + +/// @title Bridger which multiplexes between different bridging protocols +/// @author The Daimo team +/// @custom:security-contact security@daimo.com +/// +/// Bridges assets from to a supported destination chain. Multiplexes between +/// different bridging protocols by destination chain. +contract DaimoPayBridger is IDaimoPayBridger { + using SafeERC20 for IERC20; + + address public immutable owner; + + // Map chainId to the contract address of an IDaimoPayBridger implementation + mapping(uint256 chainId => IDaimoPayBridger bridger) public bridgerMapping; + + event BridgeAdded(uint256 indexed chainId, address bridger); + + /// Specify owner (not msg.sender) to allow CREATE3 deployment. + constructor(address _initialOwner) { + owner = _initialOwner; + } + + modifier onlyOwner() { + require(msg.sender == owner, "DPB: caller is not the owner"); + _; + } + + // ----- ADMIN FUNCTIONS ----- + + /// Initialize. Specify the bridger implementation to use for each chain. + function init( + uint256[] memory _chainIds, + IDaimoPayBridger[] memory _bridgers + ) public onlyOwner { + uint256 n = _chainIds.length; + require(n == _bridgers.length, "DPB: wrong bridgers length"); + + for (uint256 i = 0; i < n; ++i) { + _addBridger(_chainIds[i], _bridgers[i]); + } + } + + /// Add a new bridger for a destination chain. + function addBridger( + uint256 chainId, + IDaimoPayBridger bridger + ) public onlyOwner { + _addBridger(chainId, bridger); + } + + function _addBridger(uint256 chainId, IDaimoPayBridger bridger) private { + require(chainId != 0, "DPB: missing chainId"); + bridgerMapping[chainId] = bridger; + emit BridgeAdded(chainId, address(bridger)); + } + + // ----- PUBLIC FUNCTIONS ----- + + /// Initiate a bridge to a supported destination chain. + function sendToChain( + uint256 toChainId, + address toAddress, + address toToken, + uint256 toAmount, + bytes calldata extraData + ) public { + require(toAmount > 0, "DPB: zero amount"); + + if (toChainId == block.chainid) { + // Same chain. Transfer token to toAddress. + TokenUtils.transfer(IERC20(toToken), payable(toAddress), toAmount); + } else { + // Different chains. Bridge (via CCTP, etc) + IDaimoPayBridger bridger = bridgerMapping[toChainId]; + require(address(bridger) != address(0), "DPB: missing bridger"); + + bridger.sendToChain( + toChainId, + toAddress, + toToken, + toAmount, + extraData + ); + } + } +} diff --git a/packages/contract/src/pay/DaimoPayCCTPBridger.sol b/packages/contract/src/pay/DaimoPayCCTPBridger.sol new file mode 100644 index 000000000..ce9d9d185 --- /dev/null +++ b/packages/contract/src/pay/DaimoPayCCTPBridger.sol @@ -0,0 +1,147 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.12; + +import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; +import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import "openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; +import "openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol"; + +import "./interfaces/IDaimoPayBridger.sol"; +import "../vendor/cctp/ITokenMinter.sol"; +import "../vendor/cctp/ICCTPTokenMessenger.sol"; + +/// @title Bridger implementation for Circle's Cross-Chain Transfer Protocol (CCTP) +/// @author The Daimo team +/// @custom:security-contact security@daimo.com +/// +/// Bridges assets from to a destination chain using CCTP. The only supported +/// bridge token is USDC. +contract DaimoPayCCTPBridger is IDaimoPayBridger { + using SafeERC20 for IERC20; + + address public immutable owner; + + // CCTP TokenMinter for this chain. Used to identify the CCTP token on the + // current chain. + ITokenMinter public immutable tokenMinter; + // CCTP TokenMessenger for this chain. Used to initiate the CCTP bridge. + ICCTPTokenMessenger public immutable cctpMessenger; + + // Map chainId to CCTP domain. CCTP uses 0 as a domain. In order to use + // 0 as a not-found value, store CCTP domain + 1 in the mapping. + // 0 = not found, 1 = Ethereum, 2 = Avalanche, etc. + mapping(uint256 chainId => uint32 domain) public cctpDomainMapping; + + event DomainAdded(uint256 indexed chainId, uint32 domain); + + /// Specify owner (not msg.sender) to allow CREATE3 deployment. + constructor( + address _initialOwner, + ITokenMinter _tokenMinter, + ICCTPTokenMessenger _cctpMessenger + ) { + owner = _initialOwner; + tokenMinter = _tokenMinter; + cctpMessenger = _cctpMessenger; + } + + modifier onlyOwner() { + require(msg.sender == owner, "DPCCTPB: caller is not the owner"); + _; + } + + // ----- ADMIN FUNCTIONS ----- + + /// Initialize. Specify the CCTP chain IDs and domains that this bridger + /// will support. + function init( + uint256[] memory _cctpChainIds, + uint32[] memory _cctpDomains + ) public onlyOwner { + uint256 n = _cctpChainIds.length; + require(n == _cctpDomains.length, "DPCCTPB: wrong cctpDomains length"); + + for (uint256 i = 0; i < n; ++i) { + _addDomain(_cctpChainIds[i], _cctpDomains[i]); + } + } + + /// Add a new supported CCTP recipient chain. + function addCCTPDomain(uint256 chainId, uint32 domain) public onlyOwner { + _addDomain(chainId, domain); + } + + function _addDomain(uint256 chainId, uint32 domain) private { + require(chainId != 0, "DPCCTPB: missing chainId"); + // CCTP uses 0 as a domain. In order to use 0 as a not-found value, + // store CCTP domain + 1 in the mapping. + cctpDomainMapping[chainId] = domain + 1; + emit DomainAdded(chainId, domain); + } + + function _getDomain(uint256 chainId) internal view returns (uint32) { + uint32 domain = cctpDomainMapping[chainId]; + // The mapping stores CCTP domain + 1 and reserves 0 for not-found. + require(domain != 0, "DPCCTPB: missing domain"); + return domain - 1; + } + + function addressToBytes32(address addr) internal pure returns (bytes32) { + return bytes32(uint256(uint160(addr))); + } + + // ----- PUBLIC FUNCTIONS ----- + + /// Get the CCTP token for the current chain corresponding to the + /// destination chain's CCTP token. + function getCurrentChainCCTPToken( + uint32 toDomain, + address toToken + ) public view returns (IERC20) { + return + IERC20( + tokenMinter.getLocalToken(toDomain, addressToBytes32(toToken)) + ); + } + + /// Initiate a bridge to a destination chain using CCTP. + function sendToChain( + uint256 toChainId, + address toAddress, + address toToken, + uint256 toAmount, + bytes calldata /* extraData */ + ) public { + require(toChainId != block.chainid, "DPCCTPB: same chain"); + require(toAmount > 0, "DPCCTPB: zero amount"); + + uint32 toDomain = _getDomain(toChainId); + IERC20 fromToken = getCurrentChainCCTPToken(toDomain, toToken); + + // Move input token from caller to this contract and approve CCTP. + IERC20(fromToken).safeTransferFrom({ + from: msg.sender, + to: address(this), + value: toAmount + }); + IERC20(fromToken).forceApprove({ + spender: address(cctpMessenger), + value: toAmount + }); + + cctpMessenger.depositForBurn({ + amount: toAmount, + destinationDomain: toDomain, + mintRecipient: addressToBytes32(toAddress), + burnToken: address(fromToken) + }); + + emit BridgeInitiated( + msg.sender, + toChainId, + toAddress, + toToken, + toAmount + ); + } +} diff --git a/packages/contract/src/DaimoPaymasterV2.sol b/packages/contract/src/pay/DaimoPaymasterV2.sol similarity index 100% rename from packages/contract/src/DaimoPaymasterV2.sol rename to packages/contract/src/pay/DaimoPaymasterV2.sol diff --git a/packages/contract/src/pay/PayIntent.sol b/packages/contract/src/pay/PayIntent.sol index e7ee071a2..25789835b 100644 --- a/packages/contract/src/pay/PayIntent.sol +++ b/packages/contract/src/pay/PayIntent.sol @@ -7,9 +7,9 @@ import "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; import "./TokenUtils.sol"; import "../interfaces/IDaimoPayBridger.sol"; -/// @dev Asset amount, eg $100 USDC or 0.1 ETH +/// @dev Asset amount, e.g. $100 USDC or 0.1 ETH struct TokenAmount { - /// @dev Zero address = native asset, eg ETH + /// @dev Zero address = native asset, e.g. ETH IERC20 addr; uint256 amount; } @@ -66,25 +66,25 @@ contract PayIntentContract is Initializable { intentHash = _intentHash; } - /// Can only be called on foreign chains. Sends funds to dest chain. + /// Called on the source chain to initiate the intent. Sends funds to dest + /// chain. function sendAndSelfDestruct( PayIntent calldata intent, Call[] calldata swapCalls, bytes calldata bridgeExtraData ) public { - require(keccak256(abi.encode(intent)) == intentHash, "FCCTP: intent"); - require(msg.sender == intent.escrow, "FCCTP: only escrow"); - require(block.chainid != intent.chainId, "FCCTP: only foreign chain"); + require(keccak256(abi.encode(intent)) == intentHash, "PI: intent"); + require(msg.sender == intent.escrow, "PI: only escrow"); + require(block.chainid != intent.chainId, "PI: only foreign chain"); // Run arbitrary calls provided by the LP. These will generally swap if // necessary, then approve tokens to the bridger. for (uint256 i = 0; i < swapCalls.length; ++i) { Call calldata call = swapCalls[i]; (bool success, ) = call.to.call{value: call.value}(call.data); - require(success, "FCCTP: swap call failed"); + require(success, "PI: swap call failed"); } - // Bridge (via CCTP, etc) bridger.sendToChain({ toChainId: intent.chainId, toAddress: address(this), @@ -101,15 +101,15 @@ contract PayIntentContract is Initializable { /// One step: receive mintToken and send to creator function receiveAndSelfDestruct(PayIntent calldata intent) public { - require(keccak256(abi.encode(intent)) == intentHash, "FCCTP: intent"); - require(msg.sender == intent.escrow, "FCCTP: only creator"); - require(block.chainid == intent.chainId, "FCCTP: only dest chain"); + require(keccak256(abi.encode(intent)) == intentHash, "PI: intent"); + require(msg.sender == intent.escrow, "PI: only creator"); + require(block.chainid == intent.chainId, "PI: only dest chain"); IERC20 bridgeTok = intent.bridgeToken.addr; uint256 amount = TokenUtils.getBalanceOf(bridgeTok, address(this)); require( amount >= intent.bridgeToken.amount, - "FCCTP: insufficient bridge token received" + "PI: insufficient bridge token received" ); // Send to escrow contract, which will forward to current recipient