diff --git a/contracts/prototypes/evm/ERC20CustodyNew.sol b/contracts/prototypes/evm/ERC20CustodyNew.sol index b7019c94..ca88c764 100644 --- a/contracts/prototypes/evm/ERC20CustodyNew.sol +++ b/contracts/prototypes/evm/ERC20CustodyNew.sol @@ -8,16 +8,18 @@ import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "./IGatewayEVM.sol"; import "./IERC20CustodyNew.sol"; -// As the current version, ERC20CustodyNew hold the ERC20s deposited on ZetaChain -// This version include a functionality allowing to call a contract -// ERC20Custody doesn't call smart contract directly, it passes through the Gateway contract +/// @title ERC20CustodyNew +/// @notice Holds the ERC20 tokens deposited on ZetaChain and includes functionality to call a contract. +/// @dev This contract does not call smart contracts directly, it passes through the Gateway contract. contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, ReentrancyGuard { using SafeERC20 for IERC20; + /// @notice Gateway contract. IGatewayEVM public gateway; + /// @notice TSS address. address public tssAddress; - // @dev Only TSS address allowed modifier. + /// @notice Only TSS address allowed modifier. modifier onlyTSS() { if (msg.sender != tssAddress) { revert InvalidSender(); @@ -26,22 +28,30 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen } constructor(address _gateway, address _tssAddress) { - if (_gateway == address(0) || _tssAddress == address(0)) { + if (_gateway == address(0) || _tssAddress == address(0)) { revert ZeroAddress(); } gateway = IGatewayEVM(_gateway); tssAddress = _tssAddress; } - // Withdraw is called by TSS address, it directly transfers the tokens to the destination address without contract call + /// @notice Withdraw directly transfers the tokens to the destination address without contract call. + /// @dev This function can only be called by the TSS address. + /// @param token Address of the ERC20 token. + /// @param to Destination address for the tokens. + /// @param amount Amount of tokens to withdraw. function withdraw(address token, address to, uint256 amount) external nonReentrant onlyTSS { IERC20(token).safeTransfer(to, amount); emit Withdraw(token, to, amount); } - // WithdrawAndCall is called by TSS address, it transfers the tokens and call a contract - // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract + /// @notice WithdrawAndCall transfers tokens to Gateway and call a contract through the Gateway. + /// @dev This function can only be called by the TSS address. + /// @param token Address of the ERC20 token. + /// @param to Address of the contract to call. + /// @param amount Amount of tokens to withdraw. + /// @param data Calldata to pass to the contract call. function withdrawAndCall(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); @@ -52,8 +62,12 @@ contract ERC20CustodyNew is IERC20CustodyNewEvents, IERC20CustodyNewErrors, Reen emit WithdrawAndCall(token, to, amount, data); } - // WithdrawAndRevert is called by TSS address, it transfers the tokens and call a contract - // For this, it passes through the Gateway contract, it transfers the tokens to the Gateway contract and then calls the contract + /// @notice WithdrawAndRevert transfers tokens to Gateway and call a contract with a revert functionality through the Gateway. + /// @dev This function can only be called by the TSS address. + /// @param token Address of the ERC20 token. + /// @param to Address of the contract to call. + /// @param amount Amount of tokens to withdraw. + /// @param data Calldata to pass to the contract call. function withdrawAndRevert(address token, address to, uint256 amount, bytes calldata data) public nonReentrant onlyTSS { // Transfer the tokens to the Gateway contract IERC20(token).safeTransfer(address(gateway), amount); diff --git a/contracts/prototypes/evm/GatewayEVM.sol b/contracts/prototypes/evm/GatewayEVM.sol index 85301914..73201482 100644 --- a/contracts/prototypes/evm/GatewayEVM.sol +++ b/contracts/prototypes/evm/GatewayEVM.sol @@ -7,14 +7,13 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; + import "./IGatewayEVM.sol"; import "./ZetaConnectorNewBase.sol"; -/** - * @title GatewayEVM - * @notice The GatewayEVM contract is the endpoint to call smart contracts on external chains. - * @dev The contract doesn't hold any funds and should never have active allowances. - */ +/// @title GatewayEVM +/// @notice The GatewayEVM contract is the endpoint to call smart contracts on external chains. +/// @dev The contract doesn't hold any funds and should never have active allowances. contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable { using SafeERC20 for IERC20; @@ -27,7 +26,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate /// @notice The address of the Zeta token contract. address public zetaToken; - // @dev Only TSS address allowed modifier. + /// @notice Only TSS address allowed modifier. modifier onlyTSS() { if (msg.sender != tssAddress) { revert InvalidSender(); @@ -35,7 +34,7 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate _; } - // @dev Only asset handler (custody, connector) allowed modifier. + /// @notice Only custody or connector address allowed modifier. modifier onlyAssetHandler() { if (msg.sender != custody && msg.sender != zetaConnector) { revert InvalidSender(); @@ -61,8 +60,14 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate zetaToken = _zetaToken; } + /// @dev Authorizes the upgrade of the contract, sender must be owner. + /// @param newImplementation Address of the new implementation. function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + /// @dev Internal function to execute a call to a destination address. + /// @param destination Address to call. + /// @param data Calldata to pass to the call. + /// @return The result of the call. function _execute(address destination, bytes calldata data) internal returns (bytes memory) { (bool success, bytes memory result) = destination.call{value: msg.value}(data); if (!success) revert ExecutionFailed(); @@ -70,8 +75,10 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate return result; } - // Called by the TSS - // Calling onRevert directly + /// @notice Transfers msg.value to destination contract and executes it's onRevert function. + /// @dev This function can only be called by the TSS address and it is payable. + /// @param destination Address to call. + /// @param data Calldata to pass to the call. function executeRevert(address destination, bytes calldata data) public payable onlyTSS { (bool success, bytes memory result) = destination.call{value: msg.value}(""); if (!success) revert ExecutionFailed(); @@ -80,9 +87,11 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate emit Reverted(destination, msg.value, data); } - // Called by the TSS - // Execution without ERC20 tokens, it is payable and can be used in the case of WithdrawAndCall for Gas ZRC20 - // It can be also used for contract call without asset movement + /// @notice Executes a call to a destination address without ERC20 tokens. + /// @dev This function can only be called by the TSS address and it is payable. + /// @param destination Address to call. + /// @param data Calldata to pass to the call. + /// @return The result of the call. function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { bytes memory result = _execute(destination, data); @@ -91,10 +100,13 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate return result; } - // Called by the ERC20Custody contract - // It call a function using ERC20 transfer - // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance system - // It provides allowance to destination contract and call destination contract. In the end, it remove remaining allowance and transfer remaining tokens back to the custody contract for security purposes + /// @notice Executes a call to a destination contract using ERC20 tokens. + /// @dev This function can only be called by the custody or connector address. + /// It uses the ERC20 allowance system, resetting gateway allowance at the end. + /// @param token Address of the ERC20 token. + /// @param to Address of the contract to call. + /// @param amount Amount of tokens to transfer. + /// @param data Calldata to pass to the call. function executeWithERC20( address token, address to, @@ -120,8 +132,12 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate emit ExecutedWithERC20(token, to, amount, data); } - // Called by the ERC20Custody contract - // Directly transfers ERC20 and calls onRevert + /// @notice Directly transfers ERC20 tokens and calls onRevert. + /// @dev This function can only be called by the custody or connector address. + /// @param token Address of the ERC20 token. + /// @param to Address of the contract to call. + /// @param amount Amount of tokens to transfer. + /// @param data Calldata to pass to the call. function revertWithERC20( address token, address to, @@ -136,7 +152,8 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate emit RevertedWithERC20(token, to, amount, data); } - // Deposit ETH to tss + /// @notice Deposits ETH to the TSS address. + /// @param receiver Address of the receiver. function deposit(address receiver) external payable { if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited, ) = tssAddress.call{value: msg.value}(""); @@ -146,7 +163,10 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate emit Deposit(msg.sender, receiver, msg.value, address(0), ""); } - // Deposit ERC20 tokens to custody/connector + /// @notice Deposits ERC20 tokens to the custody or connector contract. + /// @param receiver Address of the receiver. + /// @param amount Amount of tokens to deposit. + /// @param asset Address of the ERC20 token. function deposit(address receiver, uint256 amount, address asset) external { if (amount == 0) revert InsufficientERC20Amount(); @@ -155,7 +175,9 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate emit Deposit(msg.sender, receiver, amount, asset, ""); } - // Deposit ETH to tss and call an omnichain smart contract + /// @notice Deposits ETH to the TSS address and calls an omnichain smart contract. + /// @param receiver Address of the receiver. + /// @param payload Calldata to pass to the call. function depositAndCall(address receiver, bytes calldata payload) external payable { if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited, ) = tssAddress.call{value: msg.value}(""); @@ -165,7 +187,11 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate emit Deposit(msg.sender, receiver, msg.value, address(0), payload); } - // Deposit ERC20 tokens to custody/connector and call an omnichain smart contract + /// @notice Deposits ERC20 tokens to the custody or connector contract and calls an omnichain smart contract. + /// @param receiver Address of the receiver. + /// @param amount Amount of tokens to deposit. + /// @param asset Address of the ERC20 token. + /// @param payload Calldata to pass to the call. function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external { if (amount == 0) revert InsufficientERC20Amount(); @@ -174,11 +200,15 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate emit Deposit(msg.sender, receiver, amount, asset, payload); } - // Call an omnichain smart contract without asset transfer + /// @notice Calls an omnichain smart contract without asset transfer. + /// @param receiver Address of the receiver. + /// @param payload Calldata to pass to the call. function call(address receiver, bytes calldata payload) external { emit Call(msg.sender, receiver, payload); } + /// @notice Sets the custody contract address. + /// @param _custody Address of the custody contract. function setCustody(address _custody) external onlyTSS { if (custody != address(0)) revert CustodyInitialized(); if (_custody == address(0)) revert ZeroAddress(); @@ -186,17 +216,29 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate custody = _custody; } - function setConnector(address _zetaConnector) external onlyTSS { + /// @notice Sets the connector contract address. + /// @param _zetaConnector Address of the connector contract. + function setConnector(address _zetaConnector) external onlyTSS { if (zetaConnector != address(0)) revert CustodyInitialized(); if (_zetaConnector == address(0)) revert ZeroAddress(); zetaConnector = _zetaConnector; } + /// @dev Resets the approval of a token for a specified address. + /// This is used to ensure that the approval is set to zero before setting it to a new value. + /// @param token Address of the ERC20 token. + /// @param to Address to reset the approval for. + /// @return True if the approval reset was successful, false otherwise. function resetApproval(address token, address to) private returns (bool) { return IERC20(token).approve(to, 0); } + /// @dev Transfers tokens from the sender to the asset handler. + /// This function handles the transfer of tokens to either the connector or custody contract based on the asset type. + /// @param from Address of the sender. + /// @param token Address of the ERC20 token. + /// @param amount Amount of tokens to transfer. function transferFromToAssetHandler(address from, address token, uint256 amount) private { if (token == zetaToken) { // transfer to connector // transfer amount to gateway @@ -210,6 +252,10 @@ contract GatewayEVM is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGate } } + /// @dev Transfers tokens to the asset handler. + /// This function handles the transfer of tokens to either the connector or custody contract based on the asset type. + /// @param token Address of the ERC20 token. + /// @param amount Amount of tokens to transfer. function transferToAssetHandler(address token, uint256 amount) private { if (token == zetaToken) { // transfer to connector // approve connector to handle tokens depending on connector version (eg. lock or burn) diff --git a/contracts/prototypes/evm/GatewayEVMUpgradeTest.sol b/contracts/prototypes/evm/GatewayEVMUpgradeTest.sol index e94a09b2..501694a4 100644 --- a/contracts/prototypes/evm/GatewayEVMUpgradeTest.sol +++ b/contracts/prototypes/evm/GatewayEVMUpgradeTest.sol @@ -7,19 +7,19 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; + import "./IGatewayEVM.sol"; import "./ZetaConnectorNewBase.sol"; -// NOTE: Purpose of this contract is to test upgrade process, the only difference should be name of Executed event -// The Gateway contract is the endpoint to call smart contracts on external chains -// The contract doesn't hold any funds and should never have active allowances +/// @title GatewayEVMUpgradeTest +/// @notice Modified GatewayEVM contract for testing upgrades +/// @dev The only difference is in event naming /// @custom:oz-upgrades-from GatewayEVM contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgradeable, IGatewayEVMErrors, IGatewayEVMEvents, ReentrancyGuardUpgradeable { using SafeERC20 for IERC20; /// @notice The address of the custody contract. address public custody; - /// @notice The address of the TSS (Threshold Signature Scheme) contract. address public tssAddress; /// @notice The address of the ZetaConnector contract. @@ -27,15 +27,33 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade /// @notice The address of the Zeta token contract. address public zetaToken; + /// @dev Modified event for testing upgrade. event ExecutedV2(address indexed destination, uint256 value, bytes data); - constructor() {} + + /// @notice Only TSS address allowed modifier. + modifier onlyTSS() { + if (msg.sender != tssAddress) { + revert InvalidSender(); + } + _; + } + + /// @notice Only custody or connector address allowed modifier. + modifier onlyCustodyOrConnector() { + if (msg.sender != custody && msg.sender != zetaConnector) { + revert InvalidSender(); + } + _; + } + + constructor() { } function initialize(address _tssAddress, address _zetaToken) public initializer { if (_tssAddress == address(0) || _zetaToken == address(0)) { revert ZeroAddress(); } - + __Ownable_init(); __UUPSUpgradeable_init(); __ReentrancyGuard_init(); @@ -44,8 +62,14 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade zetaToken = _zetaToken; } + /// @dev Authorizes the upgrade of the contract, sender must be owner. + /// @param newImplementation Address of the new implementation. function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} + /// @dev Internal function to execute a call to a destination address. + /// @param destination Address to call. + /// @param data Calldata to pass to the call. + /// @return The result of the call. function _execute(address destination, bytes calldata data) internal returns (bytes memory) { (bool success, bytes memory result) = destination.call{value: msg.value}(data); if (!success) revert ExecutionFailed(); @@ -53,9 +77,11 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade return result; } - // Called by the TSS - // Calling onRevert directly - function executeRevert(address destination, bytes calldata data) public payable { + /// @notice Transfers msg.value to destination contract and executes it's onRevert function. + /// @dev This function can only be called by the TSS address and it is payable. + /// @param destination Address to call. + /// @param data Calldata to pass to the call. + function executeRevert(address destination, bytes calldata data) public payable onlyTSS { (bool success, bytes memory result) = destination.call{value: msg.value}(""); if (!success) revert ExecutionFailed(); Revertable(destination).onRevert(data); @@ -63,10 +89,12 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade emit Reverted(destination, msg.value, data); } - // Called by the TSS - // Execution without ERC20 tokens, it is payable and can be used in the case of WithdrawAndCall for Gas ZRC20 - // It can be also used for contract call without asset movement - function execute(address destination, bytes calldata data) external payable returns (bytes memory) { + /// @notice Executes a call to a destination address without ERC20 tokens. + /// @dev This function can only be called by the TSS address and it is payable. + /// @param destination Address to call. + /// @param data Calldata to pass to the call. + /// @return The result of the call. + function execute(address destination, bytes calldata data) external payable onlyTSS returns (bytes memory) { bytes memory result = _execute(destination, data); emit ExecutedV2(destination, msg.value, data); @@ -74,21 +102,23 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade return result; } - // Called by the ERC20Custody contract - // It call a function using ERC20 transfer - // Since the goal is to allow calling contract not designed for ZetaChain specifically, it uses ERC20 allowance system - // It provides allowance to destination contract and call destination contract. In the end, it remove remaining allowance and transfer remaining tokens back to the custody contract for security purposes + /// @notice Executes a call to a destination contract using ERC20 tokens. + /// @dev This function can only be called by the custody or connector address. + /// It uses the ERC20 allowance system, resetting gateway allowance at the end. + /// @param token Address of the ERC20 token. + /// @param to Address of the contract to call. + /// @param amount Amount of tokens to transfer. + /// @param data Calldata to pass to the call. function executeWithERC20( address token, address to, uint256 amount, bytes calldata data - ) public nonReentrant { - if (amount == 0) revert InsufficientETHAmount(); + ) public nonReentrant onlyCustodyOrConnector { + if (amount == 0) revert InsufficientERC20Amount(); // Approve the target contract to spend the tokens if(!resetApproval(token, to)) revert ApprovalFailed(); if(!IERC20(token).approve(to, amount)) revert ApprovalFailed(); - // Execute the call on the target contract bytes memory result = _execute(to, data); @@ -98,20 +128,24 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade // Transfer any remaining tokens back to the custody/connector contract uint256 remainingBalance = IERC20(token).balanceOf(address(this)); if (remainingBalance > 0) { - transferToAssetHandler(token, amount); + transferToAssetHandler(token, remainingBalance); } emit ExecutedWithERC20(token, to, amount, data); } - // Called by the ERC20Custody contract - // Directly transfers ERC20 and calls onRevert + /// @notice Directly transfers ERC20 tokens and calls onRevert. + /// @dev This function can only be called by the custody or connector address. + /// @param token Address of the ERC20 token. + /// @param to Address of the contract to call. + /// @param amount Amount of tokens to transfer. + /// @param data Calldata to pass to the call. function revertWithERC20( address token, address to, uint256 amount, bytes calldata data - ) external nonReentrant { + ) external nonReentrant onlyCustodyOrConnector { if (amount == 0) revert InsufficientERC20Amount(); IERC20(token).safeTransfer(address(to), amount); @@ -120,7 +154,8 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade emit RevertedWithERC20(token, to, amount, data); } - // Deposit ETH to tss + /// @notice Deposits ETH to the TSS address. + /// @param receiver Address of the receiver. function deposit(address receiver) external payable { if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited, ) = tssAddress.call{value: msg.value}(""); @@ -130,7 +165,10 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade emit Deposit(msg.sender, receiver, msg.value, address(0), ""); } - // Deposit ERC20 tokens to custody/connector + /// @notice Deposits ERC20 tokens to the custody or connector contract. + /// @param receiver Address of the receiver. + /// @param amount Amount of tokens to deposit. + /// @param asset Address of the ERC20 token. function deposit(address receiver, uint256 amount, address asset) external { if (amount == 0) revert InsufficientERC20Amount(); @@ -139,7 +177,9 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade emit Deposit(msg.sender, receiver, amount, asset, ""); } - // Deposit ETH to tss and call an omnichain smart contract + /// @notice Deposits ETH to the TSS address and calls an omnichain smart contract. + /// @param receiver Address of the receiver. + /// @param payload Calldata to pass to the call. function depositAndCall(address receiver, bytes calldata payload) external payable { if (msg.value == 0) revert InsufficientETHAmount(); (bool deposited, ) = tssAddress.call{value: msg.value}(""); @@ -149,7 +189,11 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade emit Deposit(msg.sender, receiver, msg.value, address(0), payload); } - // Deposit ERC20 tokens to custody/connector and call an omnichain smart contract + /// @notice Deposits ERC20 tokens to the custody or connector contract and calls an omnichain smart contract. + /// @param receiver Address of the receiver. + /// @param amount Amount of tokens to deposit. + /// @param asset Address of the ERC20 token. + /// @param payload Calldata to pass to the call. function depositAndCall(address receiver, uint256 amount, address asset, bytes calldata payload) external { if (amount == 0) revert InsufficientERC20Amount(); @@ -158,11 +202,15 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade emit Deposit(msg.sender, receiver, amount, asset, payload); } - // Call an omnichain smart contract without asset transfer + /// @notice Calls an omnichain smart contract without asset transfer. + /// @param receiver Address of the receiver. + /// @param payload Calldata to pass to the call. function call(address receiver, bytes calldata payload) external { emit Call(msg.sender, receiver, payload); } + /// @notice Sets the custody contract address. + /// @param _custody Address of the custody contract. function setCustody(address _custody) external { if (custody != address(0)) revert CustodyInitialized(); if (_custody == address(0)) revert ZeroAddress(); @@ -170,17 +218,29 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade custody = _custody; } - function setConnector(address _zetaConnector) external { + /// @notice Sets the connector contract address. + /// @param _zetaConnector Address of the connector contract. + function setConnector(address _zetaConnector) external { if (zetaConnector != address(0)) revert CustodyInitialized(); if (_zetaConnector == address(0)) revert ZeroAddress(); zetaConnector = _zetaConnector; } + /// @dev Resets the approval of a token for a specified address. + /// This is used to ensure that the approval is set to zero before setting it to a new value. + /// @param token Address of the ERC20 token. + /// @param to Address to reset the approval for. + /// @return True if the approval reset was successful, false otherwise. function resetApproval(address token, address to) private returns (bool) { return IERC20(token).approve(to, 0); } + /// @dev Transfers tokens from the sender to the asset handler. + /// This function handles the transfer of tokens to either the connector or custody contract based on the asset type. + /// @param from Address of the sender. + /// @param token Address of the ERC20 token. + /// @param amount Amount of tokens to transfer. function transferFromToAssetHandler(address from, address token, uint256 amount) private { if (token == zetaToken) { // transfer to connector // transfer amount to gateway @@ -194,6 +254,10 @@ contract GatewayEVMUpgradeTest is Initializable, OwnableUpgradeable, UUPSUpgrade } } + /// @dev Transfers tokens to the asset handler. + /// This function handles the transfer of tokens to either the connector or custody contract based on the asset type. + /// @param token Address of the ERC20 token. + /// @param amount Amount of tokens to transfer. function transferToAssetHandler(address token, uint256 amount) private { if (token == zetaToken) { // transfer to connector // approve connector to handle tokens depending on connector version (eg. lock or burn) diff --git a/contracts/prototypes/evm/IERC20CustodyNew.sol b/contracts/prototypes/evm/IERC20CustodyNew.sol index a07db920..add4b3cf 100644 --- a/contracts/prototypes/evm/IERC20CustodyNew.sol +++ b/contracts/prototypes/evm/IERC20CustodyNew.sol @@ -1,13 +1,36 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; +/// @title IERC20CustodyNewEvents +/// @notice Interface for the events emitted by the ERC20 custody contract. interface IERC20CustodyNewEvents { + /// @notice Emitted when tokens are withdrawn. + /// @param token The address of the ERC20 token. + /// @param to The address receiving the tokens. + /// @param amount The amount of tokens withdrawn. event Withdraw(address indexed token, address indexed to, uint256 amount); + + /// @notice Emitted when tokens are withdrawn and a contract call is made. + /// @param token The address of the ERC20 token. + /// @param to The address receiving the tokens. + /// @param amount The amount of tokens withdrawn. + /// @param data The calldata passed to the contract call. event WithdrawAndCall(address indexed token, address indexed to, uint256 amount, bytes data); + + /// @notice Emitted when tokens are withdrawn and a revertable contract call is made. + /// @param token The address of the ERC20 token. + /// @param to The address receiving the tokens. + /// @param amount The amount of tokens withdrawn. + /// @param data The calldata passed to the contract call. event WithdrawAndRevert(address indexed token, address indexed to, uint256 amount, bytes data); } +/// @title IERC20CustodyNewErrors +/// @notice Interface for the errors used in the ERC20 custody contract. interface IERC20CustodyNewErrors { + /// @notice Error for zero address input. error ZeroAddress(); + + /// @notice Error for invalid sender. error InvalidSender(); } \ No newline at end of file diff --git a/contracts/prototypes/evm/IGatewayEVM.sol b/contracts/prototypes/evm/IGatewayEVM.sol index ae81b687..419049f3 100644 --- a/contracts/prototypes/evm/IGatewayEVM.sol +++ b/contracts/prototypes/evm/IGatewayEVM.sol @@ -1,27 +1,86 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; +/// @title IGatewayEVMEvents +/// @notice Interface for the events emitted by the GatewayEVM contract. interface IGatewayEVMEvents { + /// @notice Emitted when a contract call is executed. + /// @param destination The address of the contract called. + /// @param value The amount of ETH sent with the call. + /// @param data The calldata passed to the contract call. event Executed(address indexed destination, uint256 value, bytes data); + + /// @notice Emitted when a contract call is reverted. + /// @param destination The address of the contract called. + /// @param value The amount of ETH sent with the call. + /// @param data The calldata passed to the contract call. event Reverted(address indexed destination, uint256 value, bytes data); + + /// @notice Emitted when a contract call with ERC20 tokens is executed. + /// @param token The address of the ERC20 token. + /// @param to The address of the contract called. + /// @param amount The amount of tokens transferred. + /// @param data The calldata passed to the contract call. event ExecutedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data); + + /// @notice Emitted when a contract call with ERC20 tokens is reverted. + /// @param token The address of the ERC20 token. + /// @param to The address of the contract called. + /// @param amount The amount of tokens transferred. + /// @param data The calldata passed to the contract call. event RevertedWithERC20(address indexed token, address indexed to, uint256 amount, bytes data); + + /// @notice Emitted when a deposit is made. + /// @param sender The address of the sender. + /// @param receiver The address of the receiver. + /// @param amount The amount of ETH or tokens deposited. + /// @param asset The address of the ERC20 token (zero address if ETH). + /// @param payload The calldata passed with the deposit. event Deposit(address indexed sender, address indexed receiver, uint256 amount, address asset, bytes payload); + + /// @notice Emitted when an omnichain smart contract call is made without asset transfer. + /// @param sender The address of the sender. + /// @param receiver The address of the receiver. + /// @param payload The calldata passed to the call. event Call(address indexed sender, address indexed receiver, bytes payload); } +/// @title IGatewayEVMErrors +/// @notice Interface for the errors used in the GatewayEVM contract. interface IGatewayEVMErrors { + /// @notice Error for failed execution. error ExecutionFailed(); + + /// @notice Error for failed deposit. error DepositFailed(); + + /// @notice Error for insufficient ETH amount. error InsufficientETHAmount(); + + /// @notice Error for insufficient ERC20 token amount. error InsufficientERC20Amount(); + + /// @notice Error for zero address input. error ZeroAddress(); + + /// @notice Error for failed token approval. error ApprovalFailed(); + + /// @notice Error for already initialized custody. error CustodyInitialized(); + + /// @notice Error for invalid sender. error InvalidSender(); } +/// @title IGatewayEVM +/// @notice Interface for the GatewayEVM contract. interface IGatewayEVM { + /// @notice Executes a call to a contract using ERC20 tokens. + /// @param token The address of the ERC20 token. + /// @param to The address of the contract to call. + /// @param amount The amount of tokens to transfer. + /// @param data The calldata to pass to the contract call. function executeWithERC20( address token, address to, @@ -29,8 +88,17 @@ interface IGatewayEVM { bytes calldata data ) external; + /// @notice Executes a call to a contract. + /// @param destination The address of the contract to call. + /// @param data The calldata to pass to the contract call. + /// @return The result of the contract call. function execute(address destination, bytes calldata data) external payable returns (bytes memory); + /// @notice Executes a revertable call to a contract using ERC20 tokens. + /// @param token The address of the ERC20 token. + /// @param to The address of the contract to call. + /// @param amount The amount of tokens to transfer. + /// @param data The calldata to pass to the contract call. function revertWithERC20( address token, address to, @@ -39,6 +107,10 @@ interface IGatewayEVM { ) external; } +/// @title Revertable +/// @notice Interface for contracts that support revertable calls. interface Revertable { + /// @notice Called when a revertable call is made. + /// @param data The calldata to pass to the revertable call. function onRevert(bytes calldata data) external; } diff --git a/contracts/prototypes/evm/IReceiverEVM.sol b/contracts/prototypes/evm/IReceiverEVM.sol index d604a026..38d99062 100644 --- a/contracts/prototypes/evm/IReceiverEVM.sol +++ b/contracts/prototypes/evm/IReceiverEVM.sol @@ -1,10 +1,37 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; +/// @title IReceiverEVMEvents +/// @notice Interface for the events emitted by the ReceiverEVM contract. interface IReceiverEVMEvents { + /// @notice Emitted when a payable function is called. + /// @param sender The address of the sender. + /// @param value The amount of ETH sent with the call. + /// @param str A string parameter. + /// @param num A numeric parameter. + /// @param flag A boolean parameter. event ReceivedPayable(address sender, uint256 value, string str, uint256 num, bool flag); + + /// @notice Emitted when a non-payable function is called. + /// @param sender The address of the sender. + /// @param strs An array of string parameters. + /// @param nums An array of numeric parameters. + /// @param flag A boolean parameter. event ReceivedNonPayable(address sender, string[] strs, uint256[] nums, bool flag); + + /// @notice Emitted when ERC20 tokens are received. + /// @param sender The address of the sender. + /// @param amount The amount of ERC20 tokens received. + /// @param token The address of the ERC20 token. + /// @param destination The address to which the tokens are sent. event ReceivedERC20(address sender, uint256 amount, address token, address destination); + + /// @notice Emitted when a function without parameters is called. + /// @param sender The address of the sender. event ReceivedNoParams(address sender); + + /// @notice Emitted when a revert callback function is called. + /// @param sender The address of the sender. + /// @param data The calldata passed during the revert. event ReceivedRevert(address sender, bytes data); } diff --git a/contracts/prototypes/evm/IZetaConnector.sol b/contracts/prototypes/evm/IZetaConnector.sol index 40e49ffc..9a3acf30 100644 --- a/contracts/prototypes/evm/IZetaConnector.sol +++ b/contracts/prototypes/evm/IZetaConnector.sol @@ -1,8 +1,23 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; +/// @title IZetaConnectorEvents +/// @notice Interface for the events emitted by the ZetaConnector contracts. interface IZetaConnectorEvents { + /// @notice Emitted when tokens are withdrawn. + /// @param to The address to which the tokens are withdrawn. + /// @param amount The amount of tokens withdrawn. event Withdraw(address indexed to, uint256 amount); + + /// @notice Emitted when tokens are withdrawn and a contract is called. + /// @param to The address to which the tokens are withdrawn. + /// @param amount The amount of tokens withdrawn. + /// @param data The calldata passed to the contract call. event WithdrawAndCall(address indexed to, uint256 amount, bytes data); + + /// @notice Emitted when tokens are withdrawn and a contract is called with a revert callback. + /// @param to The address to which the tokens are withdrawn. + /// @param amount The amount of tokens withdrawn. + /// @param data The calldata passed to the contract call. event WithdrawAndRevert(address indexed to, uint256 amount, bytes data); -} \ No newline at end of file +} diff --git a/contracts/prototypes/evm/IZetaNonEthNew.sol b/contracts/prototypes/evm/IZetaNonEthNew.sol index 5f0b1dd8..3c3a5375 100644 --- a/contracts/prototypes/evm/IZetaNonEthNew.sol +++ b/contracts/prototypes/evm/IZetaNonEthNew.sol @@ -1,13 +1,21 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.7; +pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -/** - * @dev IZetaNonEthNew is a mintable / burnable version of IERC20 - */ +/// @title IZetaNonEthNew +/// @notice IZetaNonEthNew is a mintable / burnable version of IERC20. interface IZetaNonEthNew is IERC20 { + /// @notice Burns the specified amount of tokens from the specified account. + /// @param account The address of the account from which tokens will be burned. + /// @param amount The amount of tokens to burn. + /// @dev Emits a {Transfer} event with `to` set to the zero address. function burnFrom(address account, uint256 amount) external; + /// @notice Mints the specified amount of tokens to the specified account. + /// @param mintee The address of the account to which tokens will be minted. + /// @param value The amount of tokens to mint. + /// @param internalSendHash A hash used for internal tracking of the minting transaction. + /// @dev Emits a {Transfer} event with `from` set to the zero address. function mint(address mintee, uint256 value, bytes32 internalSendHash) external; } \ No newline at end of file diff --git a/contracts/prototypes/evm/ReceiverEVM.sol b/contracts/prototypes/evm/ReceiverEVM.sol index c3887d97..f46c9d3a 100644 --- a/contracts/prototypes/evm/ReceiverEVM.sol +++ b/contracts/prototypes/evm/ReceiverEVM.sol @@ -6,30 +6,49 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "./IReceiverEVM.sol"; -// @notice This contract is used just for testing +/// @title ReceiverEVM +/// @notice This contract is used just for testing purposes. +/// @dev Implements various functions to receive ETH and ERC20 tokens, and emit corresponding events. contract ReceiverEVM is IReceiverEVMEvents, ReentrancyGuard { using SafeERC20 for IERC20; + + /// @notice Error indicating that the amount is zero. error ZeroAmount(); - // Payable function + /// @notice Receives ETH with additional data. + /// @param str A string parameter. + /// @param num A numeric parameter. + /// @param flag A boolean parameter. + /// @dev Emits the ReceivedPayable event. function receivePayable(string memory str, uint256 num, bool flag) external payable { emit ReceivedPayable(msg.sender, msg.value, str, num, flag); } - // Non-payable function + /// @notice Receives data without transferring ETH. + /// @param strs An array of string parameters. + /// @param nums An array of numeric parameters. + /// @param flag A boolean parameter. + /// @dev Emits the ReceivedNonPayable event. function receiveNonPayable(string[] memory strs, uint256[] memory nums, bool flag) external { emit ReceivedNonPayable(msg.sender, strs, nums, flag); } - // Function using IERC20 + /// @notice Receives ERC20 tokens and transfers them to a destination address. + /// @param amount The amount of tokens to transfer. + /// @param token The address of the ERC20 token. + /// @param destination The address to send the tokens to. + /// @dev Emits the ReceivedERC20 event. function receiveERC20(uint256 amount, address token, address destination) external nonReentrant { - // Transfer tokens from the Gateway contract to the destination address IERC20(token).safeTransferFrom(msg.sender, destination, amount); emit ReceivedERC20(msg.sender, amount, token, destination); } - // Function using IERC20 to partially transfer tokens + /// @notice Receives ERC20 tokens and transfers half of them to a destination address. + /// @param amount The amount of tokens to transfer. + /// @param token The address of the ERC20 token. + /// @param destination The address to send the tokens to. + /// @dev Emits the ReceivedERC20 event. Reverts if the amount to send is zero. function receiveERC20Partial(uint256 amount, address token, address destination) external nonReentrant { uint256 amountToSend = amount / 2; if (amountToSend == 0) revert ZeroAmount(); @@ -39,16 +58,22 @@ contract ReceiverEVM is IReceiverEVMEvents, ReentrancyGuard { emit ReceivedERC20(msg.sender, amountToSend, token, destination); } - // Function without parameters + /// @notice Receives a call without any parameters. + /// @dev Emits the ReceivedNoParams event. function receiveNoParams() external { emit ReceivedNoParams(msg.sender); } - // onRevertCallback + /// @notice Called when a revert occurs. + /// @param data The calldata passed during the revert. + /// @dev Emits the ReceivedRevert event. function onRevert(bytes calldata data) external { emit ReceivedRevert(msg.sender, data); } + /// @notice Receives ETH. receive() external payable {} + + /// @notice Fallback function to receive ETH. fallback() external payable {} -} \ No newline at end of file +} diff --git a/contracts/prototypes/evm/TestERC20.sol b/contracts/prototypes/evm/TestERC20.sol index 82702031..cf433213 100644 --- a/contracts/prototypes/evm/TestERC20.sol +++ b/contracts/prototypes/evm/TestERC20.sol @@ -3,11 +3,17 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -// @notice This contract is used just for testing +/// @title TestERC20 +/// @notice This contract is used just for testing. +/// @dev A simple ERC20 token contract with a mint function. contract TestERC20 is ERC20 { constructor(string memory name, string memory symbol) ERC20(name, symbol) {} + /// @notice Mints new tokens to the specified address. + /// @param to The address to which the tokens will be minted. + /// @param amount The amount of tokens to mint. + /// @dev This function can be called by anyone for testing purposes. function mint(address to, uint256 amount) external { _mint(to, amount); } -} \ No newline at end of file +} diff --git a/contracts/prototypes/evm/ZetaConnectorNative.sol b/contracts/prototypes/evm/ZetaConnectorNative.sol index d3fce429..2e49b75b 100644 --- a/contracts/prototypes/evm/ZetaConnectorNative.sol +++ b/contracts/prototypes/evm/ZetaConnectorNative.sol @@ -5,6 +5,9 @@ import "./ZetaConnectorNewBase.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +/// @title ZetaConnectorNative +/// @notice Implementation of ZetaConnectorNewBase for native token handling. +/// @dev This contract directly transfers Zeta tokens and interacts with the Gateway contract. contract ZetaConnectorNative is ZetaConnectorNewBase { using SafeERC20 for IERC20; @@ -12,13 +15,22 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) {} - // @dev withdraw is called by TSS address, it directly transfers zetaToken to the destination address without contract call + /// @notice Withdraw tokens to a specified address. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param internalSendHash A hash used for internal tracking of the transaction. + /// @dev This function can only be called by the TSS address. function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { IERC20(zetaToken).safeTransfer(to, amount); emit Withdraw(to, amount); } - // @dev withdrawAndCall is called by TSS address, it transfers zetaToken to the gateway and calls a contract + /// @notice Withdraw tokens and call a contract through Gateway. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param data The calldata to pass to the contract call. + /// @param internalSendHash A hash used for internal tracking of the transaction. + /// @dev This function can only be called by the TSS address. function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); @@ -29,7 +41,12 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { emit WithdrawAndCall(to, amount, data); } - // @dev withdrawAndRevert is called by TSS address, it transfers zetaToken to the gateway and calls onRevert on a contract + /// @notice Withdraw tokens and call a contract with a revert callback through Gateway. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param data The calldata to pass to the contract call. + /// @param internalSendHash A hash used for internal tracking of the transaction. + /// @dev This function can only be called by the TSS address. function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { // Transfer zetaToken to the Gateway contract IERC20(zetaToken).safeTransfer(address(gateway), amount); @@ -40,7 +57,8 @@ contract ZetaConnectorNative is ZetaConnectorNewBase { emit WithdrawAndRevert(to, amount, data); } - // @dev receiveTokens handles token transfer back to connector + /// @notice Handle received tokens. + /// @param amount The amount of tokens received. function receiveTokens(uint256 amount) external override { IERC20(zetaToken).safeTransferFrom(msg.sender, address(this), amount); } diff --git a/contracts/prototypes/evm/ZetaConnectorNewBase.sol b/contracts/prototypes/evm/ZetaConnectorNewBase.sol index f2223afd..df775a95 100644 --- a/contracts/prototypes/evm/ZetaConnectorNewBase.sol +++ b/contracts/prototypes/evm/ZetaConnectorNewBase.sol @@ -8,17 +8,25 @@ import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "./IGatewayEVM.sol"; import "./IZetaConnector.sol"; +/// @title ZetaConnectorNewBase +/// @notice Abstract base contract for ZetaConnector. +/// @dev This contract implements basic functionality for handling tokens and interacting with the Gateway contract. abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard { using SafeERC20 for IERC20; + /// @notice Error indicating that a zero address was provided. error ZeroAddress(); + /// @notice Error indicating that the sender is invalid. error InvalidSender(); + /// @notice The Gateway contract used for executing cross-chain calls. IGatewayEVM public immutable gateway; + /// @notice The address of the Zeta token. address public immutable zetaToken; + /// @notice The address of the TSS (Threshold Signature Scheme) contract. address public tssAddress; - // @dev Only TSS address allowed modifier. + /// @dev Only TSS address allowed modifier. modifier onlyTSS() { if (msg.sender != tssAddress) { revert InvalidSender(); @@ -35,11 +43,27 @@ abstract contract ZetaConnectorNewBase is IZetaConnectorEvents, ReentrancyGuard tssAddress = _tssAddress; } + /// @notice Withdraw tokens to a specified address. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param internalSendHash A hash used for internal tracking of the transaction. function withdraw(address to, uint256 amount, bytes32 internalSendHash) external virtual; + /// @notice Withdraw tokens and call a contract through Gateway. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param data The calldata to pass to the contract call. + /// @param internalSendHash A hash used for internal tracking of the transaction. function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; + /// @notice Withdraw tokens and call a contract with a revert callback through Gateway. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param data The calldata to pass to the contract call. + /// @param internalSendHash A hash used for internal tracking of the transaction. function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external virtual; + /// @notice Handle received tokens. + /// @param amount The amount of tokens received. function receiveTokens(uint256 amount) external virtual; -} \ No newline at end of file +} diff --git a/contracts/prototypes/evm/ZetaConnectorNonNative.sol b/contracts/prototypes/evm/ZetaConnectorNonNative.sol index 97d45f0d..d1414b9d 100644 --- a/contracts/prototypes/evm/ZetaConnectorNonNative.sol +++ b/contracts/prototypes/evm/ZetaConnectorNonNative.sol @@ -5,12 +5,15 @@ import "./ZetaConnectorNewBase.sol"; import "./IZetaNonEthNew.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; +/// @title ZetaConnectorNonNative +/// @notice Implementation of ZetaConnectorNewBase for non-native token handling. +/// @dev This contract mints and burns Zeta tokens and interacts with the Gateway contract. contract ZetaConnectorNonNative is ZetaConnectorNewBase { - /// @notice Max supply for minting + /// @notice Max supply for minting. uint256 public maxSupply = type(uint256).max; - /// @notice Event triggered when max supply is updated - /// @param maxSupply New max supply + /// @notice Event triggered when max supply is updated. + /// @param maxSupply New max supply. event MaxSupplyUpdated(uint256 maxSupply); error ExceedsMaxSupply(); @@ -18,15 +21,20 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { ZetaConnectorNewBase(_gateway, _zetaToken, _tssAddress) {} - /// @notice Set max supply for minting - /// @param _maxSupply New max supply - /// @dev Caller must be TSS + + /// @notice Set max supply for minting. + /// @param _maxSupply New max supply. + /// @dev This function can only be called by the TSS address. function setMaxSupply(uint256 _maxSupply) external onlyTSS() { maxSupply = _maxSupply; emit MaxSupplyUpdated(_maxSupply); } - /// @dev withdraw is called by TSS address, it mints zetaToken to the destination address + /// @notice Withdraw tokens to a specified address. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param internalSendHash A hash used for internal tracking of the transaction. + /// @dev This function can only be called by the TSS address. function withdraw(address to, uint256 amount, bytes32 internalSendHash) external override nonReentrant onlyTSS { if (amount + IERC20(zetaToken).totalSupply() > maxSupply) revert ExceedsMaxSupply(); @@ -34,7 +42,12 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { emit Withdraw(to, amount); } - /// @dev withdrawAndCall is called by TSS address, it mints zetaToken and calls a contract + /// @notice Withdraw tokens and call a contract through Gateway. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param data The calldata to pass to the contract call. + /// @param internalSendHash A hash used for internal tracking of the transaction. + /// @dev This function can only be called by the TSS address, and mints if supply is not reached. function withdrawAndCall(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { if (amount + IERC20(zetaToken).totalSupply() > maxSupply) revert ExceedsMaxSupply(); @@ -47,7 +60,12 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { emit WithdrawAndCall(to, amount, data); } - /// @dev withdrawAndRevert is called by TSS address, it mints zetaToken to the gateway and calls onRevert on a contract + /// @notice Withdraw tokens and call a contract with a revert callback through Gateway. + /// @param to The address to withdraw tokens to. + /// @param amount The amount of tokens to withdraw. + /// @param data The calldata to pass to the contract call. + /// @param internalSendHash A hash used for internal tracking of the transaction. + /// @dev This function can only be called by the TSS address, and mints if supply is not reached. function withdrawAndRevert(address to, uint256 amount, bytes calldata data, bytes32 internalSendHash) external override nonReentrant onlyTSS { if (amount + IERC20(zetaToken).totalSupply() > maxSupply) revert ExceedsMaxSupply(); @@ -60,7 +78,8 @@ contract ZetaConnectorNonNative is ZetaConnectorNewBase { emit WithdrawAndRevert(to, amount, data); } - /// @dev receiveTokens handles token transfer and burn them + /// @notice Handle received tokens and burn them. + /// @param amount The amount of tokens received. function receiveTokens(uint256 amount) external override { IZetaNonEthNew(zetaToken).burnFrom(msg.sender, amount); } diff --git a/contracts/prototypes/zevm/GatewayZEVM.sol b/contracts/prototypes/zevm/GatewayZEVM.sol index 99d1f9ca..705eee7c 100644 --- a/contracts/prototypes/zevm/GatewayZEVM.sol +++ b/contracts/prototypes/zevm/GatewayZEVM.sol @@ -11,15 +11,19 @@ import "../../zevm/interfaces/zContract.sol"; import "./IGatewayZEVM.sol"; import "../../zevm/interfaces/IWZETA.sol"; -// The GatewayZEVM contract is the endpoint to call smart contracts on omnichain -// The contract doesn't hold any funds and should never have active allowances +/// @title GatewayZEVM +/// @notice The GatewayZEVM contract is the endpoint to call smart contracts on omnichain. +/// @dev The contract doesn't hold any funds and should never have active allowances. contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, OwnableUpgradeable, UUPSUpgradeable, ReentrancyGuardUpgradeable { + /// @notice Error indicating a zero address was provided. error ZeroAddress(); + /// @notice The constant address of the Fungible module. address public constant FUNGIBLE_MODULE_ADDRESS = 0x735b14BB79463307AAcBED86DAf3322B1e6226aB; + /// @notice The address of the Zeta token. address public zetaToken; - // @dev Only Fungible module address allowed modifier. + /// @dev Only Fungible module address allowed modifier. modifier onlyFungible() { if (msg.sender != FUNGIBLE_MODULE_ADDRESS) { revert CallerIsNotFungibleModule(); @@ -43,6 +47,8 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O zetaToken = _zetaToken; } + /// @dev Authorizes the upgrade of the contract. + /// @param newImplementation The address of the new implementation. function _authorizeUpgrade(address newImplementation) internal override onlyOwner() {} /// @dev Receive function to receive ZETA from WETH9.withdraw(). @@ -50,6 +56,10 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O if (msg.sender != zetaToken && msg.sender != FUNGIBLE_MODULE_ADDRESS) revert OnlyWZETAOrFungible(); } + /// @dev Internal function to withdraw ZRC20 tokens. + /// @param amount The amount of tokens to withdraw. + /// @param zrc20 The address of the ZRC20 token. + /// @return The gas fee for the withdrawal. function _withdrawZRC20(uint256 amount, address zrc20) internal returns (uint256) { (address gasZRC20, uint256 gasFee) = IZRC20(zrc20).withdrawGasFee(); if (!IZRC20(gasZRC20).transferFrom(msg.sender, FUNGIBLE_MODULE_ADDRESS, gasFee)) { @@ -65,6 +75,9 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O return gasFee; } + /// @dev Internal function to transfer ZETA tokens. + /// @param amount The amount of tokens to transfer. + /// @param to The address to transfer the tokens to. function _transferZETA(uint256 amount, address to) internal { if (!IWETH9(zetaToken).transferFrom(msg.sender, address(this), amount)) revert FailedZetaSent(); IWETH9(zetaToken).withdraw(amount); @@ -72,36 +85,51 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O if (!sent) revert FailedZetaSent(); } - // Withdraw ZRC20 tokens to external chain + /// @notice Withdraw ZRC20 tokens to an external chain. + /// @param receiver The receiver address on the external chain. + /// @param amount The amount of tokens to withdraw. + /// @param zrc20 The address of the ZRC20 token. function withdraw(bytes memory receiver, uint256 amount, address zrc20) external nonReentrant { uint256 gasFee = _withdrawZRC20(amount, zrc20); emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), ""); } - // Withdraw ZRC20 tokens and call smart contract on external chain + /// @notice Withdraw ZRC20 tokens and call a smart contract on an external chain. + /// @param receiver The receiver address on the external chain. + /// @param amount The amount of tokens to withdraw. + /// @param zrc20 The address of the ZRC20 token. + /// @param message The calldata to pass to the contract call. function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) external nonReentrant { uint256 gasFee = _withdrawZRC20(amount, zrc20); emit Withdrawal(msg.sender, zrc20, receiver, amount, gasFee, IZRC20(zrc20).PROTOCOL_FLAT_FEE(), message); } - // Withdraw ZETA to external chain + /// @notice Withdraw ZETA tokens to an external chain. + /// @param amount The amount of tokens to withdraw. function withdraw(uint256 amount) external nonReentrant { _transferZETA(amount, FUNGIBLE_MODULE_ADDRESS); emit Withdrawal(msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, ""); } - // Withdraw ZETA and call smart contract on external chain + /// @notice Withdraw ZETA tokens and call a smart contract on an external chain. + /// @param amount The amount of tokens to withdraw. + /// @param message The calldata to pass to the contract call. function withdrawAndCall(uint256 amount, bytes calldata message) external nonReentrant { _transferZETA(amount, FUNGIBLE_MODULE_ADDRESS); emit Withdrawal(msg.sender, address(zetaToken), abi.encodePacked(FUNGIBLE_MODULE_ADDRESS), amount, 0, 0, message); } - // Call smart contract on external chain without asset transfer + /// @notice Call a smart contract on an external chain without asset transfer. + /// @param receiver The receiver address on the external chain. + /// @param message The calldata to pass to the contract call. function call(bytes memory receiver, bytes calldata message) external nonReentrant { emit Call(msg.sender, receiver, message); } - // Deposit foreign coins into ZRC20 + /// @notice Deposit foreign coins into ZRC20. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to deposit. + /// @param target The target address to receive the deposited tokens. function deposit( address zrc20, uint256 amount, @@ -112,7 +140,12 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O IZRC20(zrc20).deposit(target, amount); } - // Execute user specified contract on ZEVM + /// @notice Execute a user-specified contract on ZEVM. + /// @param context The context of the cross-chain call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to transfer. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. function execute( zContext calldata context, address zrc20, @@ -123,7 +156,12 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); } - // Deposit foreign coins into ZRC20 and call user specified contract on ZEVM + /// @notice Deposit foreign coins into ZRC20 and call a user-specified contract on ZEVM. + /// @param context The context of the cross-chain call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to transfer. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. function depositAndCall( zContext calldata context, address zrc20, @@ -137,7 +175,11 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O UniversalContract(target).onCrossChainCall(context, zrc20, amount, message); } - // Deposit zeta and call user specified contract on ZEVM + /// @notice Deposit ZETA and call a user-specified contract on ZEVM. + /// @param context The context of the cross-chain call. + /// @param amount The amount of tokens to transfer. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. function depositAndCall( zContext calldata context, uint256 amount, @@ -150,7 +192,12 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O UniversalContract(target).onCrossChainCall(context, zetaToken, amount, message); } - // Revert user specified contract on ZEVM + /// @notice Revert a user-specified contract on ZEVM. + /// @param context The context of the revert call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to revert. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. function executeRevert( revertContext calldata context, address zrc20, @@ -161,7 +208,12 @@ contract GatewayZEVM is IGatewayZEVMEvents, IGatewayZEVMErrors, Initializable, O UniversalContract(target).onRevert(context, zrc20, amount, message); } - // Deposit foreign coins into ZRC20 and revert user specified contract on ZEVM + /// @notice Deposit foreign coins into ZRC20 and revert a user-specified contract on ZEVM. + /// @param context The context of the revert call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to revert. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. function depositAndRevert( revertContext calldata context, address zrc20, diff --git a/contracts/prototypes/zevm/IGatewayZEVM.sol b/contracts/prototypes/zevm/IGatewayZEVM.sol index af6dba4a..f2e7db32 100644 --- a/contracts/prototypes/zevm/IGatewayZEVM.sol +++ b/contracts/prototypes/zevm/IGatewayZEVM.sol @@ -3,19 +3,44 @@ pragma solidity 0.8.7; import "../../zevm/interfaces/zContract.sol"; +/// @title IGatewayZEVM +/// @notice Interface for the GatewayZEVM contract. +/// @dev Defines functions for cross-chain interactions and token handling. interface IGatewayZEVM { + /// @notice Withdraw ZRC20 tokens to an external chain. + /// @param receiver The receiver address on the external chain. + /// @param amount The amount of tokens to withdraw. + /// @param zrc20 The address of the ZRC20 token. function withdraw(bytes memory receiver, uint256 amount, address zrc20) external; + /// @notice Withdraw ZRC20 tokens and call a smart contract on an external chain. + /// @param receiver The receiver address on the external chain. + /// @param amount The amount of tokens to withdraw. + /// @param zrc20 The address of the ZRC20 token. + /// @param message The calldata to pass to the contract call. function withdrawAndCall(bytes memory receiver, uint256 amount, address zrc20, bytes calldata message) external; + /// @notice Call a smart contract on an external chain without asset transfer. + /// @param receiver The receiver address on the external chain. + /// @param message The calldata to pass to the contract call. function call(bytes memory receiver, bytes calldata message) external; + /// @notice Deposit foreign coins into ZRC20. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to deposit. + /// @param target The target address to receive the deposited tokens. function deposit( address zrc20, uint256 amount, address target ) external; + /// @notice Execute a user-specified contract on ZEVM. + /// @param context The context of the cross-chain call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to transfer. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. function execute( zContext calldata context, address zrc20, @@ -24,6 +49,12 @@ interface IGatewayZEVM { bytes calldata message ) external; + /// @notice Deposit foreign coins into ZRC20 and call a user-specified contract on ZEVM. + /// @param context The context of the cross-chain call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to transfer. + /// @param target The target contract to call. + /// @param message The calldata to pass to the contract call. function depositAndCall( zContext calldata context, address zrc20, @@ -33,19 +64,53 @@ interface IGatewayZEVM { ) external; } +/// @title IGatewayZEVMEvents +/// @notice Interface for the events emitted by the GatewayZEVM contract. interface IGatewayZEVMEvents { + /// @notice Emitted when a cross-chain call is made. + /// @param sender The address of the sender. + /// @param receiver The receiver address on the external chain. + /// @param message The calldata passed to the contract call. event Call(address indexed sender, bytes receiver, bytes message); + + /// @notice Emitted when a withdrawal is made. + /// @param from The address from which the tokens are withdrawn. + /// @param zrc20 The address of the ZRC20 token. + /// @param to The receiver address on the external chain. + /// @param value The amount of tokens withdrawn. + /// @param gasfee The gas fee for the withdrawal. + /// @param protocolFlatFee The protocol flat fee for the withdrawal. + /// @param message The calldata passed to the contract call. event Withdrawal(address indexed from, address zrc20, bytes to, uint256 value, uint256 gasfee, uint256 protocolFlatFee, bytes message); } +/// @title IGatewayZEVMErrors +/// @notice Interface for the errors used in the GatewayZEVM contract. interface IGatewayZEVMErrors { + /// @notice Error indicating a withdrawal failure. error WithdrawalFailed(); + + /// @notice Error indicating an insufficient ZRC20 token amount. error InsufficientZRC20Amount(); + + /// @notice Error indicating a failure to burn ZRC20 tokens. error ZRC20BurnFailed(); + + /// @notice Error indicating a failure to transfer ZRC20 tokens. error ZRC20TransferFailed(); + + /// @notice Error indicating a failure to transfer gas fee. error GasFeeTransferFailed(); + + /// @notice Error indicating that the caller is not the Fungible module. error CallerIsNotFungibleModule(); + + /// @notice Error indicating an invalid target address. error InvalidTarget(); + + /// @notice Error indicating a failure to send ZETA tokens. error FailedZetaSent(); + + /// @notice Error indicating that only WZETA or the Fungible module can call the function. error OnlyWZETAOrFungible(); } \ No newline at end of file diff --git a/contracts/prototypes/zevm/SenderZEVM.sol b/contracts/prototypes/zevm/SenderZEVM.sol index 4e999f69..457ca976 100644 --- a/contracts/prototypes/zevm/SenderZEVM.sol +++ b/contracts/prototypes/zevm/SenderZEVM.sol @@ -5,16 +5,26 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "./IGatewayZEVM.sol"; import "../../zevm/interfaces/IZRC20.sol"; -// @notice This contract is used just for testing +/// @title SenderZEVM +/// @notice This contract is used just for testing. +/// @dev Provides functions to call a receiver on EVM and to withdraw and call a receiver on EVM. contract SenderZEVM { + /// @notice The address of the gateway contract. address public gateway; + + /// @notice Error indicating that the approval of tokens failed. error ApprovalFailed(); constructor(address _gateway) { gateway = _gateway; } - // Call receiver on EVM + /// @notice Call a receiver on EVM. + /// @param receiver The address of the receiver on the external chain. + /// @param str A string parameter to pass to the receiver's function. + /// @param num A numeric parameter to pass to the receiver's function. + /// @param flag A boolean parameter to pass to the receiver's function. + /// @dev Encodes the function call and passes it to the gateway. function callReceiver(bytes memory receiver, string memory str, uint256 num, bool flag) external { // Encode the function call to the receiver's receivePayable method bytes memory message = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); @@ -23,15 +33,22 @@ contract SenderZEVM { IGatewayZEVM(gateway).call(receiver, message); } - // Withdraw and call receiver on EVM + /// @notice Withdraw and call a receiver on EVM. + /// @param receiver The address of the receiver on the external chain. + /// @param amount The amount of tokens to withdraw. + /// @param zrc20 The address of the ZRC20 token. + /// @param str A string parameter to pass to the receiver's function. + /// @param num A numeric parameter to pass to the receiver's function. + /// @param flag A boolean parameter to pass to the receiver's function. + /// @dev Approves the gateway to withdraw tokens and encodes the function call to pass to the gateway. function withdrawAndCallReceiver(bytes memory receiver, uint256 amount, address zrc20, string memory str, uint256 num, bool flag) external { // Encode the function call to the receiver's receivePayable method bytes memory message = abi.encodeWithSignature("receivePayable(string,uint256,bool)", str, num, flag); // Approve gateway to withdraw - if(!IZRC20(zrc20).approve(gateway, amount)) revert ApprovalFailed(); + if (!IZRC20(zrc20).approve(gateway, amount)) revert ApprovalFailed(); // Pass encoded call to gateway IGatewayZEVM(gateway).withdrawAndCall(receiver, amount, zrc20, message); } -} \ No newline at end of file +} diff --git a/contracts/prototypes/zevm/TestZContract.sol b/contracts/prototypes/zevm/TestZContract.sol index 78593716..b8c88e82 100644 --- a/contracts/prototypes/zevm/TestZContract.sol +++ b/contracts/prototypes/zevm/TestZContract.sol @@ -4,11 +4,32 @@ pragma solidity 0.8.7; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "../../zevm/interfaces/zContract.sol"; -// @notice This contract is used just for testing +/// @title TestZContract +/// @notice This contract is used just for testing. +/// @dev Implements the UniversalContract interface for handling cross-chain calls and reverts. contract TestZContract is UniversalContract { + /// @notice Emitted when a cross-chain call is received. + /// @param origin The origin address on the external chain. + /// @param sender The sender address on the external chain. + /// @param chainID The chain ID of the external chain. + /// @param msgSender The sender address on the current chain. + /// @param message The decoded message from the cross-chain call. event ContextData(bytes origin, address sender, uint256 chainID, address msgSender, string message); + + /// @notice Emitted when a cross-chain call is reverted. + /// @param origin The origin address on the external chain. + /// @param sender The sender address on the external chain. + /// @param chainID The chain ID of the external chain. + /// @param msgSender The sender address on the current chain. + /// @param message The decoded message from the revert call. event ContextDataRevert(bytes origin, address sender, uint256 chainID, address msgSender, string message); + /// @notice Handles a cross-chain call. + /// @param context The context of the cross-chain call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens transferred. + /// @param message The calldata passed to the contract call. + /// @dev Decodes the message and emits a ContextData event. function onCrossChainCall( zContext calldata context, address zrc20, @@ -22,6 +43,12 @@ contract TestZContract is UniversalContract { emit ContextData(context.origin, context.sender, context.chainID, msg.sender, decodedMessage); } + /// @notice Handles a cross-chain call revert. + /// @param context The context of the revert call. + /// @param zrc20 The address of the ZRC20 token. + /// @param amount The amount of tokens to revert. + /// @param message The calldata passed to the contract call. + /// @dev Decodes the message and emits a ContextDataRevert event. function onRevert( revertContext calldata context, address zrc20, @@ -35,6 +62,9 @@ contract TestZContract is UniversalContract { emit ContextDataRevert(context.origin, context.sender, context.chainID, msg.sender, decodedMessage); } + /// @notice Allows the contract to receive ETH. receive() external payable {} + + /// @notice Fallback function to receive ETH. fallback() external payable {} -} \ No newline at end of file +} diff --git a/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go b/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go index 6438908b..e4290f3e 100644 --- a/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go +++ b/pkg/contracts/prototypes/evm/erc20custodynew.sol/erc20custodynew.go @@ -32,7 +32,7 @@ var ( // ERC20CustodyNewMetaData contains all meta data concerning the ERC20CustodyNew contract. var ERC20CustodyNewMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b506040516200130d3803806200130d833981810160405281019062000037919062000180565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200021a565b6000815190506200017a8162000200565b92915050565b600080604083850312156200019a5762000199620001fb565b5b6000620001aa8582860162000169565b9250506020620001bd8582860162000169565b9150509250929050565b6000620001d482620001db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200020b81620001c7565b81146200021757600080fd5b50565b6110e3806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063116191b61461005c57806321fc65f21461007a5780635b11259114610096578063c8a02362146100b4578063d9caed12146100d0575b600080fd5b6100646100ec565b6040516100719190610d41565b60405180910390f35b610094600480360381019061008f9190610a93565b610112565b005b61009e6102fb565b6040516100ab9190610caf565b60405180910390f35b6100ce60048036038101906100c99190610a93565b610321565b005b6100ea60048036038101906100e59190610a40565b61050a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61011a610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101a1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ee600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b8152600401610251959493929190610cca565b600060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102e493929190610e19565b60405180910390a36102f461070c565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610329610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610460959493929190610cca565b600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516104f393929190610e19565b60405180910390a361050361070c565b5050505050565b610512610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610599576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c482828573ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516106219190610dfe565b60405180910390a361063161070c565b505050565b6002600054141561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610dde565b60405180910390fd5b6002600081905550565b6107078363a9059cbb60e01b84846040516024016106a5929190610d18565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610716565b505050565b6001600081905550565b6000610778826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107dd9092919063ffffffff16565b90506000815111156107d857808060200190518101906107989190610b1b565b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce90610dbe565b60405180910390fd5b5b505050565b60606107ec84846000856107f5565b90509392505050565b60608247101561083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190610d7e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108639190610c98565b60006040518083038185875af1925050503d80600081146108a0576040519150601f19603f3d011682016040523d82523d6000602084013e6108a5565b606091505b50915091506108b6878383876108c2565b92505050949350505050565b606083156109255760008351141561091d576108dd85610938565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390610d9e565b60405180910390fd5b5b829050610930565b61092f838361095b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561096e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a29190610d5c565b60405180910390fd5b6000813590506109ba81611068565b92915050565b6000815190506109cf8161107f565b92915050565b60008083601f8401126109eb576109ea610f53565b5b8235905067ffffffffffffffff811115610a0857610a07610f4e565b5b602083019150836001820283011115610a2457610a23610f58565b5b9250929050565b600081359050610a3a81611096565b92915050565b600080600060608486031215610a5957610a58610f62565b5b6000610a67868287016109ab565b9350506020610a78868287016109ab565b9250506040610a8986828701610a2b565b9150509250925092565b600080600080600060808688031215610aaf57610aae610f62565b5b6000610abd888289016109ab565b9550506020610ace888289016109ab565b9450506040610adf88828901610a2b565b935050606086013567ffffffffffffffff811115610b0057610aff610f5d565b5b610b0c888289016109d5565b92509250509295509295909350565b600060208284031215610b3157610b30610f62565b5b6000610b3f848285016109c0565b91505092915050565b610b5181610e8e565b82525050565b6000610b638385610e61565b9350610b70838584610f0c565b610b7983610f67565b840190509392505050565b6000610b8f82610e4b565b610b998185610e72565b9350610ba9818560208601610f1b565b80840191505092915050565b610bbe81610ed6565b82525050565b6000610bcf82610e56565b610bd98185610e7d565b9350610be9818560208601610f1b565b610bf281610f67565b840191505092915050565b6000610c0a602683610e7d565b9150610c1582610f78565b604082019050919050565b6000610c2d601d83610e7d565b9150610c3882610fc7565b602082019050919050565b6000610c50602a83610e7d565b9150610c5b82610ff0565b604082019050919050565b6000610c73601f83610e7d565b9150610c7e8261103f565b602082019050919050565b610c9281610ecc565b82525050565b6000610ca48284610b84565b915081905092915050565b6000602082019050610cc46000830184610b48565b92915050565b6000608082019050610cdf6000830188610b48565b610cec6020830187610b48565b610cf96040830186610c89565b8181036060830152610d0c818486610b57565b90509695505050505050565b6000604082019050610d2d6000830185610b48565b610d3a6020830184610c89565b9392505050565b6000602082019050610d566000830184610bb5565b92915050565b60006020820190508181036000830152610d768184610bc4565b905092915050565b60006020820190508181036000830152610d9781610bfd565b9050919050565b60006020820190508181036000830152610db781610c20565b9050919050565b60006020820190508181036000830152610dd781610c43565b9050919050565b60006020820190508181036000830152610df781610c66565b9050919050565b6000602082019050610e136000830184610c89565b92915050565b6000604082019050610e2e6000830186610c89565b8181036020830152610e41818486610b57565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610e9982610eac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ee182610ee8565b9050919050565b6000610ef382610efa565b9050919050565b6000610f0582610eac565b9050919050565b82818337600083830152505050565b60005b83811015610f39578082015181840152602081019050610f1e565b83811115610f48576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61107181610e8e565b811461107c57600080fd5b50565b61108881610ea0565b811461109357600080fd5b50565b61109f81610ecc565b81146110aa57600080fd5b5056fea264697066735822122044d7b7350c040f6f061e6eaa0b8afe75af494d90bcf301dc70592c8d6e1c014564736f6c63430008070033", + Bin: "0x60806040523480156200001157600080fd5b506040516200130d3803806200130d833981810160405281019062000037919062000180565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200021a565b6000815190506200017a8162000200565b92915050565b600080604083850312156200019a5762000199620001fb565b5b6000620001aa8582860162000169565b9250506020620001bd8582860162000169565b9150509250929050565b6000620001d482620001db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200020b81620001c7565b81146200021757600080fd5b50565b6110e3806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063116191b61461005c57806321fc65f21461007a5780635b11259114610096578063c8a02362146100b4578063d9caed12146100d0575b600080fd5b6100646100ec565b6040516100719190610d41565b60405180910390f35b610094600480360381019061008f9190610a93565b610112565b005b61009e6102fb565b6040516100ab9190610caf565b60405180910390f35b6100ce60048036038101906100c99190610a93565b610321565b005b6100ea60048036038101906100e59190610a40565b61050a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61011a610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101a1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ee600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b8152600401610251959493929190610cca565b600060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102e493929190610e19565b60405180910390a36102f461070c565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610329610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610460959493929190610cca565b600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516104f393929190610e19565b60405180910390a361050361070c565b5050505050565b610512610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610599576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c482828573ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516106219190610dfe565b60405180910390a361063161070c565b505050565b6002600054141561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610dde565b60405180910390fd5b6002600081905550565b6107078363a9059cbb60e01b84846040516024016106a5929190610d18565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610716565b505050565b6001600081905550565b6000610778826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107dd9092919063ffffffff16565b90506000815111156107d857808060200190518101906107989190610b1b565b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce90610dbe565b60405180910390fd5b5b505050565b60606107ec84846000856107f5565b90509392505050565b60608247101561083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190610d7e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108639190610c98565b60006040518083038185875af1925050503d80600081146108a0576040519150601f19603f3d011682016040523d82523d6000602084013e6108a5565b606091505b50915091506108b6878383876108c2565b92505050949350505050565b606083156109255760008351141561091d576108dd85610938565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390610d9e565b60405180910390fd5b5b829050610930565b61092f838361095b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561096e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a29190610d5c565b60405180910390fd5b6000813590506109ba81611068565b92915050565b6000815190506109cf8161107f565b92915050565b60008083601f8401126109eb576109ea610f53565b5b8235905067ffffffffffffffff811115610a0857610a07610f4e565b5b602083019150836001820283011115610a2457610a23610f58565b5b9250929050565b600081359050610a3a81611096565b92915050565b600080600060608486031215610a5957610a58610f62565b5b6000610a67868287016109ab565b9350506020610a78868287016109ab565b9250506040610a8986828701610a2b565b9150509250925092565b600080600080600060808688031215610aaf57610aae610f62565b5b6000610abd888289016109ab565b9550506020610ace888289016109ab565b9450506040610adf88828901610a2b565b935050606086013567ffffffffffffffff811115610b0057610aff610f5d565b5b610b0c888289016109d5565b92509250509295509295909350565b600060208284031215610b3157610b30610f62565b5b6000610b3f848285016109c0565b91505092915050565b610b5181610e8e565b82525050565b6000610b638385610e61565b9350610b70838584610f0c565b610b7983610f67565b840190509392505050565b6000610b8f82610e4b565b610b998185610e72565b9350610ba9818560208601610f1b565b80840191505092915050565b610bbe81610ed6565b82525050565b6000610bcf82610e56565b610bd98185610e7d565b9350610be9818560208601610f1b565b610bf281610f67565b840191505092915050565b6000610c0a602683610e7d565b9150610c1582610f78565b604082019050919050565b6000610c2d601d83610e7d565b9150610c3882610fc7565b602082019050919050565b6000610c50602a83610e7d565b9150610c5b82610ff0565b604082019050919050565b6000610c73601f83610e7d565b9150610c7e8261103f565b602082019050919050565b610c9281610ecc565b82525050565b6000610ca48284610b84565b915081905092915050565b6000602082019050610cc46000830184610b48565b92915050565b6000608082019050610cdf6000830188610b48565b610cec6020830187610b48565b610cf96040830186610c89565b8181036060830152610d0c818486610b57565b90509695505050505050565b6000604082019050610d2d6000830185610b48565b610d3a6020830184610c89565b9392505050565b6000602082019050610d566000830184610bb5565b92915050565b60006020820190508181036000830152610d768184610bc4565b905092915050565b60006020820190508181036000830152610d9781610bfd565b9050919050565b60006020820190508181036000830152610db781610c20565b9050919050565b60006020820190508181036000830152610dd781610c43565b9050919050565b60006020820190508181036000830152610df781610c66565b9050919050565b6000602082019050610e136000830184610c89565b92915050565b6000604082019050610e2e6000830186610c89565b8181036020830152610e41818486610b57565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610e9982610eac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ee182610ee8565b9050919050565b6000610ef382610efa565b9050919050565b6000610f0582610eac565b9050919050565b82818337600083830152505050565b60005b83811015610f39578082015181840152602081019050610f1e565b83811115610f48576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61107181610e8e565b811461107c57600080fd5b50565b61108881610ea0565b811461109357600080fd5b50565b61109f81610ecc565b81146110aa57600080fd5b5056fea26469706673582212205340b8d5ae0d440bae0160f1fe56f515f5471e0710e9b5f33c8b948d4d8769e364736f6c63430008070033", } // ERC20CustodyNewABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go b/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go index f6538886..cdf84756 100644 --- a/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go +++ b/pkg/contracts/prototypes/evm/gatewayevm.sol/gatewayevm.go @@ -32,7 +32,7 @@ var ( // GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. var GatewayEVMMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6140266200024360003960008181610b3c01528181610bcb01528181610f3501528181610fc4015261140701526140266000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612f0a565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612fff565b610647565b005b6101a660048036038101906101a19190612fff565b6106b3565b6040516101b391906136b5565b60405180910390f35b3480156101c857600080fd5b506101d16107a8565b6040516101de91906135d2565b60405180910390f35b61020160048036038101906101fc9190612fff565b6107ce565b005b61021d60048036038101906102189190612fff565b610948565b005b34801561022b57600080fd5b5061024660048036038101906102419190612f0a565b610b3a565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612f37565b610cc3565b005b61028b6004803603810190610286919061305f565b610f33565b005b34801561029957600080fd5b506102b460048036038101906102af9190612f77565b611070565b005b3480156102c257600080fd5b506102cb611403565b6040516102d89190613676565b60405180910390f35b3480156102ed57600080fd5b506102f66114bc565b60405161030391906135d2565b60405180910390f35b34801561031857600080fd5b506103216114e2565b60405161032e91906135d2565b60405180910390f35b34801561034357600080fd5b5061034c611508565b005b34801561035a57600080fd5b506103756004803603810190610370919061310e565b61151c565b005b34801561038357600080fd5b5061038c6115d4565b60405161039991906135d2565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612f0a565b6115fe565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612f77565b6117b8565b005b34801561040057600080fd5b506104096119ee565b60405161041691906135d2565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612f0a565b611a14565b005b610462600480360381019061045d9190612f0a565b611a98565b005b34801561047057600080fd5b5061048b600480360381019061048691906130bb565b611c0c565b005b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610514576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461059c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610603576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516106a6929190613691565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461073c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610749858585611cbe565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516107959392919061396b565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610809576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610851906135bd565b60006040518083038185875af1925050503d806000811461088e576040519150601f19603f3d011682016040523d82523d6000602084013e610893565b606091505b505090506000151581151514156108d6576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161093a94939291906138ef565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109cf576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16346040516109f6906135bd565b60006040518083038185875af1925050503d8060008114610a33576040519150601f19603f3d011682016040523d82523d6000602084013e610a38565b606091505b509150915081610a74576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610aaf929190613691565b600060405180830381600087803b158015610ac957600080fd5b505af1158015610add573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610b2b9392919061396b565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613734565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610c08611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613754565b60405180910390fd5b610c6781611dcc565b610cc081600067ffffffffffffffff811115610c8657610c85613b2c565b5b6040519080825280601f01601f191660200182016040528015610cb85781602001600182028036833780820191505090505b506000611dd7565b50565b60008060019054906101000a900460ff16159050808015610cf45750600160008054906101000a900460ff1660ff16105b80610d215750610d0330611f54565b158015610d205750600160008054906101000a900460ff1660ff16145b5b610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d57906137d4565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d9d576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e045750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610e3b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e43611f77565b610e4b611fd0565b610e53612021565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f2e5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610f2591906136d7565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613734565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611001611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90613754565b60405180910390fd5b61106082611dcc565b61106c82826001611dd7565b5050565b61107861207a565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611124575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561115b576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000831415611196576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111a085856120ca565b6111d6576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161121192919061364d565b602060405180830381600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190613196565b611299576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112a6858484611cbe565b90506112b286866120ca565b6112e8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161132391906135d2565b60206040518083038186803b15801561133b57600080fd5b505afa15801561134f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137391906131f0565b90506000811115611389576113888782612162565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113ea9392919061396b565b60405180910390a350506113fc61234c565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90613794565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611510612356565b61151a60006123d4565b565b6000841415611557576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156233848661249a565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516115c594939291906138ef565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611685576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611774576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117c061207a565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561186c575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156118a3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156118de576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190984848773ffffffffffffffffffffffffffffffffffffffff166126b49092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611944929190613691565b600060405180830381600087803b15801561195e57600080fd5b505af1158015611972573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516119d79392919061396b565b60405180910390a36119e761234c565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1c612356565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613714565b60405180910390fd5b611a95816123d4565b50565b6000341415611ad3576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611b1b906135bd565b60006040518083038185875af1925050503d8060008114611b58576040519150601f19603f3d011682016040523d82523d6000602084013e611b5d565b606091505b50509050600015158115151415611ba0576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611c0092919061392f565b60405180910390a35050565b6000821415611c47576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c5233828461249a565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611cb192919061392f565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611ceb92919061358d565b60006040518083038185875af1925050503d8060008114611d28576040519150601f19603f3d011682016040523d82523d6000602084013e611d2d565b606091505b509150915081611d69576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611da37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61273a565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dd4612356565b50565b611e037f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612744565b60000160009054906101000a900460ff1615611e2757611e228361274e565b611f4f565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6d57600080fd5b505afa925050508015611e9e57506040513d601f19601f82011682018060405250810190611e9b91906131c3565b60015b611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed4906137f4565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f39906137b4565b60405180910390fd5b50611f4e838383612807565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90613874565b60405180910390fd5b611fce612833565b565b600060019054906101000a900460ff1661201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613874565b60405180910390fd5b565b600060019054906101000a900460ff16612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206790613874565b60405180910390fd5b612078612894565b565b600260c95414156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906138b4565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401612108929190613624565b602060405180830381600087803b15801561212257600080fd5b505af1158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190613196565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122fa578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161221592919061364d565b602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122679190613196565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016122c391906138d4565b600060405180830381600087803b1580156122dd57600080fd5b505af11580156122f1573d6000803e3d6000fd5b50505050612348565b61234760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166126b49092919063ffffffff16565b5b5050565b600160c981905550565b61235e6128ed565b73ffffffffffffffffffffffffffffffffffffffff1661237c6115d4565b73ffffffffffffffffffffffffffffffffffffffff16146123d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c990613834565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561265f5761251d8330838573ffffffffffffffffffffffffffffffffffffffff166128f5909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161257a92919061364d565b602060405180830381600087803b15801561259457600080fd5b505af11580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc9190613196565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161262891906138d4565b600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050506126af565b6126ae8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166128f5909392919063ffffffff16565b5b505050565b6127358363a9059cbb60e01b84846040516024016126d392919061364d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061297e565b505050565b6000819050919050565b6000819050919050565b61275781611f54565b612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d90613814565b60405180910390fd5b806127c37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61273a565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61281083612a45565b60008251118061281d5750805b1561282e5761282c8383612a94565b505b505050565b600060019054906101000a900460ff16612882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287990613874565b60405180910390fd5b61289261288d6128ed565b6123d4565b565b600060019054906101000a900460ff166128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da90613874565b60405180910390fd5b600160c981905550565b600033905090565b612978846323b872dd60e01b858585604051602401612916939291906135ed565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061297e565b50505050565b60006129e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ac19092919063ffffffff16565b9050600081511115612a405780806020019051810190612a009190613196565b612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3690613894565b60405180910390fd5b5b505050565b612a4e8161274e565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060612ab98383604051806060016040528060278152602001613fca60279139612ad9565b905092915050565b6060612ad08484600085612b5f565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051612b0391906135a6565b600060405180830381855af49150503d8060008114612b3e576040519150601f19603f3d011682016040523d82523d6000602084013e612b43565b606091505b5091509150612b5486838387612c2c565b925050509392505050565b606082471015612ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9b90613774565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612bcd91906135a6565b60006040518083038185875af1925050503d8060008114612c0a576040519150601f19603f3d011682016040523d82523d6000602084013e612c0f565b606091505b5091509150612c2087838387612ca2565b92505050949350505050565b60608315612c8f57600083511415612c8757612c4785611f54565b612c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7d90613854565b60405180910390fd5b5b829050612c9a565b612c998383612d18565b5b949350505050565b60608315612d0557600083511415612cfd57612cbd85612d68565b612cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf390613854565b60405180910390fd5b5b829050612d10565b612d0f8383612d8b565b5b949350505050565b600082511115612d2b5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5f91906136f2565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612d9e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd291906136f2565b60405180910390fd5b6000612dee612de9846139c2565b61399d565b905082815260208101848484011115612e0a57612e09613b6a565b5b612e15848285613ab9565b509392505050565b600081359050612e2c81613f6d565b92915050565b600081519050612e4181613f84565b92915050565b600081519050612e5681613f9b565b92915050565b60008083601f840112612e7257612e71613b60565b5b8235905067ffffffffffffffff811115612e8f57612e8e613b5b565b5b602083019150836001820283011115612eab57612eaa613b65565b5b9250929050565b600082601f830112612ec757612ec6613b60565b5b8135612ed7848260208601612ddb565b91505092915050565b600081359050612eef81613fb2565b92915050565b600081519050612f0481613fb2565b92915050565b600060208284031215612f2057612f1f613b74565b5b6000612f2e84828501612e1d565b91505092915050565b60008060408385031215612f4e57612f4d613b74565b5b6000612f5c85828601612e1d565b9250506020612f6d85828601612e1d565b9150509250929050565b600080600080600060808688031215612f9357612f92613b74565b5b6000612fa188828901612e1d565b9550506020612fb288828901612e1d565b9450506040612fc388828901612ee0565b935050606086013567ffffffffffffffff811115612fe457612fe3613b6f565b5b612ff088828901612e5c565b92509250509295509295909350565b60008060006040848603121561301857613017613b74565b5b600061302686828701612e1d565b935050602084013567ffffffffffffffff81111561304757613046613b6f565b5b61305386828701612e5c565b92509250509250925092565b6000806040838503121561307657613075613b74565b5b600061308485828601612e1d565b925050602083013567ffffffffffffffff8111156130a5576130a4613b6f565b5b6130b185828601612eb2565b9150509250929050565b6000806000606084860312156130d4576130d3613b74565b5b60006130e286828701612e1d565b93505060206130f386828701612ee0565b925050604061310486828701612e1d565b9150509250925092565b60008060008060006080868803121561312a57613129613b74565b5b600061313888828901612e1d565b955050602061314988828901612ee0565b945050604061315a88828901612e1d565b935050606086013567ffffffffffffffff81111561317b5761317a613b6f565b5b61318788828901612e5c565b92509250509295509295909350565b6000602082840312156131ac576131ab613b74565b5b60006131ba84828501612e32565b91505092915050565b6000602082840312156131d9576131d8613b74565b5b60006131e784828501612e47565b91505092915050565b60006020828403121561320657613205613b74565b5b600061321484828501612ef5565b91505092915050565b61322681613a36565b82525050565b61323581613a54565b82525050565b60006132478385613a09565b9350613254838584613ab9565b61325d83613b79565b840190509392505050565b60006132748385613a1a565b9350613281838584613ab9565b82840190509392505050565b6000613298826139f3565b6132a28185613a09565b93506132b2818560208601613ac8565b6132bb81613b79565b840191505092915050565b60006132d1826139f3565b6132db8185613a1a565b93506132eb818560208601613ac8565b80840191505092915050565b61330081613a95565b82525050565b61330f81613aa7565b82525050565b6000613320826139fe565b61332a8185613a25565b935061333a818560208601613ac8565b61334381613b79565b840191505092915050565b600061335b602683613a25565b915061336682613b8a565b604082019050919050565b600061337e602c83613a25565b915061338982613bd9565b604082019050919050565b60006133a1602c83613a25565b91506133ac82613c28565b604082019050919050565b60006133c4602683613a25565b91506133cf82613c77565b604082019050919050565b60006133e7603883613a25565b91506133f282613cc6565b604082019050919050565b600061340a602983613a25565b915061341582613d15565b604082019050919050565b600061342d602e83613a25565b915061343882613d64565b604082019050919050565b6000613450602e83613a25565b915061345b82613db3565b604082019050919050565b6000613473602d83613a25565b915061347e82613e02565b604082019050919050565b6000613496602083613a25565b91506134a182613e51565b602082019050919050565b60006134b9600083613a09565b91506134c482613e7a565b600082019050919050565b60006134dc600083613a1a565b91506134e782613e7a565b600082019050919050565b60006134ff601d83613a25565b915061350a82613e7d565b602082019050919050565b6000613522602b83613a25565b915061352d82613ea6565b604082019050919050565b6000613545602a83613a25565b915061355082613ef5565b604082019050919050565b6000613568601f83613a25565b915061357382613f44565b602082019050919050565b61358781613a7e565b82525050565b600061359a828486613268565b91508190509392505050565b60006135b282846132c6565b915081905092915050565b60006135c8826134cf565b9150819050919050565b60006020820190506135e7600083018461321d565b92915050565b6000606082019050613602600083018661321d565b61360f602083018561321d565b61361c604083018461357e565b949350505050565b6000604082019050613639600083018561321d565b61364660208301846132f7565b9392505050565b6000604082019050613662600083018561321d565b61366f602083018461357e565b9392505050565b600060208201905061368b600083018461322c565b92915050565b600060208201905081810360008301526136ac81848661323b565b90509392505050565b600060208201905081810360008301526136cf818461328d565b905092915050565b60006020820190506136ec6000830184613306565b92915050565b6000602082019050818103600083015261370c8184613315565b905092915050565b6000602082019050818103600083015261372d8161334e565b9050919050565b6000602082019050818103600083015261374d81613371565b9050919050565b6000602082019050818103600083015261376d81613394565b9050919050565b6000602082019050818103600083015261378d816133b7565b9050919050565b600060208201905081810360008301526137ad816133da565b9050919050565b600060208201905081810360008301526137cd816133fd565b9050919050565b600060208201905081810360008301526137ed81613420565b9050919050565b6000602082019050818103600083015261380d81613443565b9050919050565b6000602082019050818103600083015261382d81613466565b9050919050565b6000602082019050818103600083015261384d81613489565b9050919050565b6000602082019050818103600083015261386d816134f2565b9050919050565b6000602082019050818103600083015261388d81613515565b9050919050565b600060208201905081810360008301526138ad81613538565b9050919050565b600060208201905081810360008301526138cd8161355b565b9050919050565b60006020820190506138e9600083018461357e565b92915050565b6000606082019050613904600083018761357e565b613911602083018661321d565b818103604083015261392481848661323b565b905095945050505050565b6000606082019050613944600083018561357e565b613951602083018461321d565b8181036040830152613962816134ac565b90509392505050565b6000604082019050613980600083018661357e565b818103602083015261399381848661323b565b9050949350505050565b60006139a76139b8565b90506139b38282613afb565b919050565b6000604051905090565b600067ffffffffffffffff8211156139dd576139dc613b2c565b5b6139e682613b79565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613a4182613a5e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613aa082613a7e565b9050919050565b6000613ab282613a88565b9050919050565b82818337600083830152505050565b60005b83811015613ae6578082015181840152602081019050613acb565b83811115613af5576000848401525b50505050565b613b0482613b79565b810181811067ffffffffffffffff82111715613b2357613b22613b2c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613f7681613a36565b8114613f8157600080fd5b50565b613f8d81613a48565b8114613f9857600080fd5b50565b613fa481613a54565b8114613faf57600080fd5b50565b613fbb81613a7e565b8114613fc657600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d4d187c762f40390aee121e3267997df07017a0032a9b500d43abd12e540b6bd64736f6c63430008070033", + Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6140266200024360003960008181610b3c01528181610bcb01528181610f3501528181610fc4015261140701526140266000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612f0a565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612fff565b610647565b005b6101a660048036038101906101a19190612fff565b6106b3565b6040516101b391906136b5565b60405180910390f35b3480156101c857600080fd5b506101d16107a8565b6040516101de91906135d2565b60405180910390f35b61020160048036038101906101fc9190612fff565b6107ce565b005b61021d60048036038101906102189190612fff565b610948565b005b34801561022b57600080fd5b5061024660048036038101906102419190612f0a565b610b3a565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612f37565b610cc3565b005b61028b6004803603810190610286919061305f565b610f33565b005b34801561029957600080fd5b506102b460048036038101906102af9190612f77565b611070565b005b3480156102c257600080fd5b506102cb611403565b6040516102d89190613676565b60405180910390f35b3480156102ed57600080fd5b506102f66114bc565b60405161030391906135d2565b60405180910390f35b34801561031857600080fd5b506103216114e2565b60405161032e91906135d2565b60405180910390f35b34801561034357600080fd5b5061034c611508565b005b34801561035a57600080fd5b506103756004803603810190610370919061310e565b61151c565b005b34801561038357600080fd5b5061038c6115d4565b60405161039991906135d2565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612f0a565b6115fe565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612f77565b6117b8565b005b34801561040057600080fd5b506104096119ee565b60405161041691906135d2565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612f0a565b611a14565b005b610462600480360381019061045d9190612f0a565b611a98565b005b34801561047057600080fd5b5061048b600480360381019061048691906130bb565b611c0c565b005b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610514576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461059c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610603576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516106a6929190613691565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461073c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610749858585611cbe565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516107959392919061396b565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610809576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610851906135bd565b60006040518083038185875af1925050503d806000811461088e576040519150601f19603f3d011682016040523d82523d6000602084013e610893565b606091505b505090506000151581151514156108d6576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161093a94939291906138ef565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109cf576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16346040516109f6906135bd565b60006040518083038185875af1925050503d8060008114610a33576040519150601f19603f3d011682016040523d82523d6000602084013e610a38565b606091505b509150915081610a74576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610aaf929190613691565b600060405180830381600087803b158015610ac957600080fd5b505af1158015610add573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610b2b9392919061396b565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613734565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610c08611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613754565b60405180910390fd5b610c6781611dcc565b610cc081600067ffffffffffffffff811115610c8657610c85613b2c565b5b6040519080825280601f01601f191660200182016040528015610cb85781602001600182028036833780820191505090505b506000611dd7565b50565b60008060019054906101000a900460ff16159050808015610cf45750600160008054906101000a900460ff1660ff16105b80610d215750610d0330611f54565b158015610d205750600160008054906101000a900460ff1660ff16145b5b610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d57906137d4565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d9d576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e045750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610e3b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e43611f77565b610e4b611fd0565b610e53612021565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f2e5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610f2591906136d7565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613734565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611001611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90613754565b60405180910390fd5b61106082611dcc565b61106c82826001611dd7565b5050565b61107861207a565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611124575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561115b576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000831415611196576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111a085856120ca565b6111d6576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161121192919061364d565b602060405180830381600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190613196565b611299576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112a6858484611cbe565b90506112b286866120ca565b6112e8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161132391906135d2565b60206040518083038186803b15801561133b57600080fd5b505afa15801561134f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137391906131f0565b90506000811115611389576113888782612162565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113ea9392919061396b565b60405180910390a350506113fc61234c565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90613794565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611510612356565b61151a60006123d4565b565b6000841415611557576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156233848661249a565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516115c594939291906138ef565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611685576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611774576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117c061207a565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561186c575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156118a3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156118de576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190984848773ffffffffffffffffffffffffffffffffffffffff166126b49092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611944929190613691565b600060405180830381600087803b15801561195e57600080fd5b505af1158015611972573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516119d79392919061396b565b60405180910390a36119e761234c565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1c612356565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613714565b60405180910390fd5b611a95816123d4565b50565b6000341415611ad3576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611b1b906135bd565b60006040518083038185875af1925050503d8060008114611b58576040519150601f19603f3d011682016040523d82523d6000602084013e611b5d565b606091505b50509050600015158115151415611ba0576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611c0092919061392f565b60405180910390a35050565b6000821415611c47576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c5233828461249a565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611cb192919061392f565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611ceb92919061358d565b60006040518083038185875af1925050503d8060008114611d28576040519150601f19603f3d011682016040523d82523d6000602084013e611d2d565b606091505b509150915081611d69576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611da37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61273a565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dd4612356565b50565b611e037f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612744565b60000160009054906101000a900460ff1615611e2757611e228361274e565b611f4f565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6d57600080fd5b505afa925050508015611e9e57506040513d601f19601f82011682018060405250810190611e9b91906131c3565b60015b611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed4906137f4565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f39906137b4565b60405180910390fd5b50611f4e838383612807565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90613874565b60405180910390fd5b611fce612833565b565b600060019054906101000a900460ff1661201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613874565b60405180910390fd5b565b600060019054906101000a900460ff16612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206790613874565b60405180910390fd5b612078612894565b565b600260c95414156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906138b4565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401612108929190613624565b602060405180830381600087803b15801561212257600080fd5b505af1158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190613196565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122fa578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161221592919061364d565b602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122679190613196565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016122c391906138d4565b600060405180830381600087803b1580156122dd57600080fd5b505af11580156122f1573d6000803e3d6000fd5b50505050612348565b61234760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166126b49092919063ffffffff16565b5b5050565b600160c981905550565b61235e6128ed565b73ffffffffffffffffffffffffffffffffffffffff1661237c6115d4565b73ffffffffffffffffffffffffffffffffffffffff16146123d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c990613834565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561265f5761251d8330838573ffffffffffffffffffffffffffffffffffffffff166128f5909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161257a92919061364d565b602060405180830381600087803b15801561259457600080fd5b505af11580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc9190613196565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161262891906138d4565b600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050506126af565b6126ae8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166128f5909392919063ffffffff16565b5b505050565b6127358363a9059cbb60e01b84846040516024016126d392919061364d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061297e565b505050565b6000819050919050565b6000819050919050565b61275781611f54565b612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d90613814565b60405180910390fd5b806127c37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61273a565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61281083612a45565b60008251118061281d5750805b1561282e5761282c8383612a94565b505b505050565b600060019054906101000a900460ff16612882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287990613874565b60405180910390fd5b61289261288d6128ed565b6123d4565b565b600060019054906101000a900460ff166128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da90613874565b60405180910390fd5b600160c981905550565b600033905090565b612978846323b872dd60e01b858585604051602401612916939291906135ed565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061297e565b50505050565b60006129e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ac19092919063ffffffff16565b9050600081511115612a405780806020019051810190612a009190613196565b612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3690613894565b60405180910390fd5b5b505050565b612a4e8161274e565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060612ab98383604051806060016040528060278152602001613fca60279139612ad9565b905092915050565b6060612ad08484600085612b5f565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051612b0391906135a6565b600060405180830381855af49150503d8060008114612b3e576040519150601f19603f3d011682016040523d82523d6000602084013e612b43565b606091505b5091509150612b5486838387612c2c565b925050509392505050565b606082471015612ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9b90613774565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612bcd91906135a6565b60006040518083038185875af1925050503d8060008114612c0a576040519150601f19603f3d011682016040523d82523d6000602084013e612c0f565b606091505b5091509150612c2087838387612ca2565b92505050949350505050565b60608315612c8f57600083511415612c8757612c4785611f54565b612c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7d90613854565b60405180910390fd5b5b829050612c9a565b612c998383612d18565b5b949350505050565b60608315612d0557600083511415612cfd57612cbd85612d68565b612cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf390613854565b60405180910390fd5b5b829050612d10565b612d0f8383612d8b565b5b949350505050565b600082511115612d2b5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5f91906136f2565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612d9e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd291906136f2565b60405180910390fd5b6000612dee612de9846139c2565b61399d565b905082815260208101848484011115612e0a57612e09613b6a565b5b612e15848285613ab9565b509392505050565b600081359050612e2c81613f6d565b92915050565b600081519050612e4181613f84565b92915050565b600081519050612e5681613f9b565b92915050565b60008083601f840112612e7257612e71613b60565b5b8235905067ffffffffffffffff811115612e8f57612e8e613b5b565b5b602083019150836001820283011115612eab57612eaa613b65565b5b9250929050565b600082601f830112612ec757612ec6613b60565b5b8135612ed7848260208601612ddb565b91505092915050565b600081359050612eef81613fb2565b92915050565b600081519050612f0481613fb2565b92915050565b600060208284031215612f2057612f1f613b74565b5b6000612f2e84828501612e1d565b91505092915050565b60008060408385031215612f4e57612f4d613b74565b5b6000612f5c85828601612e1d565b9250506020612f6d85828601612e1d565b9150509250929050565b600080600080600060808688031215612f9357612f92613b74565b5b6000612fa188828901612e1d565b9550506020612fb288828901612e1d565b9450506040612fc388828901612ee0565b935050606086013567ffffffffffffffff811115612fe457612fe3613b6f565b5b612ff088828901612e5c565b92509250509295509295909350565b60008060006040848603121561301857613017613b74565b5b600061302686828701612e1d565b935050602084013567ffffffffffffffff81111561304757613046613b6f565b5b61305386828701612e5c565b92509250509250925092565b6000806040838503121561307657613075613b74565b5b600061308485828601612e1d565b925050602083013567ffffffffffffffff8111156130a5576130a4613b6f565b5b6130b185828601612eb2565b9150509250929050565b6000806000606084860312156130d4576130d3613b74565b5b60006130e286828701612e1d565b93505060206130f386828701612ee0565b925050604061310486828701612e1d565b9150509250925092565b60008060008060006080868803121561312a57613129613b74565b5b600061313888828901612e1d565b955050602061314988828901612ee0565b945050604061315a88828901612e1d565b935050606086013567ffffffffffffffff81111561317b5761317a613b6f565b5b61318788828901612e5c565b92509250509295509295909350565b6000602082840312156131ac576131ab613b74565b5b60006131ba84828501612e32565b91505092915050565b6000602082840312156131d9576131d8613b74565b5b60006131e784828501612e47565b91505092915050565b60006020828403121561320657613205613b74565b5b600061321484828501612ef5565b91505092915050565b61322681613a36565b82525050565b61323581613a54565b82525050565b60006132478385613a09565b9350613254838584613ab9565b61325d83613b79565b840190509392505050565b60006132748385613a1a565b9350613281838584613ab9565b82840190509392505050565b6000613298826139f3565b6132a28185613a09565b93506132b2818560208601613ac8565b6132bb81613b79565b840191505092915050565b60006132d1826139f3565b6132db8185613a1a565b93506132eb818560208601613ac8565b80840191505092915050565b61330081613a95565b82525050565b61330f81613aa7565b82525050565b6000613320826139fe565b61332a8185613a25565b935061333a818560208601613ac8565b61334381613b79565b840191505092915050565b600061335b602683613a25565b915061336682613b8a565b604082019050919050565b600061337e602c83613a25565b915061338982613bd9565b604082019050919050565b60006133a1602c83613a25565b91506133ac82613c28565b604082019050919050565b60006133c4602683613a25565b91506133cf82613c77565b604082019050919050565b60006133e7603883613a25565b91506133f282613cc6565b604082019050919050565b600061340a602983613a25565b915061341582613d15565b604082019050919050565b600061342d602e83613a25565b915061343882613d64565b604082019050919050565b6000613450602e83613a25565b915061345b82613db3565b604082019050919050565b6000613473602d83613a25565b915061347e82613e02565b604082019050919050565b6000613496602083613a25565b91506134a182613e51565b602082019050919050565b60006134b9600083613a09565b91506134c482613e7a565b600082019050919050565b60006134dc600083613a1a565b91506134e782613e7a565b600082019050919050565b60006134ff601d83613a25565b915061350a82613e7d565b602082019050919050565b6000613522602b83613a25565b915061352d82613ea6565b604082019050919050565b6000613545602a83613a25565b915061355082613ef5565b604082019050919050565b6000613568601f83613a25565b915061357382613f44565b602082019050919050565b61358781613a7e565b82525050565b600061359a828486613268565b91508190509392505050565b60006135b282846132c6565b915081905092915050565b60006135c8826134cf565b9150819050919050565b60006020820190506135e7600083018461321d565b92915050565b6000606082019050613602600083018661321d565b61360f602083018561321d565b61361c604083018461357e565b949350505050565b6000604082019050613639600083018561321d565b61364660208301846132f7565b9392505050565b6000604082019050613662600083018561321d565b61366f602083018461357e565b9392505050565b600060208201905061368b600083018461322c565b92915050565b600060208201905081810360008301526136ac81848661323b565b90509392505050565b600060208201905081810360008301526136cf818461328d565b905092915050565b60006020820190506136ec6000830184613306565b92915050565b6000602082019050818103600083015261370c8184613315565b905092915050565b6000602082019050818103600083015261372d8161334e565b9050919050565b6000602082019050818103600083015261374d81613371565b9050919050565b6000602082019050818103600083015261376d81613394565b9050919050565b6000602082019050818103600083015261378d816133b7565b9050919050565b600060208201905081810360008301526137ad816133da565b9050919050565b600060208201905081810360008301526137cd816133fd565b9050919050565b600060208201905081810360008301526137ed81613420565b9050919050565b6000602082019050818103600083015261380d81613443565b9050919050565b6000602082019050818103600083015261382d81613466565b9050919050565b6000602082019050818103600083015261384d81613489565b9050919050565b6000602082019050818103600083015261386d816134f2565b9050919050565b6000602082019050818103600083015261388d81613515565b9050919050565b600060208201905081810360008301526138ad81613538565b9050919050565b600060208201905081810360008301526138cd8161355b565b9050919050565b60006020820190506138e9600083018461357e565b92915050565b6000606082019050613904600083018761357e565b613911602083018661321d565b818103604083015261392481848661323b565b905095945050505050565b6000606082019050613944600083018561357e565b613951602083018461321d565b8181036040830152613962816134ac565b90509392505050565b6000604082019050613980600083018661357e565b818103602083015261399381848661323b565b9050949350505050565b60006139a76139b8565b90506139b38282613afb565b919050565b6000604051905090565b600067ffffffffffffffff8211156139dd576139dc613b2c565b5b6139e682613b79565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613a4182613a5e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613aa082613a7e565b9050919050565b6000613ab282613a88565b9050919050565b82818337600083830152505050565b60005b83811015613ae6578082015181840152602081019050613acb565b83811115613af5576000848401525b50505050565b613b0482613b79565b810181811067ffffffffffffffff82111715613b2357613b22613b2c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613f7681613a36565b8114613f8157600080fd5b50565b613f8d81613a48565b8114613f9857600080fd5b50565b613fa481613a54565b8114613faf57600080fd5b50565b613fbb81613a7e565b8114613fc657600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122071c5d8f02c0c4967eb288874e4451bc4ee75b35d49d0b3560a1136ba07a133ca64736f6c63430008070033", } // GatewayEVMABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go index fe03c8af..b45457cd 100644 --- a/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/pkg/contracts/prototypes/evm/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -32,7 +32,7 @@ var ( // GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RevertedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"revertWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaConnector\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207506291c2cc1340a6799328d29a82686f260d59d78d6f67136dac5bd6578979464736f6c63430008070033", + Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613f1861008160003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d431fcc4399349f48c7db34c81b6c68de55fb20be12bb7fc941bdb48c9369ed464736f6c63430008070033", } // GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/receiverevm.sol/receiverevm.go b/pkg/contracts/prototypes/evm/receiverevm.sol/receiverevm.go index 0780dd48..b8a793d6 100644 --- a/pkg/contracts/prototypes/evm/receiverevm.sol/receiverevm.go +++ b/pkg/contracts/prototypes/evm/receiverevm.sol/receiverevm.go @@ -32,7 +32,7 @@ var ( // ReceiverEVMMetaData contains all meta data concerning the ReceiverEVM contract. var ReceiverEVMMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"ReceivedERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ReceivedNoParams\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"strs\",\"type\":\"string[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"nums\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"ReceivedNonPayable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"ReceivedPayable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ReceivedRevert\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"receiveERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"receiveERC20Partial\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"receiveNoParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"strs\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"nums\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"receiveNonPayable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"receivePayable\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b506001600081905550611453806100286000396000f3fe6080604052600436106100595760003560e01c8063357fc5a2146100625780636ed701691461008b5780638fcaa0b5146100a2578063c5131691146100cb578063e04d4f97146100f4578063f05b6abf1461011057610060565b3661006057005b005b34801561006e57600080fd5b5061008960048036038101906100849190610ae2565b610139565b005b34801561009757600080fd5b506100a06101b8565b005b3480156100ae57600080fd5b506100c960048036038101906100c49190610a26565b6101f1565b005b3480156100d757600080fd5b506100f260048036038101906100ed9190610ae2565b610230565b005b61010e60048036038101906101099190610a73565b6102fc565b005b34801561011c57600080fd5b506101376004803603810190610132919061096e565b610340565b005b610141610382565b61016e3382858573ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338484846040516101a39493929190610eba565b60405180910390a16101b361045b565b505050565b7fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0336040516101e79190610de3565b60405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161022493929190610e88565b60405180910390a15050565b610238610382565b6000600284610247919061116f565b90506000811415610284576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b13383838673ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338285856040516102e69493929190610eba565b60405180910390a1506102f761045b565b505050565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610333959493929190610eff565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103759493929190610e35565b60405180910390a1505050565b600260005414156103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90610fdb565b60405180910390fd5b6002600081905550565b610455846323b872dd60e01b8585856040516024016103f393929190610dfe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610465565b50505050565b6001600081905550565b60006104c7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661052c9092919063ffffffff16565b905060008151111561052757808060200190518101906104e791906109f9565b610526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051d90610fbb565b60405180910390fd5b5b505050565b606061053b8484600085610544565b90509392505050565b606082471015610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090610f7b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516105b29190610dcc565b60006040518083038185875af1925050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b509150915061060587838387610611565b92505050949350505050565b606083156106745760008351141561066c5761062c85610687565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290610f9b565b60405180910390fd5b5b82905061067f565b61067e83836106aa565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106bd5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f19190610f59565b60405180910390fd5b600061070d61070884611020565b610ffb565b905080838252602082019050828560208602820111156107305761072f6112c3565b5b60005b8581101561077e57813567ffffffffffffffff811115610756576107556112be565b5b808601610763898261092b565b85526020850194506020840193505050600181019050610733565b5050509392505050565b600061079b6107968461104c565b610ffb565b905080838252602082019050828560208602820111156107be576107bd6112c3565b5b60005b858110156107ee57816107d48882610959565b8452602084019350602083019250506001810190506107c1565b5050509392505050565b600061080b61080684611078565b610ffb565b905082815260208101848484011115610827576108266112c8565b5b6108328482856111e8565b509392505050565b600081359050610849816113d8565b92915050565b600082601f830112610864576108636112be565b5b81356108748482602086016106fa565b91505092915050565b600082601f830112610892576108916112be565b5b81356108a2848260208601610788565b91505092915050565b6000813590506108ba816113ef565b92915050565b6000815190506108cf816113ef565b92915050565b60008083601f8401126108eb576108ea6112be565b5b8235905067ffffffffffffffff811115610908576109076112b9565b5b602083019150836001820283011115610924576109236112c3565b5b9250929050565b600082601f8301126109405761093f6112be565b5b81356109508482602086016107f8565b91505092915050565b60008135905061096881611406565b92915050565b600080600060608486031215610987576109866112d2565b5b600084013567ffffffffffffffff8111156109a5576109a46112cd565b5b6109b18682870161084f565b935050602084013567ffffffffffffffff8111156109d2576109d16112cd565b5b6109de8682870161087d565b92505060406109ef868287016108ab565b9150509250925092565b600060208284031215610a0f57610a0e6112d2565b5b6000610a1d848285016108c0565b91505092915050565b60008060208385031215610a3d57610a3c6112d2565b5b600083013567ffffffffffffffff811115610a5b57610a5a6112cd565b5b610a67858286016108d5565b92509250509250929050565b600080600060608486031215610a8c57610a8b6112d2565b5b600084013567ffffffffffffffff811115610aaa57610aa96112cd565b5b610ab68682870161092b565b9350506020610ac786828701610959565b9250506040610ad8868287016108ab565b9150509250925092565b600080600060608486031215610afb57610afa6112d2565b5b6000610b0986828701610959565b9350506020610b1a8682870161083a565b9250506040610b2b8682870161083a565b9150509250925092565b6000610b418383610cb0565b905092915050565b6000610b558383610dae565b60208301905092915050565b610b6a816111a0565b82525050565b6000610b7b826110c9565b610b85818561110f565b935083602082028501610b97856110a9565b8060005b85811015610bd35784840389528151610bb48582610b35565b9450610bbf836110f5565b925060208a01995050600181019050610b9b565b50829750879550505050505092915050565b6000610bf0826110d4565b610bfa8185611120565b9350610c05836110b9565b8060005b83811015610c36578151610c1d8882610b49565b9750610c2883611102565b925050600181019050610c09565b5085935050505092915050565b610c4c816111b2565b82525050565b6000610c5e8385611131565b9350610c6b8385846111e8565b610c74836112d7565b840190509392505050565b6000610c8a826110df565b610c948185611142565b9350610ca48185602086016111f7565b80840191505092915050565b6000610cbb826110ea565b610cc5818561114d565b9350610cd58185602086016111f7565b610cde816112d7565b840191505092915050565b6000610cf4826110ea565b610cfe818561115e565b9350610d0e8185602086016111f7565b610d17816112d7565b840191505092915050565b6000610d2f60268361115e565b9150610d3a826112e8565b604082019050919050565b6000610d52601d8361115e565b9150610d5d82611337565b602082019050919050565b6000610d75602a8361115e565b9150610d8082611360565b604082019050919050565b6000610d98601f8361115e565b9150610da3826113af565b602082019050919050565b610db7816111de565b82525050565b610dc6816111de565b82525050565b6000610dd88284610c7f565b915081905092915050565b6000602082019050610df86000830184610b61565b92915050565b6000606082019050610e136000830186610b61565b610e206020830185610b61565b610e2d6040830184610dbd565b949350505050565b6000608082019050610e4a6000830187610b61565b8181036020830152610e5c8186610b70565b90508181036040830152610e708185610be5565b9050610e7f6060830184610c43565b95945050505050565b6000604082019050610e9d6000830186610b61565b8181036020830152610eb0818486610c52565b9050949350505050565b6000608082019050610ecf6000830187610b61565b610edc6020830186610dbd565b610ee96040830185610b61565b610ef66060830184610b61565b95945050505050565b600060a082019050610f146000830188610b61565b610f216020830187610dbd565b8181036040830152610f338186610ce9565b9050610f426060830185610dbd565b610f4f6080830184610c43565b9695505050505050565b60006020820190508181036000830152610f738184610ce9565b905092915050565b60006020820190508181036000830152610f9481610d22565b9050919050565b60006020820190508181036000830152610fb481610d45565b9050919050565b60006020820190508181036000830152610fd481610d68565b9050919050565b60006020820190508181036000830152610ff481610d8b565b9050919050565b6000611005611016565b9050611011828261122a565b919050565b6000604051905090565b600067ffffffffffffffff82111561103b5761103a61128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110675761106661128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110935761109261128a565b5b61109c826112d7565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061117a826111de565b9150611185836111de565b9250826111955761119461125b565b5b828204905092915050565b60006111ab826111be565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156112155780820151818401526020810190506111fa565b83811115611224576000848401525b50505050565b611233826112d7565b810181811067ffffffffffffffff821117156112525761125161128a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6113e1816111a0565b81146113ec57600080fd5b50565b6113f8816111b2565b811461140357600080fd5b50565b61140f816111de565b811461141a57600080fd5b5056fea2646970667358221220806b40b0ed017d4b60c2eaaa0b400159c25423da3eb36986617bf147e45550f364736f6c63430008070033", + Bin: "0x608060405234801561001057600080fd5b506001600081905550611453806100286000396000f3fe6080604052600436106100595760003560e01c8063357fc5a2146100625780636ed701691461008b5780638fcaa0b5146100a2578063c5131691146100cb578063e04d4f97146100f4578063f05b6abf1461011057610060565b3661006057005b005b34801561006e57600080fd5b5061008960048036038101906100849190610ae2565b610139565b005b34801561009757600080fd5b506100a06101b8565b005b3480156100ae57600080fd5b506100c960048036038101906100c49190610a26565b6101f1565b005b3480156100d757600080fd5b506100f260048036038101906100ed9190610ae2565b610230565b005b61010e60048036038101906101099190610a73565b6102fc565b005b34801561011c57600080fd5b506101376004803603810190610132919061096e565b610340565b005b610141610382565b61016e3382858573ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338484846040516101a39493929190610eba565b60405180910390a16101b361045b565b505050565b7fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0336040516101e79190610de3565b60405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161022493929190610e88565b60405180910390a15050565b610238610382565b6000600284610247919061116f565b90506000811415610284576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b13383838673ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338285856040516102e69493929190610eba565b60405180910390a1506102f761045b565b505050565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610333959493929190610eff565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103759493929190610e35565b60405180910390a1505050565b600260005414156103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90610fdb565b60405180910390fd5b6002600081905550565b610455846323b872dd60e01b8585856040516024016103f393929190610dfe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610465565b50505050565b6001600081905550565b60006104c7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661052c9092919063ffffffff16565b905060008151111561052757808060200190518101906104e791906109f9565b610526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051d90610fbb565b60405180910390fd5b5b505050565b606061053b8484600085610544565b90509392505050565b606082471015610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090610f7b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516105b29190610dcc565b60006040518083038185875af1925050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b509150915061060587838387610611565b92505050949350505050565b606083156106745760008351141561066c5761062c85610687565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290610f9b565b60405180910390fd5b5b82905061067f565b61067e83836106aa565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106bd5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f19190610f59565b60405180910390fd5b600061070d61070884611020565b610ffb565b905080838252602082019050828560208602820111156107305761072f6112c3565b5b60005b8581101561077e57813567ffffffffffffffff811115610756576107556112be565b5b808601610763898261092b565b85526020850194506020840193505050600181019050610733565b5050509392505050565b600061079b6107968461104c565b610ffb565b905080838252602082019050828560208602820111156107be576107bd6112c3565b5b60005b858110156107ee57816107d48882610959565b8452602084019350602083019250506001810190506107c1565b5050509392505050565b600061080b61080684611078565b610ffb565b905082815260208101848484011115610827576108266112c8565b5b6108328482856111e8565b509392505050565b600081359050610849816113d8565b92915050565b600082601f830112610864576108636112be565b5b81356108748482602086016106fa565b91505092915050565b600082601f830112610892576108916112be565b5b81356108a2848260208601610788565b91505092915050565b6000813590506108ba816113ef565b92915050565b6000815190506108cf816113ef565b92915050565b60008083601f8401126108eb576108ea6112be565b5b8235905067ffffffffffffffff811115610908576109076112b9565b5b602083019150836001820283011115610924576109236112c3565b5b9250929050565b600082601f8301126109405761093f6112be565b5b81356109508482602086016107f8565b91505092915050565b60008135905061096881611406565b92915050565b600080600060608486031215610987576109866112d2565b5b600084013567ffffffffffffffff8111156109a5576109a46112cd565b5b6109b18682870161084f565b935050602084013567ffffffffffffffff8111156109d2576109d16112cd565b5b6109de8682870161087d565b92505060406109ef868287016108ab565b9150509250925092565b600060208284031215610a0f57610a0e6112d2565b5b6000610a1d848285016108c0565b91505092915050565b60008060208385031215610a3d57610a3c6112d2565b5b600083013567ffffffffffffffff811115610a5b57610a5a6112cd565b5b610a67858286016108d5565b92509250509250929050565b600080600060608486031215610a8c57610a8b6112d2565b5b600084013567ffffffffffffffff811115610aaa57610aa96112cd565b5b610ab68682870161092b565b9350506020610ac786828701610959565b9250506040610ad8868287016108ab565b9150509250925092565b600080600060608486031215610afb57610afa6112d2565b5b6000610b0986828701610959565b9350506020610b1a8682870161083a565b9250506040610b2b8682870161083a565b9150509250925092565b6000610b418383610cb0565b905092915050565b6000610b558383610dae565b60208301905092915050565b610b6a816111a0565b82525050565b6000610b7b826110c9565b610b85818561110f565b935083602082028501610b97856110a9565b8060005b85811015610bd35784840389528151610bb48582610b35565b9450610bbf836110f5565b925060208a01995050600181019050610b9b565b50829750879550505050505092915050565b6000610bf0826110d4565b610bfa8185611120565b9350610c05836110b9565b8060005b83811015610c36578151610c1d8882610b49565b9750610c2883611102565b925050600181019050610c09565b5085935050505092915050565b610c4c816111b2565b82525050565b6000610c5e8385611131565b9350610c6b8385846111e8565b610c74836112d7565b840190509392505050565b6000610c8a826110df565b610c948185611142565b9350610ca48185602086016111f7565b80840191505092915050565b6000610cbb826110ea565b610cc5818561114d565b9350610cd58185602086016111f7565b610cde816112d7565b840191505092915050565b6000610cf4826110ea565b610cfe818561115e565b9350610d0e8185602086016111f7565b610d17816112d7565b840191505092915050565b6000610d2f60268361115e565b9150610d3a826112e8565b604082019050919050565b6000610d52601d8361115e565b9150610d5d82611337565b602082019050919050565b6000610d75602a8361115e565b9150610d8082611360565b604082019050919050565b6000610d98601f8361115e565b9150610da3826113af565b602082019050919050565b610db7816111de565b82525050565b610dc6816111de565b82525050565b6000610dd88284610c7f565b915081905092915050565b6000602082019050610df86000830184610b61565b92915050565b6000606082019050610e136000830186610b61565b610e206020830185610b61565b610e2d6040830184610dbd565b949350505050565b6000608082019050610e4a6000830187610b61565b8181036020830152610e5c8186610b70565b90508181036040830152610e708185610be5565b9050610e7f6060830184610c43565b95945050505050565b6000604082019050610e9d6000830186610b61565b8181036020830152610eb0818486610c52565b9050949350505050565b6000608082019050610ecf6000830187610b61565b610edc6020830186610dbd565b610ee96040830185610b61565b610ef66060830184610b61565b95945050505050565b600060a082019050610f146000830188610b61565b610f216020830187610dbd565b8181036040830152610f338186610ce9565b9050610f426060830185610dbd565b610f4f6080830184610c43565b9695505050505050565b60006020820190508181036000830152610f738184610ce9565b905092915050565b60006020820190508181036000830152610f9481610d22565b9050919050565b60006020820190508181036000830152610fb481610d45565b9050919050565b60006020820190508181036000830152610fd481610d68565b9050919050565b60006020820190508181036000830152610ff481610d8b565b9050919050565b6000611005611016565b9050611011828261122a565b919050565b6000604051905090565b600067ffffffffffffffff82111561103b5761103a61128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110675761106661128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110935761109261128a565b5b61109c826112d7565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061117a826111de565b9150611185836111de565b9250826111955761119461125b565b5b828204905092915050565b60006111ab826111be565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156112155780820151818401526020810190506111fa565b83811115611224576000848401525b50505050565b611233826112d7565b810181811067ffffffffffffffff821117156112525761125161128a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6113e1816111a0565b81146113ec57600080fd5b50565b6113f8816111b2565b811461140357600080fd5b50565b61140f816111de565b811461141a57600080fd5b5056fea2646970667358221220c31e8a5ca88f5ae54034b6491a4128b8c7599ac4cdb009070ccdd45a512dc07f64736f6c63430008070033", } // ReceiverEVMABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/testerc20.sol/testerc20.go b/pkg/contracts/prototypes/evm/testerc20.sol/testerc20.go index c8fd605c..c684251a 100644 --- a/pkg/contracts/prototypes/evm/testerc20.sol/testerc20.go +++ b/pkg/contracts/prototypes/evm/testerc20.sol/testerc20.go @@ -32,7 +32,7 @@ var ( // TestERC20MetaData contains all meta data concerning the TestERC20 contract. var TestERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220fcfdc568a663fff3ad57cec6847cf2da019cf465788683cdfa49393f729d6a9f64736f6c63430008070033", + Bin: "0x60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea26469706673582212203c8c0934d33c58546e4ab2e4e41476df7926eae7ae1412541fc4d914f04b2c8364736f6c63430008070033", } // TestERC20ABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go b/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go index 16797a2e..39397ae5 100644 --- a/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go +++ b/pkg/contracts/prototypes/evm/zetaconnectornative.sol/zetaconnectornative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b5060405162001638380380620016388339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c61132b6200030d6000396000818161020201528181610284015281816103f0015281816104b5015281816105b30152818161063501526107130152600081816101e001528181610248015281816104910152818161059101526105f9015261132b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610c56565b61014c565b005b6100b860048036038101906100b39190610c03565b61035a565b005b6100c261048f565b6040516100cf9190610f68565b60405180910390f35b6100e06104b3565b6040516100ed9190610e9f565b60405180910390f35b6100fe6104d7565b60405161010b9190610e9f565b60405180910390f35b61012e60048036038101906101299190610c56565b6104fd565b005b61014a60048036038101906101459190610d0b565b61070b565b005b61015461075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102467f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016102c7959493929190610ef1565b600060405180830381600087803b1580156102e157600080fd5b505af11580156102f5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161034393929190611040565b60405180910390a2610353610831565b5050505050565b61036261075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61043483837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161047a9190611025565b60405180910390a261048a610831565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61050561075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105f77f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610678959493929190610ef1565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516106f493929190611040565b60405180910390a2610704610831565b5050505050565b6107583330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661083b909392919063ffffffff16565b50565b600260005414156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890611005565b60405180910390fd5b6002600081905550565b61082c8363a9059cbb60e01b84846040516024016107ca929190610f3f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b505050565b6001600081905550565b6108be846323b872dd60e01b85858560405160240161085c93929190610eba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b50505050565b6000610926826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661098b9092919063ffffffff16565b905060008151111561098657808060200190518101906109469190610cde565b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90610fe5565b60405180910390fd5b5b505050565b606061099a84846000856109a3565b90509392505050565b6060824710156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90610fa5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a119190610e88565b60006040518083038185875af1925050503d8060008114610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b5091509150610a6487838387610a70565b92505050949350505050565b60608315610ad357600083511415610acb57610a8b85610ae6565b610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190610fc5565b60405180910390fd5b5b829050610ade565b610add8383610b09565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610b1c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190610f83565b60405180910390fd5b600081359050610b6881611299565b92915050565b600081519050610b7d816112b0565b92915050565b600081359050610b92816112c7565b92915050565b60008083601f840112610bae57610bad611184565b5b8235905067ffffffffffffffff811115610bcb57610bca61117f565b5b602083019150836001820283011115610be757610be6611189565b5b9250929050565b600081359050610bfd816112de565b92915050565b600080600060608486031215610c1c57610c1b611193565b5b6000610c2a86828701610b59565b9350506020610c3b86828701610bee565b9250506040610c4c86828701610b83565b9150509250925092565b600080600080600060808688031215610c7257610c71611193565b5b6000610c8088828901610b59565b9550506020610c9188828901610bee565b945050604086013567ffffffffffffffff811115610cb257610cb161118e565b5b610cbe88828901610b98565b93509350506060610cd188828901610b83565b9150509295509295909350565b600060208284031215610cf457610cf3611193565b5b6000610d0284828501610b6e565b91505092915050565b600060208284031215610d2157610d20611193565b5b6000610d2f84828501610bee565b91505092915050565b610d41816110b5565b82525050565b6000610d538385611088565b9350610d6083858461113d565b610d6983611198565b840190509392505050565b6000610d7f82611072565b610d898185611099565b9350610d9981856020860161114c565b80840191505092915050565b610dae81611107565b82525050565b6000610dbf8261107d565b610dc981856110a4565b9350610dd981856020860161114c565b610de281611198565b840191505092915050565b6000610dfa6026836110a4565b9150610e05826111a9565b604082019050919050565b6000610e1d601d836110a4565b9150610e28826111f8565b602082019050919050565b6000610e40602a836110a4565b9150610e4b82611221565b604082019050919050565b6000610e63601f836110a4565b9150610e6e82611270565b602082019050919050565b610e82816110fd565b82525050565b6000610e948284610d74565b915081905092915050565b6000602082019050610eb46000830184610d38565b92915050565b6000606082019050610ecf6000830186610d38565b610edc6020830185610d38565b610ee96040830184610e79565b949350505050565b6000608082019050610f066000830188610d38565b610f136020830187610d38565b610f206040830186610e79565b8181036060830152610f33818486610d47565b90509695505050505050565b6000604082019050610f546000830185610d38565b610f616020830184610e79565b9392505050565b6000602082019050610f7d6000830184610da5565b92915050565b60006020820190508181036000830152610f9d8184610db4565b905092915050565b60006020820190508181036000830152610fbe81610ded565b9050919050565b60006020820190508181036000830152610fde81610e10565b9050919050565b60006020820190508181036000830152610ffe81610e33565b9050919050565b6000602082019050818103600083015261101e81610e56565b9050919050565b600060208201905061103a6000830184610e79565b92915050565b60006040820190506110556000830186610e79565b8181036020830152611068818486610d47565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006110c0826110dd565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111282611119565b9050919050565b60006111248261112b565b9050919050565b6000611136826110dd565b9050919050565b82818337600083830152505050565b60005b8381101561116a57808201518184015260208101905061114f565b83811115611179576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6112a2816110b5565b81146112ad57600080fd5b50565b6112b9816110c7565b81146112c457600080fd5b50565b6112d0816110d3565b81146112db57600080fd5b50565b6112e7816110fd565b81146112f257600080fd5b5056fea2646970667358221220724dfbb3e6e4b9c22a02d27916991d2dd9a38c585c03f6d0aef019c03f957ee464736f6c63430008070033", + Bin: "0x60c06040523480156200001157600080fd5b5060405162001638380380620016388339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c61132b6200030d6000396000818161020201528181610284015281816103f0015281816104b5015281816105b30152818161063501526107130152600081816101e001528181610248015281816104910152818161059101526105f9015261132b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610c56565b61014c565b005b6100b860048036038101906100b39190610c03565b61035a565b005b6100c261048f565b6040516100cf9190610f68565b60405180910390f35b6100e06104b3565b6040516100ed9190610e9f565b60405180910390f35b6100fe6104d7565b60405161010b9190610e9f565b60405180910390f35b61012e60048036038101906101299190610c56565b6104fd565b005b61014a60048036038101906101459190610d0b565b61070b565b005b61015461075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102467f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016102c7959493929190610ef1565b600060405180830381600087803b1580156102e157600080fd5b505af11580156102f5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161034393929190611040565b60405180910390a2610353610831565b5050505050565b61036261075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61043483837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161047a9190611025565b60405180910390a261048a610831565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61050561075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105f77f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610678959493929190610ef1565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516106f493929190611040565b60405180910390a2610704610831565b5050505050565b6107583330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661083b909392919063ffffffff16565b50565b600260005414156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890611005565b60405180910390fd5b6002600081905550565b61082c8363a9059cbb60e01b84846040516024016107ca929190610f3f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b505050565b6001600081905550565b6108be846323b872dd60e01b85858560405160240161085c93929190610eba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b50505050565b6000610926826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661098b9092919063ffffffff16565b905060008151111561098657808060200190518101906109469190610cde565b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90610fe5565b60405180910390fd5b5b505050565b606061099a84846000856109a3565b90509392505050565b6060824710156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90610fa5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a119190610e88565b60006040518083038185875af1925050503d8060008114610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b5091509150610a6487838387610a70565b92505050949350505050565b60608315610ad357600083511415610acb57610a8b85610ae6565b610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190610fc5565b60405180910390fd5b5b829050610ade565b610add8383610b09565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610b1c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190610f83565b60405180910390fd5b600081359050610b6881611299565b92915050565b600081519050610b7d816112b0565b92915050565b600081359050610b92816112c7565b92915050565b60008083601f840112610bae57610bad611184565b5b8235905067ffffffffffffffff811115610bcb57610bca61117f565b5b602083019150836001820283011115610be757610be6611189565b5b9250929050565b600081359050610bfd816112de565b92915050565b600080600060608486031215610c1c57610c1b611193565b5b6000610c2a86828701610b59565b9350506020610c3b86828701610bee565b9250506040610c4c86828701610b83565b9150509250925092565b600080600080600060808688031215610c7257610c71611193565b5b6000610c8088828901610b59565b9550506020610c9188828901610bee565b945050604086013567ffffffffffffffff811115610cb257610cb161118e565b5b610cbe88828901610b98565b93509350506060610cd188828901610b83565b9150509295509295909350565b600060208284031215610cf457610cf3611193565b5b6000610d0284828501610b6e565b91505092915050565b600060208284031215610d2157610d20611193565b5b6000610d2f84828501610bee565b91505092915050565b610d41816110b5565b82525050565b6000610d538385611088565b9350610d6083858461113d565b610d6983611198565b840190509392505050565b6000610d7f82611072565b610d898185611099565b9350610d9981856020860161114c565b80840191505092915050565b610dae81611107565b82525050565b6000610dbf8261107d565b610dc981856110a4565b9350610dd981856020860161114c565b610de281611198565b840191505092915050565b6000610dfa6026836110a4565b9150610e05826111a9565b604082019050919050565b6000610e1d601d836110a4565b9150610e28826111f8565b602082019050919050565b6000610e40602a836110a4565b9150610e4b82611221565b604082019050919050565b6000610e63601f836110a4565b9150610e6e82611270565b602082019050919050565b610e82816110fd565b82525050565b6000610e948284610d74565b915081905092915050565b6000602082019050610eb46000830184610d38565b92915050565b6000606082019050610ecf6000830186610d38565b610edc6020830185610d38565b610ee96040830184610e79565b949350505050565b6000608082019050610f066000830188610d38565b610f136020830187610d38565b610f206040830186610e79565b8181036060830152610f33818486610d47565b90509695505050505050565b6000604082019050610f546000830185610d38565b610f616020830184610e79565b9392505050565b6000602082019050610f7d6000830184610da5565b92915050565b60006020820190508181036000830152610f9d8184610db4565b905092915050565b60006020820190508181036000830152610fbe81610ded565b9050919050565b60006020820190508181036000830152610fde81610e10565b9050919050565b60006020820190508181036000830152610ffe81610e33565b9050919050565b6000602082019050818103600083015261101e81610e56565b9050919050565b600060208201905061103a6000830184610e79565b92915050565b60006040820190506110556000830186610e79565b8181036020830152611068818486610d47565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006110c0826110dd565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111282611119565b9050919050565b60006111248261112b565b9050919050565b6000611136826110dd565b9050919050565b82818337600083830152505050565b60005b8381101561116a57808201518184015260208101905061114f565b83811115611179576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6112a2816110b5565b81146112ad57600080fd5b50565b6112b9816110c7565b81146112c457600080fd5b50565b6112d0816110d3565b81146112db57600080fd5b50565b6112e7816110fd565b81146112f257600080fd5b5056fea2646970667358221220655dba4ad3270e6153f071458a8ebcb80a69a23cb0bf8a44ed4a1f4df173d65664736f6c63430008070033", } // ZetaConnectorNativeABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go b/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go index 21c68ebd..4e7bd6ab 100644 --- a/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/pkg/contracts/prototypes/evm/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tssAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"MaxSupplyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"WithdrawAndRevert\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"contractIGatewayEVM\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"setMaxSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"withdrawAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002553480156200003557600080fd5b506040516200158d3803806200158d83398181016040528101906200005b919062000210565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000ce5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001065750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200013e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050620002bf565b6000815190506200020a81620002a5565b92915050565b6000806000606084860312156200022c576200022b620002a0565b5b60006200023c86828701620001f9565b93505060206200024f86828701620001f9565b92505060406200026286828701620001f9565b9150509250925092565b6000620002798262000280565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002b0816200026c565b8114620002bc57600080fd5b50565b60805160601c60a05160601c611247620003466000396000818161023001528181610311015281816103fc0152818161056601528181610647015281816107550152818161083101528181610912015281816109fd0152610b9d01526000818161034d015281816103c0015281816107310152818161094e01526109c101526112476000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80635b112591116100665780635b1125911461010c5780635e3e9fef1461012a5780636f8b44b014610146578063743e0c9b14610162578063d5abeb011461017e57610093565b806302d5c89914610098578063106e6290146100b4578063116191b6146100d057806321e093b1146100ee575b600080fd5b6100b260048036038101906100ad9190610d88565b61019c565b005b6100ce60048036038101906100c99190610d35565b6104d2565b005b6100d861072f565b6040516100e59190610fbf565b60405180910390f35b6100f6610753565b6040516101039190610ef6565b60405180910390f35b610114610777565b6040516101219190610ef6565b60405180910390f35b610144600480360381019061013f9190610d88565b61079d565b005b610160600480360381019061015b9190610e10565b610ad3565b005b61017c60048036038101906101779190610e10565b610b9b565b005b610186610c2b565b6040516101939190610ffa565b60405180910390f35b6101a4610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461022b576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561029457600080fd5b505afa1580156102a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cc9190610e3d565b856102d79190611069565b111561030f576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161038c93929190610f88565b600060405180830381600087803b1580156103a657600080fd5b505af11580156103ba573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161043f959493929190610f11565b600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104bb93929190611015565b60405180910390a26104cb610c81565b5050505050565b6104da610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610561576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ca57600080fd5b505afa1580156105de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106029190610e3d565b8361060d9190611069565b1115610645576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b81526004016106a293929190610f88565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161071a9190610ffa565b60405180910390a261072a610c81565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a5610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461082c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd9190610e3d565b856108d89190611069565b1115610910576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161098d93929190610f88565b600060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610a40959493929190610f11565b600060405180830381600087803b158015610a5a57600080fd5b505af1158015610a6e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced858585604051610abc93929190611015565b60405180910390a2610acc610c81565b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c81604051610b909190610ffa565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401610bf6929190610f5f565b600060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b5050505050565b60025481565b60026000541415610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e90610fda565b60405180910390fd5b6002600081905550565b6001600081905550565b600081359050610c9a816111cc565b92915050565b600081359050610caf816111e3565b92915050565b60008083601f840112610ccb57610cca61117e565b5b8235905067ffffffffffffffff811115610ce857610ce7611179565b5b602083019150836001820283011115610d0457610d03611183565b5b9250929050565b600081359050610d1a816111fa565b92915050565b600081519050610d2f816111fa565b92915050565b600080600060608486031215610d4e57610d4d61118d565b5b6000610d5c86828701610c8b565b9350506020610d6d86828701610d0b565b9250506040610d7e86828701610ca0565b9150509250925092565b600080600080600060808688031215610da457610da361118d565b5b6000610db288828901610c8b565b9550506020610dc388828901610d0b565b945050604086013567ffffffffffffffff811115610de457610de3611188565b5b610df088828901610cb5565b93509350506060610e0388828901610ca0565b9150509295509295909350565b600060208284031215610e2657610e2561118d565b5b6000610e3484828501610d0b565b91505092915050565b600060208284031215610e5357610e5261118d565b5b6000610e6184828501610d20565b91505092915050565b610e73816110bf565b82525050565b610e82816110d1565b82525050565b6000610e948385611047565b9350610ea183858461113b565b610eaa83611192565b840190509392505050565b610ebe81611105565b82525050565b6000610ed1601f83611058565b9150610edc826111a3565b602082019050919050565b610ef0816110fb565b82525050565b6000602082019050610f0b6000830184610e6a565b92915050565b6000608082019050610f266000830188610e6a565b610f336020830187610e6a565b610f406040830186610ee7565b8181036060830152610f53818486610e88565b90509695505050505050565b6000604082019050610f746000830185610e6a565b610f816020830184610ee7565b9392505050565b6000606082019050610f9d6000830186610e6a565b610faa6020830185610ee7565b610fb76040830184610e79565b949350505050565b6000602082019050610fd46000830184610eb5565b92915050565b60006020820190508181036000830152610ff381610ec4565b9050919050565b600060208201905061100f6000830184610ee7565b92915050565b600060408201905061102a6000830186610ee7565b818103602083015261103d818486610e88565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611074826110fb565b915061107f836110fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156110b4576110b361114a565b5b828201905092915050565b60006110ca826110db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111082611117565b9050919050565b600061112282611129565b9050919050565b6000611134826110db565b9050919050565b82818337600083830152505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6111d5816110bf565b81146111e057600080fd5b50565b6111ec816110d1565b81146111f757600080fd5b50565b611203816110fb565b811461120e57600080fd5b5056fea26469706673582212201f817c0195940fddc4165c2ca6317081a920edafb2f79b81682fec2a95beb85364736f6c63430008070033", + Bin: "0x60c06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002553480156200003557600080fd5b506040516200158d3803806200158d83398181016040528101906200005b919062000210565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000ce5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001065750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200013e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050620002bf565b6000815190506200020a81620002a5565b92915050565b6000806000606084860312156200022c576200022b620002a0565b5b60006200023c86828701620001f9565b93505060206200024f86828701620001f9565b92505060406200026286828701620001f9565b9150509250925092565b6000620002798262000280565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002b0816200026c565b8114620002bc57600080fd5b50565b60805160601c60a05160601c611247620003466000396000818161023001528181610311015281816103fc0152818161056601528181610647015281816107550152818161083101528181610912015281816109fd0152610b9d01526000818161034d015281816103c0015281816107310152818161094e01526109c101526112476000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80635b112591116100665780635b1125911461010c5780635e3e9fef1461012a5780636f8b44b014610146578063743e0c9b14610162578063d5abeb011461017e57610093565b806302d5c89914610098578063106e6290146100b4578063116191b6146100d057806321e093b1146100ee575b600080fd5b6100b260048036038101906100ad9190610d88565b61019c565b005b6100ce60048036038101906100c99190610d35565b6104d2565b005b6100d861072f565b6040516100e59190610fbf565b60405180910390f35b6100f6610753565b6040516101039190610ef6565b60405180910390f35b610114610777565b6040516101219190610ef6565b60405180910390f35b610144600480360381019061013f9190610d88565b61079d565b005b610160600480360381019061015b9190610e10565b610ad3565b005b61017c60048036038101906101779190610e10565b610b9b565b005b610186610c2b565b6040516101939190610ffa565b60405180910390f35b6101a4610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461022b576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561029457600080fd5b505afa1580156102a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cc9190610e3d565b856102d79190611069565b111561030f576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161038c93929190610f88565b600060405180830381600087803b1580156103a657600080fd5b505af11580156103ba573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161043f959493929190610f11565b600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104bb93929190611015565b60405180910390a26104cb610c81565b5050505050565b6104da610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610561576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ca57600080fd5b505afa1580156105de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106029190610e3d565b8361060d9190611069565b1115610645576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b81526004016106a293929190610f88565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161071a9190610ffa565b60405180910390a261072a610c81565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a5610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461082c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd9190610e3d565b856108d89190611069565b1115610910576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161098d93929190610f88565b600060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610a40959493929190610f11565b600060405180830381600087803b158015610a5a57600080fd5b505af1158015610a6e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced858585604051610abc93929190611015565b60405180910390a2610acc610c81565b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c81604051610b909190610ffa565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401610bf6929190610f5f565b600060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b5050505050565b60025481565b60026000541415610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e90610fda565b60405180910390fd5b6002600081905550565b6001600081905550565b600081359050610c9a816111cc565b92915050565b600081359050610caf816111e3565b92915050565b60008083601f840112610ccb57610cca61117e565b5b8235905067ffffffffffffffff811115610ce857610ce7611179565b5b602083019150836001820283011115610d0457610d03611183565b5b9250929050565b600081359050610d1a816111fa565b92915050565b600081519050610d2f816111fa565b92915050565b600080600060608486031215610d4e57610d4d61118d565b5b6000610d5c86828701610c8b565b9350506020610d6d86828701610d0b565b9250506040610d7e86828701610ca0565b9150509250925092565b600080600080600060808688031215610da457610da361118d565b5b6000610db288828901610c8b565b9550506020610dc388828901610d0b565b945050604086013567ffffffffffffffff811115610de457610de3611188565b5b610df088828901610cb5565b93509350506060610e0388828901610ca0565b9150509295509295909350565b600060208284031215610e2657610e2561118d565b5b6000610e3484828501610d0b565b91505092915050565b600060208284031215610e5357610e5261118d565b5b6000610e6184828501610d20565b91505092915050565b610e73816110bf565b82525050565b610e82816110d1565b82525050565b6000610e948385611047565b9350610ea183858461113b565b610eaa83611192565b840190509392505050565b610ebe81611105565b82525050565b6000610ed1601f83611058565b9150610edc826111a3565b602082019050919050565b610ef0816110fb565b82525050565b6000602082019050610f0b6000830184610e6a565b92915050565b6000608082019050610f266000830188610e6a565b610f336020830187610e6a565b610f406040830186610ee7565b8181036060830152610f53818486610e88565b90509695505050505050565b6000604082019050610f746000830185610e6a565b610f816020830184610ee7565b9392505050565b6000606082019050610f9d6000830186610e6a565b610faa6020830185610ee7565b610fb76040830184610e79565b949350505050565b6000602082019050610fd46000830184610eb5565b92915050565b60006020820190508181036000830152610ff381610ec4565b9050919050565b600060208201905061100f6000830184610ee7565b92915050565b600060408201905061102a6000830186610ee7565b818103602083015261103d818486610e88565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611074826110fb565b915061107f836110fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156110b4576110b361114a565b5b828201905092915050565b60006110ca826110db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111082611117565b9050919050565b600061112282611129565b9050919050565b6000611134826110db565b9050919050565b82818337600083830152505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6111d5816110bf565b81146111e057600080fd5b50565b6111ec816110d1565b81146111f757600080fd5b50565b611203816110fb565b811461120e57600080fd5b5056fea264697066735822122044af4e37ef2ad6dd470fc1c3af732b6c36970257d67f6756302aee086afdfa4d64736f6c63430008070033", } // ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go b/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go index 744380b8..d1a6d1ca 100644 --- a/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go +++ b/pkg/contracts/prototypes/zevm/gatewayzevm.sol/gatewayzevm.go @@ -46,7 +46,7 @@ type ZContext struct { // GatewayZEVMMetaData contains all meta data concerning the GatewayZEVM contract. var GatewayZEVMMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedZetaSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientZRC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAOrFungible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20BurnFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasfee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_zetaToken\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c403e7110f39344a7464aedddcc11ad944288d8cd79a4d58fa568decbde916ef64736f6c63430008070033", + Bin: "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220378b717703092a88bbd7020c74cb919fe0a2dcf0feb2bf8581734d32a89387ac64736f6c63430008070033", } // GatewayZEVMABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/zevm/senderzevm.sol/senderzevm.go b/pkg/contracts/prototypes/zevm/senderzevm.sol/senderzevm.go index c008d1e3..3d75b28a 100644 --- a/pkg/contracts/prototypes/zevm/senderzevm.sol/senderzevm.go +++ b/pkg/contracts/prototypes/zevm/senderzevm.sol/senderzevm.go @@ -32,7 +32,7 @@ var ( // SenderZEVMMetaData contains all meta data concerning the SenderZEVM contract. var SenderZEVMMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gateway\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"callReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gateway\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"withdrawAndCallReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50604051610bcd380380610bcd8339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610ab6806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b614610062578063a0a1730b14610080575b600080fd5b610060600480360381019061005b91906105fd565b61009c565b005b61006a6102af565b6040516100779190610761565b60405180910390f35b61009a6004803603810190610095919061055e565b6102d3565b005b60008383836040516024016100b39392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b815260040161018d92919061077c565b602060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610531565b610215576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0888888856040518563ffffffff1660e01b815260040161027494939291906107dc565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383836040516024016102ea9392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c86836040518363ffffffff1660e01b81526004016103c49291906107a5565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050505050505050565b600061041061040b84610892565b61086d565b90508281526020810184848401111561042c5761042b610a1b565b5b610437848285610974565b509392505050565b600061045261044d846108c3565b61086d565b90508281526020810184848401111561046e5761046d610a1b565b5b610479848285610974565b509392505050565b60008135905061049081610a3b565b92915050565b6000813590506104a581610a52565b92915050565b6000815190506104ba81610a52565b92915050565b600082601f8301126104d5576104d4610a16565b5b81356104e58482602086016103fd565b91505092915050565b600082601f83011261050357610502610a16565b5b813561051384826020860161043f565b91505092915050565b60008135905061052b81610a69565b92915050565b60006020828403121561054757610546610a25565b5b6000610555848285016104ab565b91505092915050565b6000806000806080858703121561057857610577610a25565b5b600085013567ffffffffffffffff81111561059657610595610a20565b5b6105a2878288016104c0565b945050602085013567ffffffffffffffff8111156105c3576105c2610a20565b5b6105cf878288016104ee565b93505060406105e08782880161051c565b92505060606105f187828801610496565b91505092959194509250565b60008060008060008060c0878903121561061a57610619610a25565b5b600087013567ffffffffffffffff81111561063857610637610a20565b5b61064489828a016104c0565b965050602061065589828a0161051c565b955050604061066689828a01610481565b945050606087013567ffffffffffffffff81111561068757610686610a20565b5b61069389828a016104ee565b93505060806106a489828a0161051c565b92505060a06106b589828a01610496565b9150509295509295509295565b6106cb8161092c565b82525050565b6106da8161093e565b82525050565b60006106eb826108f4565b6106f5818561090a565b9350610705818560208601610983565b61070e81610a2a565b840191505092915050565b6000610724826108ff565b61072e818561091b565b935061073e818560208601610983565b61074781610a2a565b840191505092915050565b61075b8161096a565b82525050565b600060208201905061077660008301846106c2565b92915050565b600060408201905061079160008301856106c2565b61079e6020830184610752565b9392505050565b600060408201905081810360008301526107bf81856106e0565b905081810360208301526107d381846106e0565b90509392505050565b600060808201905081810360008301526107f681876106e0565b90506108056020830186610752565b61081260408301856106c2565b818103606083015261082481846106e0565b905095945050505050565b600060608201905081810360008301526108498186610719565b90506108586020830185610752565b61086560408301846106d1565b949350505050565b6000610877610888565b905061088382826109b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156108ad576108ac6109e7565b5b6108b682610a2a565b9050602081019050919050565b600067ffffffffffffffff8211156108de576108dd6109e7565b5b6108e782610a2a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006109378261094a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156109a1578082015181840152602081019050610986565b838111156109b0576000848401525b50505050565b6109bf82610a2a565b810181811067ffffffffffffffff821117156109de576109dd6109e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610a448161092c565b8114610a4f57600080fd5b50565b610a5b8161093e565b8114610a6657600080fd5b50565b610a728161096a565b8114610a7d57600080fd5b5056fea264697066735822122041c2abc6b3a41841b90c67bd1f0fcea62676455ba61882c22a78070a8128a5b164736f6c63430008070033", + Bin: "0x608060405234801561001057600080fd5b50604051610bcd380380610bcd8339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610ab6806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b614610062578063a0a1730b14610080575b600080fd5b610060600480360381019061005b91906105fd565b61009c565b005b61006a6102af565b6040516100779190610761565b60405180910390f35b61009a6004803603810190610095919061055e565b6102d3565b005b60008383836040516024016100b39392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b815260040161018d92919061077c565b602060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610531565b610215576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0888888856040518563ffffffff1660e01b815260040161027494939291906107dc565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383836040516024016102ea9392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c86836040518363ffffffff1660e01b81526004016103c49291906107a5565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050505050505050565b600061041061040b84610892565b61086d565b90508281526020810184848401111561042c5761042b610a1b565b5b610437848285610974565b509392505050565b600061045261044d846108c3565b61086d565b90508281526020810184848401111561046e5761046d610a1b565b5b610479848285610974565b509392505050565b60008135905061049081610a3b565b92915050565b6000813590506104a581610a52565b92915050565b6000815190506104ba81610a52565b92915050565b600082601f8301126104d5576104d4610a16565b5b81356104e58482602086016103fd565b91505092915050565b600082601f83011261050357610502610a16565b5b813561051384826020860161043f565b91505092915050565b60008135905061052b81610a69565b92915050565b60006020828403121561054757610546610a25565b5b6000610555848285016104ab565b91505092915050565b6000806000806080858703121561057857610577610a25565b5b600085013567ffffffffffffffff81111561059657610595610a20565b5b6105a2878288016104c0565b945050602085013567ffffffffffffffff8111156105c3576105c2610a20565b5b6105cf878288016104ee565b93505060406105e08782880161051c565b92505060606105f187828801610496565b91505092959194509250565b60008060008060008060c0878903121561061a57610619610a25565b5b600087013567ffffffffffffffff81111561063857610637610a20565b5b61064489828a016104c0565b965050602061065589828a0161051c565b955050604061066689828a01610481565b945050606087013567ffffffffffffffff81111561068757610686610a20565b5b61069389828a016104ee565b93505060806106a489828a0161051c565b92505060a06106b589828a01610496565b9150509295509295509295565b6106cb8161092c565b82525050565b6106da8161093e565b82525050565b60006106eb826108f4565b6106f5818561090a565b9350610705818560208601610983565b61070e81610a2a565b840191505092915050565b6000610724826108ff565b61072e818561091b565b935061073e818560208601610983565b61074781610a2a565b840191505092915050565b61075b8161096a565b82525050565b600060208201905061077660008301846106c2565b92915050565b600060408201905061079160008301856106c2565b61079e6020830184610752565b9392505050565b600060408201905081810360008301526107bf81856106e0565b905081810360208301526107d381846106e0565b90509392505050565b600060808201905081810360008301526107f681876106e0565b90506108056020830186610752565b61081260408301856106c2565b818103606083015261082481846106e0565b905095945050505050565b600060608201905081810360008301526108498186610719565b90506108586020830185610752565b61086560408301846106d1565b949350505050565b6000610877610888565b905061088382826109b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156108ad576108ac6109e7565b5b6108b682610a2a565b9050602081019050919050565b600067ffffffffffffffff8211156108de576108dd6109e7565b5b6108e782610a2a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006109378261094a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156109a1578082015181840152602081019050610986565b838111156109b0576000848401525b50505050565b6109bf82610a2a565b810181811067ffffffffffffffff821117156109de576109dd6109e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610a448161092c565b8114610a4f57600080fd5b50565b610a5b8161093e565b8114610a6657600080fd5b50565b610a728161096a565b8114610a7d57600080fd5b5056fea26469706673582212208589b7fc9598202eaf46c595855edab9daadb2791c73209ade07df3bbb24033e64736f6c63430008070033", } // SenderZEVMABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/prototypes/zevm/testzcontract.sol/testzcontract.go b/pkg/contracts/prototypes/zevm/testzcontract.sol/testzcontract.go index 812c1023..d476465a 100644 --- a/pkg/contracts/prototypes/zevm/testzcontract.sol/testzcontract.go +++ b/pkg/contracts/prototypes/zevm/testzcontract.sol/testzcontract.go @@ -46,7 +46,7 @@ type ZContext struct { // TestZContractMetaData contains all meta data concerning the TestZContract contract. var TestZContractMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ContextData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"ContextDataRevert\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structzContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structrevertContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b506107e0806100206000396000f3fe60806040526004361061002d5760003560e01c806369582bee14610036578063de43156e1461005f57610034565b3661003457005b005b34801561004257600080fd5b5061005d60048036038101906100589190610346565b610088565b005b34801561006b57600080fd5b50610086600480360381019061008191906103ea565b610115565b005b606060008383905011156100a85782828101906100a591906102fd565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999488680600001906100d99190610575565b8860200160208101906100ec91906102d0565b8960400135338660405161010596959493929190610512565b60405180910390a1505050505050565b6060600083839050111561013557828281019061013291906102fd565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e8680600001906101669190610575565b88602001602081019061017991906102d0565b8960400135338660405161019296959493929190610512565b60405180910390a1505050505050565b60006101b56101b0846105fd565b6105d8565b9050828152602081018484840111156101d1576101d061075c565b5b6101dc848285610697565b509392505050565b6000813590506101f38161077c565b92915050565b60008083601f84011261020f5761020e61073e565b5b8235905067ffffffffffffffff81111561022c5761022b610739565b5b60208301915083600182028301111561024857610247610752565b5b9250929050565b600082601f8301126102645761026361073e565b5b81356102748482602086016101a2565b91505092915050565b60006060828403121561029357610292610748565b5b81905092915050565b6000606082840312156102b2576102b1610748565b5b81905092915050565b6000813590506102ca81610793565b92915050565b6000602082840312156102e6576102e5610766565b5b60006102f4848285016101e4565b91505092915050565b60006020828403121561031357610312610766565b5b600082013567ffffffffffffffff81111561033157610330610761565b5b61033d8482850161024f565b91505092915050565b60008060008060006080868803121561036257610361610766565b5b600086013567ffffffffffffffff8111156103805761037f610761565b5b61038c8882890161027d565b955050602061039d888289016101e4565b94505060406103ae888289016102bb565b935050606086013567ffffffffffffffff8111156103cf576103ce610761565b5b6103db888289016101f9565b92509250509295509295909350565b60008060008060006080868803121561040657610405610766565b5b600086013567ffffffffffffffff81111561042457610423610761565b5b6104308882890161029c565b9550506020610441888289016101e4565b9450506040610452888289016102bb565b935050606086013567ffffffffffffffff81111561047357610472610761565b5b61047f888289016101f9565b92509250509295509295909350565b6104978161065b565b82525050565b60006104a98385610639565b93506104b6838584610697565b6104bf8361076b565b840190509392505050565b60006104d58261062e565b6104df818561064a565b93506104ef8185602086016106a6565b6104f88161076b565b840191505092915050565b61050c8161068d565b82525050565b600060a082019050818103600083015261052d81888a61049d565b905061053c602083018761048e565b6105496040830186610503565b610556606083018561048e565b818103608083015261056881846104ca565b9050979650505050505050565b600080833560016020038436030381126105925761059161074d565b5b80840192508235915067ffffffffffffffff8211156105b4576105b3610743565b5b6020830192506001820236038313156105d0576105cf610757565b5b509250929050565b60006105e26105f3565b90506105ee82826106d9565b919050565b6000604051905090565b600067ffffffffffffffff8211156106185761061761070a565b5b6106218261076b565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006106668261066d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156106c45780820151818401526020810190506106a9565b838111156106d3576000848401525b50505050565b6106e28261076b565b810181811067ffffffffffffffff821117156107015761070061070a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6107858161065b565b811461079057600080fd5b50565b61079c8161068d565b81146107a757600080fd5b5056fea2646970667358221220d8ae51f378c28fdd3372175a2a0c40cf07b2f206830500b75e6335c89a39193164736f6c63430008070033", + Bin: "0x608060405234801561001057600080fd5b506107e0806100206000396000f3fe60806040526004361061002d5760003560e01c806369582bee14610036578063de43156e1461005f57610034565b3661003457005b005b34801561004257600080fd5b5061005d60048036038101906100589190610346565b610088565b005b34801561006b57600080fd5b50610086600480360381019061008191906103ea565b610115565b005b606060008383905011156100a85782828101906100a591906102fd565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999488680600001906100d99190610575565b8860200160208101906100ec91906102d0565b8960400135338660405161010596959493929190610512565b60405180910390a1505050505050565b6060600083839050111561013557828281019061013291906102fd565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e8680600001906101669190610575565b88602001602081019061017991906102d0565b8960400135338660405161019296959493929190610512565b60405180910390a1505050505050565b60006101b56101b0846105fd565b6105d8565b9050828152602081018484840111156101d1576101d061075c565b5b6101dc848285610697565b509392505050565b6000813590506101f38161077c565b92915050565b60008083601f84011261020f5761020e61073e565b5b8235905067ffffffffffffffff81111561022c5761022b610739565b5b60208301915083600182028301111561024857610247610752565b5b9250929050565b600082601f8301126102645761026361073e565b5b81356102748482602086016101a2565b91505092915050565b60006060828403121561029357610292610748565b5b81905092915050565b6000606082840312156102b2576102b1610748565b5b81905092915050565b6000813590506102ca81610793565b92915050565b6000602082840312156102e6576102e5610766565b5b60006102f4848285016101e4565b91505092915050565b60006020828403121561031357610312610766565b5b600082013567ffffffffffffffff81111561033157610330610761565b5b61033d8482850161024f565b91505092915050565b60008060008060006080868803121561036257610361610766565b5b600086013567ffffffffffffffff8111156103805761037f610761565b5b61038c8882890161027d565b955050602061039d888289016101e4565b94505060406103ae888289016102bb565b935050606086013567ffffffffffffffff8111156103cf576103ce610761565b5b6103db888289016101f9565b92509250509295509295909350565b60008060008060006080868803121561040657610405610766565b5b600086013567ffffffffffffffff81111561042457610423610761565b5b6104308882890161029c565b9550506020610441888289016101e4565b9450506040610452888289016102bb565b935050606086013567ffffffffffffffff81111561047357610472610761565b5b61047f888289016101f9565b92509250509295509295909350565b6104978161065b565b82525050565b60006104a98385610639565b93506104b6838584610697565b6104bf8361076b565b840190509392505050565b60006104d58261062e565b6104df818561064a565b93506104ef8185602086016106a6565b6104f88161076b565b840191505092915050565b61050c8161068d565b82525050565b600060a082019050818103600083015261052d81888a61049d565b905061053c602083018761048e565b6105496040830186610503565b610556606083018561048e565b818103608083015261056881846104ca565b9050979650505050505050565b600080833560016020038436030381126105925761059161074d565b5b80840192508235915067ffffffffffffffff8211156105b4576105b3610743565b5b6020830192506001820236038313156105d0576105cf610757565b5b509250929050565b60006105e26105f3565b90506105ee82826106d9565b919050565b6000604051905090565b600067ffffffffffffffff8211156106185761061761070a565b5b6106218261076b565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006106668261066d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156106c45780820151818401526020810190506106a9565b838111156106d3576000848401525b50505050565b6106e28261076b565b810181811067ffffffffffffffff821117156107015761070061070a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6107858161065b565b811461079057600080fd5b50565b61079c8161068d565b81146107a757600080fd5b5056fea2646970667358221220febf3f8cf5fd0742329aa443cb341b916e26ee1be7a429c48a3a28b956bd845f64736f6c63430008070033", } // TestZContractABI is the input ABI used to generate the binding from. diff --git a/testFoundry/GatewayEVMUpgrade.t.sol b/testFoundry/GatewayEVMUpgrade.t.sol index fe2d5391..84e563a7 100644 --- a/testFoundry/GatewayEVMUpgrade.t.sol +++ b/testFoundry/GatewayEVMUpgrade.t.sol @@ -13,10 +13,10 @@ import "contracts/prototypes/evm/TestERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import "contracts/prototypes/evm/IGatewayEVM.sol"; -import "contracts/prototypes/evm/IReceiverEVM.sol"; import {Upgrades} from "openzeppelin-foundry-upgrades/LegacyUpgrades.sol"; +import "contracts/prototypes/evm/IGatewayEVM.sol"; +import "contracts/prototypes/evm/IReceiverEVM.sol"; contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents, IReceiverEVMEvents { using SafeERC20 for IERC20; event ExecutedV2(address indexed destination, uint256 value, bytes data); @@ -59,6 +59,8 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents token.mint(owner, 1000000); token.transfer(address(custody), 500000); + + vm.deal(tssAddress, 1 ether); } function testUpgradeAndForwardCallToReceivePayable() public { @@ -86,7 +88,8 @@ contract GatewayEVMUUPSUpgradeTest is Test, IGatewayEVMErrors, IGatewayEVMEvents emit ReceivedPayable(address(gateway), value, str, num, flag); vm.expectEmit(true, true, true, true, address(gateway)); emit ExecutedV2(address(receiver), value, data); - gateway.execute{value: value}(address(receiver), data); + vm.prank(tssAddress); + gatewayUpgradeTest.execute{value: value}(address(receiver), data); assertEq(custodyBeforeUpgrade, gateway.custody()); assertEq(tssBeforeUpgrade, gateway.tssAddress()); diff --git a/testFoundry/ZetaConnectorNonNative.t.sol b/testFoundry/ZetaConnectorNonNative.t.sol index 79905972..a8f5540a 100644 --- a/testFoundry/ZetaConnectorNonNative.t.sol +++ b/testFoundry/ZetaConnectorNonNative.t.sol @@ -32,9 +32,6 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent address destination; address tssAddress; - error ExceedsMaxSupply(); - event MaxSupplyUpdated(uint256 maxSupply); - function setUp() public { owner = address(this); destination = address(0x1234); @@ -81,23 +78,6 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent assertEq(balanceAfter, amount); } - function testWithdrawFailsIfMaxSupplyReached() public { - uint256 amount = 100000; - uint256 balanceBefore = zetaToken.balanceOf(destination); - assertEq(balanceBefore, 0); - bytes32 internalSendHash = ""; - - uint256 maxSupply = 90000; - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit MaxSupplyUpdated(maxSupply); - vm.prank(tssAddress); - zetaConnector.setMaxSupply(maxSupply); - - vm.prank(tssAddress); - vm.expectRevert(ExceedsMaxSupply.selector); - zetaConnector.withdraw(destination, amount, internalSendHash); - } - function testWithdrawFailsIfSenderIsNotTSS() public { uint256 amount = 100000; bytes32 internalSendHash = ""; @@ -152,22 +132,6 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); } - function testWithdrawAndCallReceiveERC20FailsIfMaxSupplyReached() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodeWithSignature("receiveERC20(uint256,address,address)", amount, address(zetaToken), destination); - - uint256 maxSupply = 90000; - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit MaxSupplyUpdated(maxSupply); - vm.prank(tssAddress); - zetaConnector.setMaxSupply(maxSupply); - - vm.prank(tssAddress); - vm.expectRevert(ExceedsMaxSupply.selector); - zetaConnector.withdrawAndCall(address(receiver), amount, data, internalSendHash); - } - function testWithdrawAndCallReceiveNoParams() public { uint256 amount = 100000; bytes32 internalSendHash = ""; @@ -275,7 +239,7 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent assertEq(balanceGateway, 0); } - function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { + function testWithdrawAndRevertFailsIfSenderIsNotTSS() public { uint256 amount = 100000; bytes32 internalSendHash = ""; bytes memory data = abi.encodePacked("hello"); @@ -284,20 +248,4 @@ contract ZetaConnectorNonNativeTest is Test, IGatewayEVMErrors, IGatewayEVMEvent vm.expectRevert(InvalidSender.selector); zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); } - - function testWithdrawAndRevertFailsIfMaxSupplyReached() public { - uint256 amount = 100000; - bytes32 internalSendHash = ""; - bytes memory data = abi.encodePacked("hello"); - - uint256 maxSupply = 90000; - vm.expectEmit(true, true, true, true, address(zetaConnector)); - emit MaxSupplyUpdated(maxSupply); - vm.prank(tssAddress); - zetaConnector.setMaxSupply(maxSupply); - - vm.prank(tssAddress); - vm.expectRevert(ExceedsMaxSupply.selector); - zetaConnector.withdrawAndRevert(address(receiver), amount, data, internalSendHash); - } } \ No newline at end of file diff --git a/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts index 0c59a62b..8e29f895 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ERC20CustodyNew__factory.ts @@ -231,7 +231,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200130d3803806200130d833981810160405281019062000037919062000180565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200021a565b6000815190506200017a8162000200565b92915050565b600080604083850312156200019a5762000199620001fb565b5b6000620001aa8582860162000169565b9250506020620001bd8582860162000169565b9150509250929050565b6000620001d482620001db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200020b81620001c7565b81146200021757600080fd5b50565b6110e3806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063116191b61461005c57806321fc65f21461007a5780635b11259114610096578063c8a02362146100b4578063d9caed12146100d0575b600080fd5b6100646100ec565b6040516100719190610d41565b60405180910390f35b610094600480360381019061008f9190610a93565b610112565b005b61009e6102fb565b6040516100ab9190610caf565b60405180910390f35b6100ce60048036038101906100c99190610a93565b610321565b005b6100ea60048036038101906100e59190610a40565b61050a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61011a610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101a1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ee600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b8152600401610251959493929190610cca565b600060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102e493929190610e19565b60405180910390a36102f461070c565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610329610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610460959493929190610cca565b600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516104f393929190610e19565b60405180910390a361050361070c565b5050505050565b610512610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610599576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c482828573ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516106219190610dfe565b60405180910390a361063161070c565b505050565b6002600054141561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610dde565b60405180910390fd5b6002600081905550565b6107078363a9059cbb60e01b84846040516024016106a5929190610d18565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610716565b505050565b6001600081905550565b6000610778826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107dd9092919063ffffffff16565b90506000815111156107d857808060200190518101906107989190610b1b565b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce90610dbe565b60405180910390fd5b5b505050565b60606107ec84846000856107f5565b90509392505050565b60608247101561083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190610d7e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108639190610c98565b60006040518083038185875af1925050503d80600081146108a0576040519150601f19603f3d011682016040523d82523d6000602084013e6108a5565b606091505b50915091506108b6878383876108c2565b92505050949350505050565b606083156109255760008351141561091d576108dd85610938565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390610d9e565b60405180910390fd5b5b829050610930565b61092f838361095b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561096e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a29190610d5c565b60405180910390fd5b6000813590506109ba81611068565b92915050565b6000815190506109cf8161107f565b92915050565b60008083601f8401126109eb576109ea610f53565b5b8235905067ffffffffffffffff811115610a0857610a07610f4e565b5b602083019150836001820283011115610a2457610a23610f58565b5b9250929050565b600081359050610a3a81611096565b92915050565b600080600060608486031215610a5957610a58610f62565b5b6000610a67868287016109ab565b9350506020610a78868287016109ab565b9250506040610a8986828701610a2b565b9150509250925092565b600080600080600060808688031215610aaf57610aae610f62565b5b6000610abd888289016109ab565b9550506020610ace888289016109ab565b9450506040610adf88828901610a2b565b935050606086013567ffffffffffffffff811115610b0057610aff610f5d565b5b610b0c888289016109d5565b92509250509295509295909350565b600060208284031215610b3157610b30610f62565b5b6000610b3f848285016109c0565b91505092915050565b610b5181610e8e565b82525050565b6000610b638385610e61565b9350610b70838584610f0c565b610b7983610f67565b840190509392505050565b6000610b8f82610e4b565b610b998185610e72565b9350610ba9818560208601610f1b565b80840191505092915050565b610bbe81610ed6565b82525050565b6000610bcf82610e56565b610bd98185610e7d565b9350610be9818560208601610f1b565b610bf281610f67565b840191505092915050565b6000610c0a602683610e7d565b9150610c1582610f78565b604082019050919050565b6000610c2d601d83610e7d565b9150610c3882610fc7565b602082019050919050565b6000610c50602a83610e7d565b9150610c5b82610ff0565b604082019050919050565b6000610c73601f83610e7d565b9150610c7e8261103f565b602082019050919050565b610c9281610ecc565b82525050565b6000610ca48284610b84565b915081905092915050565b6000602082019050610cc46000830184610b48565b92915050565b6000608082019050610cdf6000830188610b48565b610cec6020830187610b48565b610cf96040830186610c89565b8181036060830152610d0c818486610b57565b90509695505050505050565b6000604082019050610d2d6000830185610b48565b610d3a6020830184610c89565b9392505050565b6000602082019050610d566000830184610bb5565b92915050565b60006020820190508181036000830152610d768184610bc4565b905092915050565b60006020820190508181036000830152610d9781610bfd565b9050919050565b60006020820190508181036000830152610db781610c20565b9050919050565b60006020820190508181036000830152610dd781610c43565b9050919050565b60006020820190508181036000830152610df781610c66565b9050919050565b6000602082019050610e136000830184610c89565b92915050565b6000604082019050610e2e6000830186610c89565b8181036020830152610e41818486610b57565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610e9982610eac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ee182610ee8565b9050919050565b6000610ef382610efa565b9050919050565b6000610f0582610eac565b9050919050565b82818337600083830152505050565b60005b83811015610f39578082015181840152602081019050610f1e565b83811115610f48576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61107181610e8e565b811461107c57600080fd5b50565b61108881610ea0565b811461109357600080fd5b50565b61109f81610ecc565b81146110aa57600080fd5b5056fea264697066735822122044d7b7350c040f6f061e6eaa0b8afe75af494d90bcf301dc70592c8d6e1c014564736f6c63430008070033"; + "0x60806040523480156200001157600080fd5b506040516200130d3803806200130d833981810160405281019062000037919062000180565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620000a75750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15620000df576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200021a565b6000815190506200017a8162000200565b92915050565b600080604083850312156200019a5762000199620001fb565b5b6000620001aa8582860162000169565b9250506020620001bd8582860162000169565b9150509250929050565b6000620001d482620001db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200020b81620001c7565b81146200021757600080fd5b50565b6110e3806200022a6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063116191b61461005c57806321fc65f21461007a5780635b11259114610096578063c8a02362146100b4578063d9caed12146100d0575b600080fd5b6100646100ec565b6040516100719190610d41565b60405180910390f35b610094600480360381019061008f9190610a93565b610112565b005b61009e6102fb565b6040516100ab9190610caf565b60405180910390f35b6100ce60048036038101906100c99190610a93565b610321565b005b6100ea60048036038101906100e59190610a40565b61050a565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61011a610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101a1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101ee600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635131ab5986868686866040518663ffffffff1660e01b8152600401610251959493929190610cca565b600060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102e493929190610e19565b60405180910390a36102f461070c565b5050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610329610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103fd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848773ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8969bd486868686866040518663ffffffff1660e01b8152600401610460959493929190610cca565b600060405180830381600087803b15801561047a57600080fd5b505af115801561048e573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516104f393929190610e19565b60405180910390a361050361070c565b5050505050565b610512610636565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610599576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c482828573ffffffffffffffffffffffffffffffffffffffff166106869092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516106219190610dfe565b60405180910390a361063161070c565b505050565b6002600054141561067c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067390610dde565b60405180910390fd5b6002600081905550565b6107078363a9059cbb60e01b84846040516024016106a5929190610d18565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610716565b505050565b6001600081905550565b6000610778826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107dd9092919063ffffffff16565b90506000815111156107d857808060200190518101906107989190610b1b565b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce90610dbe565b60405180910390fd5b5b505050565b60606107ec84846000856107f5565b90509392505050565b60608247101561083a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083190610d7e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108639190610c98565b60006040518083038185875af1925050503d80600081146108a0576040519150601f19603f3d011682016040523d82523d6000602084013e6108a5565b606091505b50915091506108b6878383876108c2565b92505050949350505050565b606083156109255760008351141561091d576108dd85610938565b61091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390610d9e565b60405180910390fd5b5b829050610930565b61092f838361095b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561096e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a29190610d5c565b60405180910390fd5b6000813590506109ba81611068565b92915050565b6000815190506109cf8161107f565b92915050565b60008083601f8401126109eb576109ea610f53565b5b8235905067ffffffffffffffff811115610a0857610a07610f4e565b5b602083019150836001820283011115610a2457610a23610f58565b5b9250929050565b600081359050610a3a81611096565b92915050565b600080600060608486031215610a5957610a58610f62565b5b6000610a67868287016109ab565b9350506020610a78868287016109ab565b9250506040610a8986828701610a2b565b9150509250925092565b600080600080600060808688031215610aaf57610aae610f62565b5b6000610abd888289016109ab565b9550506020610ace888289016109ab565b9450506040610adf88828901610a2b565b935050606086013567ffffffffffffffff811115610b0057610aff610f5d565b5b610b0c888289016109d5565b92509250509295509295909350565b600060208284031215610b3157610b30610f62565b5b6000610b3f848285016109c0565b91505092915050565b610b5181610e8e565b82525050565b6000610b638385610e61565b9350610b70838584610f0c565b610b7983610f67565b840190509392505050565b6000610b8f82610e4b565b610b998185610e72565b9350610ba9818560208601610f1b565b80840191505092915050565b610bbe81610ed6565b82525050565b6000610bcf82610e56565b610bd98185610e7d565b9350610be9818560208601610f1b565b610bf281610f67565b840191505092915050565b6000610c0a602683610e7d565b9150610c1582610f78565b604082019050919050565b6000610c2d601d83610e7d565b9150610c3882610fc7565b602082019050919050565b6000610c50602a83610e7d565b9150610c5b82610ff0565b604082019050919050565b6000610c73601f83610e7d565b9150610c7e8261103f565b602082019050919050565b610c9281610ecc565b82525050565b6000610ca48284610b84565b915081905092915050565b6000602082019050610cc46000830184610b48565b92915050565b6000608082019050610cdf6000830188610b48565b610cec6020830187610b48565b610cf96040830186610c89565b8181036060830152610d0c818486610b57565b90509695505050505050565b6000604082019050610d2d6000830185610b48565b610d3a6020830184610c89565b9392505050565b6000602082019050610d566000830184610bb5565b92915050565b60006020820190508181036000830152610d768184610bc4565b905092915050565b60006020820190508181036000830152610d9781610bfd565b9050919050565b60006020820190508181036000830152610db781610c20565b9050919050565b60006020820190508181036000830152610dd781610c43565b9050919050565b60006020820190508181036000830152610df781610c66565b9050919050565b6000602082019050610e136000830184610c89565b92915050565b6000604082019050610e2e6000830186610c89565b8181036020830152610e41818486610b57565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610e9982610eac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610ee182610ee8565b9050919050565b6000610ef382610efa565b9050919050565b6000610f0582610eac565b9050919050565b82818337600083830152505050565b60005b83811015610f39578082015181840152602081019050610f1e565b83811115610f48576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61107181610e8e565b811461107c57600080fd5b50565b61108881610ea0565b811461109357600080fd5b50565b61109f81610ecc565b81146110aa57600080fd5b5056fea26469706673582212205340b8d5ae0d440bae0160f1fe56f515f5471e0710e9b5f33c8b948d4d8769e364736f6c63430008070033"; type ERC20CustodyNewConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts b/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts index 655c9e4b..f0150f4d 100644 --- a/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/GatewayEVMUpgradeTest__factory.ts @@ -705,7 +705,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613c44610081600039600081816109a701528181610a3601528181610da001528181610e2f015261118f0152613c446000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612b28565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612c1d565b6105c0565b005b6101a660048036038101906101a19190612c1d565b61062c565b6040516101b391906132d3565b60405180910390f35b3480156101c857600080fd5b506101d161069a565b6040516101de91906131f0565b60405180910390f35b61020160048036038101906101fc9190612c1d565b6106c0565b005b61021d60048036038101906102189190612c1d565b61083a565b005b34801561022b57600080fd5b5061024660048036038101906102419190612b28565b6109a5565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612b55565b610b2e565b005b61028b60048036038101906102869190612c7d565b610d9e565b005b34801561029957600080fd5b506102b460048036038101906102af9190612b95565b610edb565b005b3480156102c257600080fd5b506102cb61118b565b6040516102d89190613294565b60405180910390f35b3480156102ed57600080fd5b506102f6611244565b60405161030391906131f0565b60405180910390f35b34801561031857600080fd5b5061032161126a565b60405161032e91906131f0565b60405180910390f35b34801561034357600080fd5b5061034c611290565b005b34801561035a57600080fd5b5061037560048036038101906103709190612d2c565b6112a4565b005b34801561038357600080fd5b5061038c61135c565b60405161039991906131f0565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612b28565b611386565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612b95565b6114b9565b005b34801561040057600080fd5b5061040961160c565b60405161041691906131f0565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612b28565b611632565b005b610462600480360381019061045d9190612b28565b6116b6565b005b34801561047057600080fd5b5061048b60048036038101906104869190612cd9565b61182a565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f9291906132af565b60405180910390a3505050565b6060600061063b8585856118dc565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161068793929190613589565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003414156106fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610743906131db565b60006040518083038185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b505090506000151581151514156107c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161082c949392919061350d565b60405180910390a350505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1634604051610861906131db565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b5091509150816108df576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b815260040161091a9291906132af565b600060405180830381600087803b15801561093457600080fd5b505af1158015610948573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161099693929190613589565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a73611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac090613372565b60405180910390fd5b610ad2816119ea565b610b2b81600067ffffffffffffffff811115610af157610af061374a565b5b6040519080825280601f01601f191660200182016040528015610b235781602001600182028036833780820191505090505b5060006119f5565b50565b60008060019054906101000a900460ff16159050808015610b5f5750600160008054906101000a900460ff1660ff16105b80610b8c5750610b6e30611b72565b158015610b8b5750600160008054906101000a900460ff1660ff16145b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906133f2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610c08576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610c6f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ca6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cae611b95565b610cb6611bee565b610cbe611c3f565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610d995760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610d9091906132f5565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613352565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e6c611993565b73ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb990613372565b60405180910390fd5b610ecb826119ea565b610ed7828260016119f5565b5050565b610ee3611c98565b6000831415610f1e576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f288585611ce8565b610f5e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401610f9992919061326b565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb9190612db4565b611021576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061102e8584846118dc565b905061103a8686611ce8565b611070576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110ab91906131f0565b60206040518083038186803b1580156110c357600080fd5b505afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190612e0e565b90506000811115611111576111108786611d80565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b738287878760405161117293929190613589565b60405180910390a35050611184611f6a565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611212906133b2565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611298611f74565b6112a26000611ff2565b565b60008414156112df576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112ea3384866120b8565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161134d949392919061350d565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611475576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c1611c98565b60008314156114fc576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61152784848773ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b81526004016115629291906132af565b600060405180830381600087803b15801561157c57600080fd5b505af1158015611590573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516115f593929190613589565b60405180910390a3611605611f6a565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61163a611f74565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613332565b60405180910390fd5b6116b381611ff2565b50565b60003414156116f1576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611739906131db565b60006040518083038185875af1925050503d8060008114611776576040519150601f19603f3d011682016040523d82523d6000602084013e61177b565b606091505b505090506000151581151514156117be576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600060405161181e92919061354d565b60405180910390a35050565b6000821415611865576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118703382846120b8565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516118cf92919061354d565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff163486866040516119099291906131ab565b60006040518083038185875af1925050503d8060008114611946576040519150601f19603f3d011682016040523d82523d6000602084013e61194b565b606091505b509150915081611987576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b60006119c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119f2611f74565b50565b611a217f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612362565b60000160009054906101000a900460ff1615611a4557611a408361236c565b611b6d565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8b57600080fd5b505afa925050508015611abc57506040513d601f19601f82011682018060405250810190611ab99190612de1565b60015b611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af290613412565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b57906133d2565b60405180910390fd5b50611b6c838383612425565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb90613492565b60405180910390fd5b611bec612451565b565b600060019054906101000a900460ff16611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613492565b60405180910390fd5b565b600060019054906101000a900460ff16611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613492565b60405180910390fd5b611c966124b2565b565b600260c9541415611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd5906134d2565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611d26929190613242565b602060405180830381600087803b158015611d4057600080fd5b505af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d789190612db4565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f18578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611e3392919061326b565b602060405180830381600087803b158015611e4d57600080fd5b505af1158015611e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e859190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b8152600401611ee191906134f2565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050611f66565b611f6560fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166122d29092919063ffffffff16565b5b5050565b600160c981905550565b611f7c61250b565b73ffffffffffffffffffffffffffffffffffffffff16611f9a61135c565b73ffffffffffffffffffffffffffffffffffffffff1614611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613452565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561227d5761213b8330838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161219892919061326b565b602060405180830381600087803b1580156121b257600080fd5b505af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190612db4565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161224691906134f2565b600060405180830381600087803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b505050506122cd565b6122cc8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff16612513909392919063ffffffff16565b5b505050565b6123538363a9059cbb60e01b84846040516024016122f192919061326b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b505050565b6000819050919050565b6000819050919050565b61237581611b72565b6123b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ab90613432565b60405180910390fd5b806123e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612358565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61242e83612663565b60008251118061243b5750805b1561244c5761244a83836126b2565b505b505050565b600060019054906101000a900460ff166124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613492565b60405180910390fd5b6124b06124ab61250b565b611ff2565b565b600060019054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890613492565b60405180910390fd5b600160c981905550565b600033905090565b612596846323b872dd60e01b8585856040516024016125349392919061320b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061259c565b50505050565b60006125fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166126df9092919063ffffffff16565b905060008151111561265e578080602001905181019061261e9190612db4565b61265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906134b2565b60405180910390fd5b5b505050565b61266c8161236c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606126d78383604051806060016040528060278152602001613be8602791396126f7565b905092915050565b60606126ee848460008561277d565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272191906131c4565b600060405180830381855af49150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915091506127728683838761284a565b925050509392505050565b6060824710156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990613392565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516127eb91906131c4565b60006040518083038185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b509150915061283e878383876128c0565b92505050949350505050565b606083156128ad576000835114156128a55761286585611b72565b6128a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289b90613472565b60405180910390fd5b5b8290506128b8565b6128b78383612936565b5b949350505050565b606083156129235760008351141561291b576128db85612986565b61291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190613472565b60405180910390fd5b5b82905061292e565b61292d83836129a9565b5b949350505050565b6000825111156129495781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d9190613310565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156129bc5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f09190613310565b60405180910390fd5b6000612a0c612a07846135e0565b6135bb565b905082815260208101848484011115612a2857612a27613788565b5b612a338482856136d7565b509392505050565b600081359050612a4a81613b8b565b92915050565b600081519050612a5f81613ba2565b92915050565b600081519050612a7481613bb9565b92915050565b60008083601f840112612a9057612a8f61377e565b5b8235905067ffffffffffffffff811115612aad57612aac613779565b5b602083019150836001820283011115612ac957612ac8613783565b5b9250929050565b600082601f830112612ae557612ae461377e565b5b8135612af58482602086016129f9565b91505092915050565b600081359050612b0d81613bd0565b92915050565b600081519050612b2281613bd0565b92915050565b600060208284031215612b3e57612b3d613792565b5b6000612b4c84828501612a3b565b91505092915050565b60008060408385031215612b6c57612b6b613792565b5b6000612b7a85828601612a3b565b9250506020612b8b85828601612a3b565b9150509250929050565b600080600080600060808688031215612bb157612bb0613792565b5b6000612bbf88828901612a3b565b9550506020612bd088828901612a3b565b9450506040612be188828901612afe565b935050606086013567ffffffffffffffff811115612c0257612c0161378d565b5b612c0e88828901612a7a565b92509250509295509295909350565b600080600060408486031215612c3657612c35613792565b5b6000612c4486828701612a3b565b935050602084013567ffffffffffffffff811115612c6557612c6461378d565b5b612c7186828701612a7a565b92509250509250925092565b60008060408385031215612c9457612c93613792565b5b6000612ca285828601612a3b565b925050602083013567ffffffffffffffff811115612cc357612cc261378d565b5b612ccf85828601612ad0565b9150509250929050565b600080600060608486031215612cf257612cf1613792565b5b6000612d0086828701612a3b565b9350506020612d1186828701612afe565b9250506040612d2286828701612a3b565b9150509250925092565b600080600080600060808688031215612d4857612d47613792565b5b6000612d5688828901612a3b565b9550506020612d6788828901612afe565b9450506040612d7888828901612a3b565b935050606086013567ffffffffffffffff811115612d9957612d9861378d565b5b612da588828901612a7a565b92509250509295509295909350565b600060208284031215612dca57612dc9613792565b5b6000612dd884828501612a50565b91505092915050565b600060208284031215612df757612df6613792565b5b6000612e0584828501612a65565b91505092915050565b600060208284031215612e2457612e23613792565b5b6000612e3284828501612b13565b91505092915050565b612e4481613654565b82525050565b612e5381613672565b82525050565b6000612e658385613627565b9350612e728385846136d7565b612e7b83613797565b840190509392505050565b6000612e928385613638565b9350612e9f8385846136d7565b82840190509392505050565b6000612eb682613611565b612ec08185613627565b9350612ed08185602086016136e6565b612ed981613797565b840191505092915050565b6000612eef82613611565b612ef98185613638565b9350612f098185602086016136e6565b80840191505092915050565b612f1e816136b3565b82525050565b612f2d816136c5565b82525050565b6000612f3e8261361c565b612f488185613643565b9350612f588185602086016136e6565b612f6181613797565b840191505092915050565b6000612f79602683613643565b9150612f84826137a8565b604082019050919050565b6000612f9c602c83613643565b9150612fa7826137f7565b604082019050919050565b6000612fbf602c83613643565b9150612fca82613846565b604082019050919050565b6000612fe2602683613643565b9150612fed82613895565b604082019050919050565b6000613005603883613643565b9150613010826138e4565b604082019050919050565b6000613028602983613643565b915061303382613933565b604082019050919050565b600061304b602e83613643565b915061305682613982565b604082019050919050565b600061306e602e83613643565b9150613079826139d1565b604082019050919050565b6000613091602d83613643565b915061309c82613a20565b604082019050919050565b60006130b4602083613643565b91506130bf82613a6f565b602082019050919050565b60006130d7600083613627565b91506130e282613a98565b600082019050919050565b60006130fa600083613638565b915061310582613a98565b600082019050919050565b600061311d601d83613643565b915061312882613a9b565b602082019050919050565b6000613140602b83613643565b915061314b82613ac4565b604082019050919050565b6000613163602a83613643565b915061316e82613b13565b604082019050919050565b6000613186601f83613643565b915061319182613b62565b602082019050919050565b6131a58161369c565b82525050565b60006131b8828486612e86565b91508190509392505050565b60006131d08284612ee4565b915081905092915050565b60006131e6826130ed565b9150819050919050565b60006020820190506132056000830184612e3b565b92915050565b60006060820190506132206000830186612e3b565b61322d6020830185612e3b565b61323a604083018461319c565b949350505050565b60006040820190506132576000830185612e3b565b6132646020830184612f15565b9392505050565b60006040820190506132806000830185612e3b565b61328d602083018461319c565b9392505050565b60006020820190506132a96000830184612e4a565b92915050565b600060208201905081810360008301526132ca818486612e59565b90509392505050565b600060208201905081810360008301526132ed8184612eab565b905092915050565b600060208201905061330a6000830184612f24565b92915050565b6000602082019050818103600083015261332a8184612f33565b905092915050565b6000602082019050818103600083015261334b81612f6c565b9050919050565b6000602082019050818103600083015261336b81612f8f565b9050919050565b6000602082019050818103600083015261338b81612fb2565b9050919050565b600060208201905081810360008301526133ab81612fd5565b9050919050565b600060208201905081810360008301526133cb81612ff8565b9050919050565b600060208201905081810360008301526133eb8161301b565b9050919050565b6000602082019050818103600083015261340b8161303e565b9050919050565b6000602082019050818103600083015261342b81613061565b9050919050565b6000602082019050818103600083015261344b81613084565b9050919050565b6000602082019050818103600083015261346b816130a7565b9050919050565b6000602082019050818103600083015261348b81613110565b9050919050565b600060208201905081810360008301526134ab81613133565b9050919050565b600060208201905081810360008301526134cb81613156565b9050919050565b600060208201905081810360008301526134eb81613179565b9050919050565b6000602082019050613507600083018461319c565b92915050565b6000606082019050613522600083018761319c565b61352f6020830186612e3b565b8181036040830152613542818486612e59565b905095945050505050565b6000606082019050613562600083018561319c565b61356f6020830184612e3b565b8181036040830152613580816130ca565b90509392505050565b600060408201905061359e600083018661319c565b81810360208301526135b1818486612e59565b9050949350505050565b60006135c56135d6565b90506135d18282613719565b919050565b6000604051905090565b600067ffffffffffffffff8211156135fb576135fa61374a565b5b61360482613797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061365f8261367c565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be8261369c565b9050919050565b60006136d0826136a6565b9050919050565b82818337600083830152505050565b60005b838110156137045780820151818401526020810190506136e9565b83811115613713576000848401525b50505050565b61372282613797565b810181811067ffffffffffffffff821117156137415761374061374a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613b9481613654565b8114613b9f57600080fd5b50565b613bab81613666565b8114613bb657600080fd5b50565b613bc281613672565b8114613bcd57600080fd5b50565b613bd98161369c565b8114613be457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207506291c2cc1340a6799328d29a82686f260d59d78d6f67136dac5bd6578979464736f6c63430008070033"; + "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c613f1861008160003960008181610ab501528181610b4401528181610eae01528181610f3d01526113800152613f186000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612dfc565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612ef1565b6105c0565b005b6101a660048036038101906101a19190612ef1565b61062c565b6040516101b391906135a7565b60405180910390f35b3480156101c857600080fd5b506101d1610721565b6040516101de91906134c4565b60405180910390f35b61020160048036038101906101fc9190612ef1565b610747565b005b61021d60048036038101906102189190612ef1565b6108c1565b005b34801561022b57600080fd5b5061024660048036038101906102419190612dfc565b610ab3565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612e29565b610c3c565b005b61028b60048036038101906102869190612f51565b610eac565b005b34801561029957600080fd5b506102b460048036038101906102af9190612e69565b610fe9565b005b3480156102c257600080fd5b506102cb61137c565b6040516102d89190613568565b60405180910390f35b3480156102ed57600080fd5b506102f6611435565b60405161030391906134c4565b60405180910390f35b34801561031857600080fd5b5061032161145b565b60405161032e91906134c4565b60405180910390f35b34801561034357600080fd5b5061034c611481565b005b34801561035a57600080fd5b5061037560048036038101906103709190613000565b611495565b005b34801561038357600080fd5b5061038c61154d565b60405161039991906134c4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612dfc565b611577565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e69565b6116aa565b005b34801561040057600080fd5b506104096118e0565b60405161041691906134c4565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612dfc565b611906565b005b610462600480360381019061045d9190612dfc565b61198a565b005b34801561047057600080fd5b5061048b60048036038101906104869190612fad565b611afe565b005b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610515576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561057c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161061f929190613583565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c2858585611bb0565b90508473ffffffffffffffffffffffffffffffffffffffff167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161070e9392919061385d565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610782576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516107ca906134af565b60006040518083038185875af1925050503d8060008114610807576040519150601f19603f3d011682016040523d82523d6000602084013e61080c565b606091505b5050905060001515811515141561084f576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516108b394939291906137e1565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610948576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff163460405161096f906134af565b60006040518083038185875af1925050503d80600081146109ac576040519150601f19603f3d011682016040523d82523d6000602084013e6109b1565b606091505b5091509150816109ed576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610a28929190613583565b600060405180830381600087803b158015610a4257600080fd5b505af1158015610a56573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610aa49392919061385d565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b81611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613646565b60405180910390fd5b610be081611cbe565b610c3981600067ffffffffffffffff811115610bff57610bfe613a1e565b5b6040519080825280601f01601f191660200182016040528015610c315781602001600182028036833780820191505090505b506000611cc9565b50565b60008060019054906101000a900460ff16159050808015610c6d5750600160008054906101000a900460ff1660ff16105b80610c9a5750610c7c30611e46565b158015610c995750600160008054906101000a900460ff1660ff16145b5b610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906136c6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d16576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d7d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610db4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbc611e69565b610dc4611ec2565b610dcc611f13565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610ea75760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610e9e91906135c9565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290613626565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7a611c67565b73ffffffffffffffffffffffffffffffffffffffff1614610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613646565b60405180910390fd5b610fd982611cbe565b610fe582826001611cc9565b5050565b610ff1611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561109d575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156110d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561110f576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111198585611fbc565b61114f576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161118a92919061353f565b602060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613088565b611212576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061121f858484611bb0565b905061122b8686611fbc565b611261576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161129c91906134c4565b60206040518083038186803b1580156112b457600080fd5b505afa1580156112c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ec91906130e2565b90506000811115611302576113018782612054565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113639392919061385d565b60405180910390a3505061137561223e565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613686565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611489612248565b61149360006122c6565b565b60008414156114d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114db33848661238c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48686868660405161153e94939291906137e1565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ff576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611666576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116b2611f6c565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561175e575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611795576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156117d0576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb84848773ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611836929190613583565b600060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516118c99392919061385d565b60405180910390a36118d961223e565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61190e612248565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197590613606565b60405180910390fd5b611987816122c6565b50565b60003414156119c5576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611a0d906134af565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b50509050600015158115151415611a92576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611af2929190613821565b60405180910390a35050565b6000821415611b39576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b4433828461238c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611ba3929190613821565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611bdd92919061347f565b60006040518083038185875af1925050503d8060008114611c1a576040519150601f19603f3d011682016040523d82523d6000602084013e611c1f565b606091505b509150915081611c5b576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611c957f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611cc6612248565b50565b611cf57f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612636565b60000160009054906101000a900460ff1615611d1957611d1483612640565b611e41565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5f57600080fd5b505afa925050508015611d9057506040513d601f19601f82011682018060405250810190611d8d91906130b5565b60015b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906136e6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b906136a6565b60405180910390fd5b50611e408383836126f9565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf90613766565b60405180910390fd5b611ec0612725565b565b600060019054906101000a900460ff16611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613766565b60405180910390fd5b565b600060019054906101000a900460ff16611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613766565b60405180910390fd5b611f6a612786565b565b600260c9541415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa9906137a6565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401611ffa929190613516565b602060405180830381600087803b15801561201457600080fd5b505af1158015612028573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204c9190613088565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121ec578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161210792919061353f565b602060405180830381600087803b15801561212157600080fd5b505af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121599190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016121b591906137c6565b600060405180830381600087803b1580156121cf57600080fd5b505af11580156121e3573d6000803e3d6000fd5b5050505061223a565b61223960fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166125a69092919063ffffffff16565b5b5050565b600160c981905550565b6122506127df565b73ffffffffffffffffffffffffffffffffffffffff1661226e61154d565b73ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb90613726565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125515761240f8330838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161246c92919061353f565b602060405180830381600087803b15801561248657600080fd5b505af115801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190613088565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161251a91906137c6565b600060405180830381600087803b15801561253457600080fd5b505af1158015612548573d6000803e3d6000fd5b505050506125a1565b6125a08360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166127e7909392919063ffffffff16565b5b505050565b6126278363a9059cbb60e01b84846040516024016125c592919061353f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b505050565b6000819050919050565b6000819050919050565b61264981611e46565b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613706565b60405180910390fd5b806126b57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61262c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61270283612937565b60008251118061270f5750805b156127205761271e8383612986565b505b505050565b600060019054906101000a900460ff16612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b90613766565b60405180910390fd5b61278461277f6127df565b6122c6565b565b600060019054906101000a900460ff166127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613766565b60405180910390fd5b600160c981905550565b600033905090565b61286a846323b872dd60e01b858585604051602401612808939291906134df565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612870565b50505050565b60006128d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129b39092919063ffffffff16565b905060008151111561293257808060200190518101906128f29190613088565b612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292890613786565b60405180910390fd5b5b505050565b61294081612640565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606129ab8383604051806060016040528060278152602001613ebc602791396129cb565b905092915050565b60606129c28484600085612a51565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516129f59190613498565b600060405180830381855af49150503d8060008114612a30576040519150601f19603f3d011682016040523d82523d6000602084013e612a35565b606091505b5091509150612a4686838387612b1e565b925050509392505050565b606082471015612a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8d90613666565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612abf9190613498565b60006040518083038185875af1925050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b5091509150612b1287838387612b94565b92505050949350505050565b60608315612b8157600083511415612b7957612b3985611e46565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90613746565b60405180910390fd5b5b829050612b8c565b612b8b8383612c0a565b5b949350505050565b60608315612bf757600083511415612bef57612baf85612c5a565b612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590613746565b60405180910390fd5b5b829050612c02565b612c018383612c7d565b5b949350505050565b600082511115612c1d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5191906135e4565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612c905781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc491906135e4565b60405180910390fd5b6000612ce0612cdb846138b4565b61388f565b905082815260208101848484011115612cfc57612cfb613a5c565b5b612d078482856139ab565b509392505050565b600081359050612d1e81613e5f565b92915050565b600081519050612d3381613e76565b92915050565b600081519050612d4881613e8d565b92915050565b60008083601f840112612d6457612d63613a52565b5b8235905067ffffffffffffffff811115612d8157612d80613a4d565b5b602083019150836001820283011115612d9d57612d9c613a57565b5b9250929050565b600082601f830112612db957612db8613a52565b5b8135612dc9848260208601612ccd565b91505092915050565b600081359050612de181613ea4565b92915050565b600081519050612df681613ea4565b92915050565b600060208284031215612e1257612e11613a66565b5b6000612e2084828501612d0f565b91505092915050565b60008060408385031215612e4057612e3f613a66565b5b6000612e4e85828601612d0f565b9250506020612e5f85828601612d0f565b9150509250929050565b600080600080600060808688031215612e8557612e84613a66565b5b6000612e9388828901612d0f565b9550506020612ea488828901612d0f565b9450506040612eb588828901612dd2565b935050606086013567ffffffffffffffff811115612ed657612ed5613a61565b5b612ee288828901612d4e565b92509250509295509295909350565b600080600060408486031215612f0a57612f09613a66565b5b6000612f1886828701612d0f565b935050602084013567ffffffffffffffff811115612f3957612f38613a61565b5b612f4586828701612d4e565b92509250509250925092565b60008060408385031215612f6857612f67613a66565b5b6000612f7685828601612d0f565b925050602083013567ffffffffffffffff811115612f9757612f96613a61565b5b612fa385828601612da4565b9150509250929050565b600080600060608486031215612fc657612fc5613a66565b5b6000612fd486828701612d0f565b9350506020612fe586828701612dd2565b9250506040612ff686828701612d0f565b9150509250925092565b60008060008060006080868803121561301c5761301b613a66565b5b600061302a88828901612d0f565b955050602061303b88828901612dd2565b945050604061304c88828901612d0f565b935050606086013567ffffffffffffffff81111561306d5761306c613a61565b5b61307988828901612d4e565b92509250509295509295909350565b60006020828403121561309e5761309d613a66565b5b60006130ac84828501612d24565b91505092915050565b6000602082840312156130cb576130ca613a66565b5b60006130d984828501612d39565b91505092915050565b6000602082840312156130f8576130f7613a66565b5b600061310684828501612de7565b91505092915050565b61311881613928565b82525050565b61312781613946565b82525050565b600061313983856138fb565b93506131468385846139ab565b61314f83613a6b565b840190509392505050565b6000613166838561390c565b93506131738385846139ab565b82840190509392505050565b600061318a826138e5565b61319481856138fb565b93506131a48185602086016139ba565b6131ad81613a6b565b840191505092915050565b60006131c3826138e5565b6131cd818561390c565b93506131dd8185602086016139ba565b80840191505092915050565b6131f281613987565b82525050565b61320181613999565b82525050565b6000613212826138f0565b61321c8185613917565b935061322c8185602086016139ba565b61323581613a6b565b840191505092915050565b600061324d602683613917565b915061325882613a7c565b604082019050919050565b6000613270602c83613917565b915061327b82613acb565b604082019050919050565b6000613293602c83613917565b915061329e82613b1a565b604082019050919050565b60006132b6602683613917565b91506132c182613b69565b604082019050919050565b60006132d9603883613917565b91506132e482613bb8565b604082019050919050565b60006132fc602983613917565b915061330782613c07565b604082019050919050565b600061331f602e83613917565b915061332a82613c56565b604082019050919050565b6000613342602e83613917565b915061334d82613ca5565b604082019050919050565b6000613365602d83613917565b915061337082613cf4565b604082019050919050565b6000613388602083613917565b915061339382613d43565b602082019050919050565b60006133ab6000836138fb565b91506133b682613d6c565b600082019050919050565b60006133ce60008361390c565b91506133d982613d6c565b600082019050919050565b60006133f1601d83613917565b91506133fc82613d6f565b602082019050919050565b6000613414602b83613917565b915061341f82613d98565b604082019050919050565b6000613437602a83613917565b915061344282613de7565b604082019050919050565b600061345a601f83613917565b915061346582613e36565b602082019050919050565b61347981613970565b82525050565b600061348c82848661315a565b91508190509392505050565b60006134a482846131b8565b915081905092915050565b60006134ba826133c1565b9150819050919050565b60006020820190506134d9600083018461310f565b92915050565b60006060820190506134f4600083018661310f565b613501602083018561310f565b61350e6040830184613470565b949350505050565b600060408201905061352b600083018561310f565b61353860208301846131e9565b9392505050565b6000604082019050613554600083018561310f565b6135616020830184613470565b9392505050565b600060208201905061357d600083018461311e565b92915050565b6000602082019050818103600083015261359e81848661312d565b90509392505050565b600060208201905081810360008301526135c1818461317f565b905092915050565b60006020820190506135de60008301846131f8565b92915050565b600060208201905081810360008301526135fe8184613207565b905092915050565b6000602082019050818103600083015261361f81613240565b9050919050565b6000602082019050818103600083015261363f81613263565b9050919050565b6000602082019050818103600083015261365f81613286565b9050919050565b6000602082019050818103600083015261367f816132a9565b9050919050565b6000602082019050818103600083015261369f816132cc565b9050919050565b600060208201905081810360008301526136bf816132ef565b9050919050565b600060208201905081810360008301526136df81613312565b9050919050565b600060208201905081810360008301526136ff81613335565b9050919050565b6000602082019050818103600083015261371f81613358565b9050919050565b6000602082019050818103600083015261373f8161337b565b9050919050565b6000602082019050818103600083015261375f816133e4565b9050919050565b6000602082019050818103600083015261377f81613407565b9050919050565b6000602082019050818103600083015261379f8161342a565b9050919050565b600060208201905081810360008301526137bf8161344d565b9050919050565b60006020820190506137db6000830184613470565b92915050565b60006060820190506137f66000830187613470565b613803602083018661310f565b818103604083015261381681848661312d565b905095945050505050565b60006060820190506138366000830185613470565b613843602083018461310f565b81810360408301526138548161339e565b90509392505050565b60006040820190506138726000830186613470565b818103602083015261388581848661312d565b9050949350505050565b60006138996138aa565b90506138a582826139ed565b919050565b6000604051905090565b600067ffffffffffffffff8211156138cf576138ce613a1e565b5b6138d882613a6b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061393382613950565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061399282613970565b9050919050565b60006139a48261397a565b9050919050565b82818337600083830152505050565b60005b838110156139d85780820151818401526020810190506139bd565b838111156139e7576000848401525b50505050565b6139f682613a6b565b810181811067ffffffffffffffff82111715613a1557613a14613a1e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613e6881613928565b8114613e7357600080fd5b50565b613e7f8161393a565b8114613e8a57600080fd5b50565b613e9681613946565b8114613ea157600080fd5b50565b613ead81613970565b8114613eb857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d431fcc4399349f48c7db34c81b6c68de55fb20be12bb7fc941bdb48c9369ed464736f6c63430008070033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts b/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts index b1a5c1ac..ba7da56c 100644 --- a/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/GatewayEVM__factory.ts @@ -680,7 +680,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6140266200024360003960008181610b3c01528181610bcb01528181610f3501528181610fc4015261140701526140266000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612f0a565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612fff565b610647565b005b6101a660048036038101906101a19190612fff565b6106b3565b6040516101b391906136b5565b60405180910390f35b3480156101c857600080fd5b506101d16107a8565b6040516101de91906135d2565b60405180910390f35b61020160048036038101906101fc9190612fff565b6107ce565b005b61021d60048036038101906102189190612fff565b610948565b005b34801561022b57600080fd5b5061024660048036038101906102419190612f0a565b610b3a565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612f37565b610cc3565b005b61028b6004803603810190610286919061305f565b610f33565b005b34801561029957600080fd5b506102b460048036038101906102af9190612f77565b611070565b005b3480156102c257600080fd5b506102cb611403565b6040516102d89190613676565b60405180910390f35b3480156102ed57600080fd5b506102f66114bc565b60405161030391906135d2565b60405180910390f35b34801561031857600080fd5b506103216114e2565b60405161032e91906135d2565b60405180910390f35b34801561034357600080fd5b5061034c611508565b005b34801561035a57600080fd5b506103756004803603810190610370919061310e565b61151c565b005b34801561038357600080fd5b5061038c6115d4565b60405161039991906135d2565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612f0a565b6115fe565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612f77565b6117b8565b005b34801561040057600080fd5b506104096119ee565b60405161041691906135d2565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612f0a565b611a14565b005b610462600480360381019061045d9190612f0a565b611a98565b005b34801561047057600080fd5b5061048b600480360381019061048691906130bb565b611c0c565b005b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610514576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461059c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610603576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516106a6929190613691565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461073c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610749858585611cbe565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516107959392919061396b565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610809576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610851906135bd565b60006040518083038185875af1925050503d806000811461088e576040519150601f19603f3d011682016040523d82523d6000602084013e610893565b606091505b505090506000151581151514156108d6576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161093a94939291906138ef565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109cf576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16346040516109f6906135bd565b60006040518083038185875af1925050503d8060008114610a33576040519150601f19603f3d011682016040523d82523d6000602084013e610a38565b606091505b509150915081610a74576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610aaf929190613691565b600060405180830381600087803b158015610ac957600080fd5b505af1158015610add573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610b2b9392919061396b565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613734565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610c08611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613754565b60405180910390fd5b610c6781611dcc565b610cc081600067ffffffffffffffff811115610c8657610c85613b2c565b5b6040519080825280601f01601f191660200182016040528015610cb85781602001600182028036833780820191505090505b506000611dd7565b50565b60008060019054906101000a900460ff16159050808015610cf45750600160008054906101000a900460ff1660ff16105b80610d215750610d0330611f54565b158015610d205750600160008054906101000a900460ff1660ff16145b5b610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d57906137d4565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d9d576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e045750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610e3b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e43611f77565b610e4b611fd0565b610e53612021565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f2e5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610f2591906136d7565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613734565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611001611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90613754565b60405180910390fd5b61106082611dcc565b61106c82826001611dd7565b5050565b61107861207a565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611124575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561115b576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000831415611196576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111a085856120ca565b6111d6576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161121192919061364d565b602060405180830381600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190613196565b611299576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112a6858484611cbe565b90506112b286866120ca565b6112e8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161132391906135d2565b60206040518083038186803b15801561133b57600080fd5b505afa15801561134f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137391906131f0565b90506000811115611389576113888782612162565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113ea9392919061396b565b60405180910390a350506113fc61234c565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90613794565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611510612356565b61151a60006123d4565b565b6000841415611557576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156233848661249a565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516115c594939291906138ef565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611685576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611774576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117c061207a565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561186c575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156118a3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156118de576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190984848773ffffffffffffffffffffffffffffffffffffffff166126b49092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611944929190613691565b600060405180830381600087803b15801561195e57600080fd5b505af1158015611972573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516119d79392919061396b565b60405180910390a36119e761234c565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1c612356565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613714565b60405180910390fd5b611a95816123d4565b50565b6000341415611ad3576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611b1b906135bd565b60006040518083038185875af1925050503d8060008114611b58576040519150601f19603f3d011682016040523d82523d6000602084013e611b5d565b606091505b50509050600015158115151415611ba0576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611c0092919061392f565b60405180910390a35050565b6000821415611c47576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c5233828461249a565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611cb192919061392f565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611ceb92919061358d565b60006040518083038185875af1925050503d8060008114611d28576040519150601f19603f3d011682016040523d82523d6000602084013e611d2d565b606091505b509150915081611d69576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611da37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61273a565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dd4612356565b50565b611e037f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612744565b60000160009054906101000a900460ff1615611e2757611e228361274e565b611f4f565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6d57600080fd5b505afa925050508015611e9e57506040513d601f19601f82011682018060405250810190611e9b91906131c3565b60015b611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed4906137f4565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f39906137b4565b60405180910390fd5b50611f4e838383612807565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90613874565b60405180910390fd5b611fce612833565b565b600060019054906101000a900460ff1661201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613874565b60405180910390fd5b565b600060019054906101000a900460ff16612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206790613874565b60405180910390fd5b612078612894565b565b600260c95414156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906138b4565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401612108929190613624565b602060405180830381600087803b15801561212257600080fd5b505af1158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190613196565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122fa578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161221592919061364d565b602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122679190613196565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016122c391906138d4565b600060405180830381600087803b1580156122dd57600080fd5b505af11580156122f1573d6000803e3d6000fd5b50505050612348565b61234760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166126b49092919063ffffffff16565b5b5050565b600160c981905550565b61235e6128ed565b73ffffffffffffffffffffffffffffffffffffffff1661237c6115d4565b73ffffffffffffffffffffffffffffffffffffffff16146123d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c990613834565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561265f5761251d8330838573ffffffffffffffffffffffffffffffffffffffff166128f5909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161257a92919061364d565b602060405180830381600087803b15801561259457600080fd5b505af11580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc9190613196565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161262891906138d4565b600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050506126af565b6126ae8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166128f5909392919063ffffffff16565b5b505050565b6127358363a9059cbb60e01b84846040516024016126d392919061364d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061297e565b505050565b6000819050919050565b6000819050919050565b61275781611f54565b612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d90613814565b60405180910390fd5b806127c37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61273a565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61281083612a45565b60008251118061281d5750805b1561282e5761282c8383612a94565b505b505050565b600060019054906101000a900460ff16612882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287990613874565b60405180910390fd5b61289261288d6128ed565b6123d4565b565b600060019054906101000a900460ff166128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da90613874565b60405180910390fd5b600160c981905550565b600033905090565b612978846323b872dd60e01b858585604051602401612916939291906135ed565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061297e565b50505050565b60006129e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ac19092919063ffffffff16565b9050600081511115612a405780806020019051810190612a009190613196565b612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3690613894565b60405180910390fd5b5b505050565b612a4e8161274e565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060612ab98383604051806060016040528060278152602001613fca60279139612ad9565b905092915050565b6060612ad08484600085612b5f565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051612b0391906135a6565b600060405180830381855af49150503d8060008114612b3e576040519150601f19603f3d011682016040523d82523d6000602084013e612b43565b606091505b5091509150612b5486838387612c2c565b925050509392505050565b606082471015612ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9b90613774565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612bcd91906135a6565b60006040518083038185875af1925050503d8060008114612c0a576040519150601f19603f3d011682016040523d82523d6000602084013e612c0f565b606091505b5091509150612c2087838387612ca2565b92505050949350505050565b60608315612c8f57600083511415612c8757612c4785611f54565b612c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7d90613854565b60405180910390fd5b5b829050612c9a565b612c998383612d18565b5b949350505050565b60608315612d0557600083511415612cfd57612cbd85612d68565b612cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf390613854565b60405180910390fd5b5b829050612d10565b612d0f8383612d8b565b5b949350505050565b600082511115612d2b5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5f91906136f2565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612d9e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd291906136f2565b60405180910390fd5b6000612dee612de9846139c2565b61399d565b905082815260208101848484011115612e0a57612e09613b6a565b5b612e15848285613ab9565b509392505050565b600081359050612e2c81613f6d565b92915050565b600081519050612e4181613f84565b92915050565b600081519050612e5681613f9b565b92915050565b60008083601f840112612e7257612e71613b60565b5b8235905067ffffffffffffffff811115612e8f57612e8e613b5b565b5b602083019150836001820283011115612eab57612eaa613b65565b5b9250929050565b600082601f830112612ec757612ec6613b60565b5b8135612ed7848260208601612ddb565b91505092915050565b600081359050612eef81613fb2565b92915050565b600081519050612f0481613fb2565b92915050565b600060208284031215612f2057612f1f613b74565b5b6000612f2e84828501612e1d565b91505092915050565b60008060408385031215612f4e57612f4d613b74565b5b6000612f5c85828601612e1d565b9250506020612f6d85828601612e1d565b9150509250929050565b600080600080600060808688031215612f9357612f92613b74565b5b6000612fa188828901612e1d565b9550506020612fb288828901612e1d565b9450506040612fc388828901612ee0565b935050606086013567ffffffffffffffff811115612fe457612fe3613b6f565b5b612ff088828901612e5c565b92509250509295509295909350565b60008060006040848603121561301857613017613b74565b5b600061302686828701612e1d565b935050602084013567ffffffffffffffff81111561304757613046613b6f565b5b61305386828701612e5c565b92509250509250925092565b6000806040838503121561307657613075613b74565b5b600061308485828601612e1d565b925050602083013567ffffffffffffffff8111156130a5576130a4613b6f565b5b6130b185828601612eb2565b9150509250929050565b6000806000606084860312156130d4576130d3613b74565b5b60006130e286828701612e1d565b93505060206130f386828701612ee0565b925050604061310486828701612e1d565b9150509250925092565b60008060008060006080868803121561312a57613129613b74565b5b600061313888828901612e1d565b955050602061314988828901612ee0565b945050604061315a88828901612e1d565b935050606086013567ffffffffffffffff81111561317b5761317a613b6f565b5b61318788828901612e5c565b92509250509295509295909350565b6000602082840312156131ac576131ab613b74565b5b60006131ba84828501612e32565b91505092915050565b6000602082840312156131d9576131d8613b74565b5b60006131e784828501612e47565b91505092915050565b60006020828403121561320657613205613b74565b5b600061321484828501612ef5565b91505092915050565b61322681613a36565b82525050565b61323581613a54565b82525050565b60006132478385613a09565b9350613254838584613ab9565b61325d83613b79565b840190509392505050565b60006132748385613a1a565b9350613281838584613ab9565b82840190509392505050565b6000613298826139f3565b6132a28185613a09565b93506132b2818560208601613ac8565b6132bb81613b79565b840191505092915050565b60006132d1826139f3565b6132db8185613a1a565b93506132eb818560208601613ac8565b80840191505092915050565b61330081613a95565b82525050565b61330f81613aa7565b82525050565b6000613320826139fe565b61332a8185613a25565b935061333a818560208601613ac8565b61334381613b79565b840191505092915050565b600061335b602683613a25565b915061336682613b8a565b604082019050919050565b600061337e602c83613a25565b915061338982613bd9565b604082019050919050565b60006133a1602c83613a25565b91506133ac82613c28565b604082019050919050565b60006133c4602683613a25565b91506133cf82613c77565b604082019050919050565b60006133e7603883613a25565b91506133f282613cc6565b604082019050919050565b600061340a602983613a25565b915061341582613d15565b604082019050919050565b600061342d602e83613a25565b915061343882613d64565b604082019050919050565b6000613450602e83613a25565b915061345b82613db3565b604082019050919050565b6000613473602d83613a25565b915061347e82613e02565b604082019050919050565b6000613496602083613a25565b91506134a182613e51565b602082019050919050565b60006134b9600083613a09565b91506134c482613e7a565b600082019050919050565b60006134dc600083613a1a565b91506134e782613e7a565b600082019050919050565b60006134ff601d83613a25565b915061350a82613e7d565b602082019050919050565b6000613522602b83613a25565b915061352d82613ea6565b604082019050919050565b6000613545602a83613a25565b915061355082613ef5565b604082019050919050565b6000613568601f83613a25565b915061357382613f44565b602082019050919050565b61358781613a7e565b82525050565b600061359a828486613268565b91508190509392505050565b60006135b282846132c6565b915081905092915050565b60006135c8826134cf565b9150819050919050565b60006020820190506135e7600083018461321d565b92915050565b6000606082019050613602600083018661321d565b61360f602083018561321d565b61361c604083018461357e565b949350505050565b6000604082019050613639600083018561321d565b61364660208301846132f7565b9392505050565b6000604082019050613662600083018561321d565b61366f602083018461357e565b9392505050565b600060208201905061368b600083018461322c565b92915050565b600060208201905081810360008301526136ac81848661323b565b90509392505050565b600060208201905081810360008301526136cf818461328d565b905092915050565b60006020820190506136ec6000830184613306565b92915050565b6000602082019050818103600083015261370c8184613315565b905092915050565b6000602082019050818103600083015261372d8161334e565b9050919050565b6000602082019050818103600083015261374d81613371565b9050919050565b6000602082019050818103600083015261376d81613394565b9050919050565b6000602082019050818103600083015261378d816133b7565b9050919050565b600060208201905081810360008301526137ad816133da565b9050919050565b600060208201905081810360008301526137cd816133fd565b9050919050565b600060208201905081810360008301526137ed81613420565b9050919050565b6000602082019050818103600083015261380d81613443565b9050919050565b6000602082019050818103600083015261382d81613466565b9050919050565b6000602082019050818103600083015261384d81613489565b9050919050565b6000602082019050818103600083015261386d816134f2565b9050919050565b6000602082019050818103600083015261388d81613515565b9050919050565b600060208201905081810360008301526138ad81613538565b9050919050565b600060208201905081810360008301526138cd8161355b565b9050919050565b60006020820190506138e9600083018461357e565b92915050565b6000606082019050613904600083018761357e565b613911602083018661321d565b818103604083015261392481848661323b565b905095945050505050565b6000606082019050613944600083018561357e565b613951602083018461321d565b8181036040830152613962816134ac565b90509392505050565b6000604082019050613980600083018661357e565b818103602083015261399381848661323b565b9050949350505050565b60006139a76139b8565b90506139b38282613afb565b919050565b6000604051905090565b600067ffffffffffffffff8211156139dd576139dc613b2c565b5b6139e682613b79565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613a4182613a5e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613aa082613a7e565b9050919050565b6000613ab282613a88565b9050919050565b82818337600083830152505050565b60005b83811015613ae6578082015181840152602081019050613acb565b83811115613af5576000848401525b50505050565b613b0482613b79565b810181811067ffffffffffffffff82111715613b2357613b22613b2c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613f7681613a36565b8114613f8157600080fd5b50565b613f8d81613a48565b8114613f9857600080fd5b50565b613fa481613a54565b8114613faf57600080fd5b50565b613fbb81613a7e565b8114613fc657600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d4d187c762f40390aee121e3267997df07017a0032a9b500d43abd12e540b6bd64736f6c63430008070033"; + "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c6140266200024360003960008181610b3c01528181610bcb01528181610f3501528181610fc4015261140701526140266000f3fe6080604052600436106101355760003560e01c806357bec62f116100ab578063ae7a3a6f1161006f578063ae7a3a6f146103a2578063b8969bd4146103cb578063dda79b75146103f4578063f2fde38b1461041f578063f340fa0114610448578063f45346dc1461046457610135565b806357bec62f146102e15780635b1125911461030c578063715018a6146103375780638c6f037f1461034e5780638da5cb5b1461037757610135565b806335c018db116100fd57806335c018db146102035780633659cfe61461021f578063485cc955146102485780634f1ef286146102715780635131ab591461028d57806352d1902d146102b657610135565b806310188aef1461013a5780631b8b921d146101635780631cff79cd1461018c57806321e093b1146101bc57806329c59b5d146101e7575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c9190612f0a565b61048d565b005b34801561016f57600080fd5b5061018a60048036038101906101859190612fff565b610647565b005b6101a660048036038101906101a19190612fff565b6106b3565b6040516101b391906136b5565b60405180910390f35b3480156101c857600080fd5b506101d16107a8565b6040516101de91906135d2565b60405180910390f35b61020160048036038101906101fc9190612fff565b6107ce565b005b61021d60048036038101906102189190612fff565b610948565b005b34801561022b57600080fd5b5061024660048036038101906102419190612f0a565b610b3a565b005b34801561025457600080fd5b5061026f600480360381019061026a9190612f37565b610cc3565b005b61028b6004803603810190610286919061305f565b610f33565b005b34801561029957600080fd5b506102b460048036038101906102af9190612f77565b611070565b005b3480156102c257600080fd5b506102cb611403565b6040516102d89190613676565b60405180910390f35b3480156102ed57600080fd5b506102f66114bc565b60405161030391906135d2565b60405180910390f35b34801561031857600080fd5b506103216114e2565b60405161032e91906135d2565b60405180910390f35b34801561034357600080fd5b5061034c611508565b005b34801561035a57600080fd5b506103756004803603810190610370919061310e565b61151c565b005b34801561038357600080fd5b5061038c6115d4565b60405161039991906135d2565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190612f0a565b6115fe565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612f77565b6117b8565b005b34801561040057600080fd5b506104096119ee565b60405161041691906135d2565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190612f0a565b611a14565b005b610462600480360381019061045d9190612f0a565b611a98565b005b34801561047057600080fd5b5061048b600480360381019061048691906130bb565b611c0c565b005b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610514576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461059c576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610603576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fd60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516106a6929190613691565b60405180910390a3505050565b606060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461073c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610749858585611cbe565b90508473ffffffffffffffffffffffffffffffffffffffff167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516107959392919061396b565b60405180910390a2809150509392505050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000341415610809576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610851906135bd565b60006040518083038185875af1925050503d806000811461088e576040519150601f19603f3d011682016040523d82523d6000602084013e610893565b606091505b505090506000151581151514156108d6576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161093a94939291906138ef565b60405180910390a350505050565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109cf576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16346040516109f6906135bd565b60006040518083038185875af1925050503d8060008114610a33576040519150601f19603f3d011682016040523d82523d6000602084013e610a38565b606091505b509150915081610a74576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16638fcaa0b585856040518363ffffffff1660e01b8152600401610aaf929190613691565b600060405180830381600087803b158015610ac957600080fd5b505af1158015610add573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c348686604051610b2b9392919061396b565b60405180910390a25050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613734565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610c08611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613754565b60405180910390fd5b610c6781611dcc565b610cc081600067ffffffffffffffff811115610c8657610c85613b2c565b5b6040519080825280601f01601f191660200182016040528015610cb85781602001600182028036833780820191505090505b506000611dd7565b50565b60008060019054906101000a900460ff16159050808015610cf45750600160008054906101000a900460ff1660ff16105b80610d215750610d0330611f54565b158015610d205750600160008054906101000a900460ff1660ff16145b5b610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d57906137d4565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610d9d576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e045750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610e3b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e43611f77565b610e4b611fd0565b610e53612021565b8260fc60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160fe60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015610f2e5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610f2591906136d7565b60405180910390a15b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613734565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611001611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90613754565b60405180910390fd5b61106082611dcc565b61106c82826001611dd7565b5050565b61107861207a565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611124575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561115b576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000831415611196576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111a085856120ca565b6111d6576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b815260040161121192919061364d565b602060405180830381600087803b15801561122b57600080fd5b505af115801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190613196565b611299576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112a6858484611cbe565b90506112b286866120ca565b6112e8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161132391906135d2565b60206040518083038186803b15801561133b57600080fd5b505afa15801561134f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137391906131f0565b90506000811115611389576113888782612162565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b73828787876040516113ea9392919061396b565b60405180910390a350506113fc61234c565b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90613794565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611510612356565b61151a60006123d4565b565b6000841415611557576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156233848661249a565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516115c594939291906138ef565b60405180910390a35050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611685576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170d576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611774576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117c061207a565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561186c575060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156118a3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156118de576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190984848773ffffffffffffffffffffffffffffffffffffffff166126b49092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16638fcaa0b583836040518363ffffffff1660e01b8152600401611944929190613691565b600060405180830381600087803b15801561195e57600080fd5b505af1158015611972573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516119d79392919061396b565b60405180910390a36119e761234c565b5050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1c612356565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613714565b60405180910390fd5b611a95816123d4565b50565b6000341415611ad3576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fc60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051611b1b906135bd565b60006040518083038185875af1925050503d8060008114611b58576040519150601f19603f3d011682016040523d82523d6000602084013e611b5d565b606091505b50509050600015158115151415611ba0576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000604051611c0092919061392f565b60405180910390a35050565b6000821415611c47576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c5233828461249a565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a48484604051611cb192919061392f565b60405180910390a3505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16348686604051611ceb92919061358d565b60006040518083038185875af1925050503d8060008114611d28576040519150601f19603f3d011682016040523d82523d6000602084013e611d2d565b606091505b509150915081611d69576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80925050509392505050565b6000611da37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61273a565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dd4612356565b50565b611e037f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612744565b60000160009054906101000a900460ff1615611e2757611e228361274e565b611f4f565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6d57600080fd5b505afa925050508015611e9e57506040513d601f19601f82011682018060405250810190611e9b91906131c3565b60015b611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed4906137f4565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114611f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f39906137b4565b60405180910390fd5b50611f4e838383612807565b5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90613874565b60405180910390fd5b611fce612833565b565b600060019054906101000a900460ff1661201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613874565b60405180910390fd5b565b600060019054906101000a900460ff16612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206790613874565b60405180910390fd5b612078612894565b565b600260c95414156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906138b4565b60405180910390fd5b600260c981905550565b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b38360006040518363ffffffff1660e01b8152600401612108929190613624565b602060405180830381600087803b15801561212257600080fd5b505af1158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190613196565b905092915050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122fa578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161221592919061364d565b602060405180830381600087803b15801561222f57600080fd5b505af1158015612243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122679190613196565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b81526004016122c391906138d4565b600060405180830381600087803b1580156122dd57600080fd5b505af11580156122f1573d6000803e3d6000fd5b50505050612348565b61234760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166126b49092919063ffffffff16565b5b5050565b600160c981905550565b61235e6128ed565b73ffffffffffffffffffffffffffffffffffffffff1661237c6115d4565b73ffffffffffffffffffffffffffffffffffffffff16146123d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c990613834565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60fe60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561265f5761251d8330838573ffffffffffffffffffffffffffffffffffffffff166128f5909392919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161257a92919061364d565b602060405180830381600087803b15801561259457600080fd5b505af11580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc9190613196565b5060fd60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743e0c9b826040518263ffffffff1660e01b815260040161262891906138d4565b600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050506126af565b6126ae8360fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff166128f5909392919063ffffffff16565b5b505050565b6127358363a9059cbb60e01b84846040516024016126d392919061364d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061297e565b505050565b6000819050919050565b6000819050919050565b61275781611f54565b612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d90613814565b60405180910390fd5b806127c37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61273a565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61281083612a45565b60008251118061281d5750805b1561282e5761282c8383612a94565b505b505050565b600060019054906101000a900460ff16612882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287990613874565b60405180910390fd5b61289261288d6128ed565b6123d4565b565b600060019054906101000a900460ff166128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da90613874565b60405180910390fd5b600160c981905550565b600033905090565b612978846323b872dd60e01b858585604051602401612916939291906135ed565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061297e565b50505050565b60006129e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ac19092919063ffffffff16565b9050600081511115612a405780806020019051810190612a009190613196565b612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3690613894565b60405180910390fd5b5b505050565b612a4e8161274e565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6060612ab98383604051806060016040528060278152602001613fca60279139612ad9565b905092915050565b6060612ad08484600085612b5f565b90509392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051612b0391906135a6565b600060405180830381855af49150503d8060008114612b3e576040519150601f19603f3d011682016040523d82523d6000602084013e612b43565b606091505b5091509150612b5486838387612c2c565b925050509392505050565b606082471015612ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9b90613774565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612bcd91906135a6565b60006040518083038185875af1925050503d8060008114612c0a576040519150601f19603f3d011682016040523d82523d6000602084013e612c0f565b606091505b5091509150612c2087838387612ca2565b92505050949350505050565b60608315612c8f57600083511415612c8757612c4785611f54565b612c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7d90613854565b60405180910390fd5b5b829050612c9a565b612c998383612d18565b5b949350505050565b60608315612d0557600083511415612cfd57612cbd85612d68565b612cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf390613854565b60405180910390fd5b5b829050612d10565b612d0f8383612d8b565b5b949350505050565b600082511115612d2b5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5f91906136f2565b60405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612d9e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd291906136f2565b60405180910390fd5b6000612dee612de9846139c2565b61399d565b905082815260208101848484011115612e0a57612e09613b6a565b5b612e15848285613ab9565b509392505050565b600081359050612e2c81613f6d565b92915050565b600081519050612e4181613f84565b92915050565b600081519050612e5681613f9b565b92915050565b60008083601f840112612e7257612e71613b60565b5b8235905067ffffffffffffffff811115612e8f57612e8e613b5b565b5b602083019150836001820283011115612eab57612eaa613b65565b5b9250929050565b600082601f830112612ec757612ec6613b60565b5b8135612ed7848260208601612ddb565b91505092915050565b600081359050612eef81613fb2565b92915050565b600081519050612f0481613fb2565b92915050565b600060208284031215612f2057612f1f613b74565b5b6000612f2e84828501612e1d565b91505092915050565b60008060408385031215612f4e57612f4d613b74565b5b6000612f5c85828601612e1d565b9250506020612f6d85828601612e1d565b9150509250929050565b600080600080600060808688031215612f9357612f92613b74565b5b6000612fa188828901612e1d565b9550506020612fb288828901612e1d565b9450506040612fc388828901612ee0565b935050606086013567ffffffffffffffff811115612fe457612fe3613b6f565b5b612ff088828901612e5c565b92509250509295509295909350565b60008060006040848603121561301857613017613b74565b5b600061302686828701612e1d565b935050602084013567ffffffffffffffff81111561304757613046613b6f565b5b61305386828701612e5c565b92509250509250925092565b6000806040838503121561307657613075613b74565b5b600061308485828601612e1d565b925050602083013567ffffffffffffffff8111156130a5576130a4613b6f565b5b6130b185828601612eb2565b9150509250929050565b6000806000606084860312156130d4576130d3613b74565b5b60006130e286828701612e1d565b93505060206130f386828701612ee0565b925050604061310486828701612e1d565b9150509250925092565b60008060008060006080868803121561312a57613129613b74565b5b600061313888828901612e1d565b955050602061314988828901612ee0565b945050604061315a88828901612e1d565b935050606086013567ffffffffffffffff81111561317b5761317a613b6f565b5b61318788828901612e5c565b92509250509295509295909350565b6000602082840312156131ac576131ab613b74565b5b60006131ba84828501612e32565b91505092915050565b6000602082840312156131d9576131d8613b74565b5b60006131e784828501612e47565b91505092915050565b60006020828403121561320657613205613b74565b5b600061321484828501612ef5565b91505092915050565b61322681613a36565b82525050565b61323581613a54565b82525050565b60006132478385613a09565b9350613254838584613ab9565b61325d83613b79565b840190509392505050565b60006132748385613a1a565b9350613281838584613ab9565b82840190509392505050565b6000613298826139f3565b6132a28185613a09565b93506132b2818560208601613ac8565b6132bb81613b79565b840191505092915050565b60006132d1826139f3565b6132db8185613a1a565b93506132eb818560208601613ac8565b80840191505092915050565b61330081613a95565b82525050565b61330f81613aa7565b82525050565b6000613320826139fe565b61332a8185613a25565b935061333a818560208601613ac8565b61334381613b79565b840191505092915050565b600061335b602683613a25565b915061336682613b8a565b604082019050919050565b600061337e602c83613a25565b915061338982613bd9565b604082019050919050565b60006133a1602c83613a25565b91506133ac82613c28565b604082019050919050565b60006133c4602683613a25565b91506133cf82613c77565b604082019050919050565b60006133e7603883613a25565b91506133f282613cc6565b604082019050919050565b600061340a602983613a25565b915061341582613d15565b604082019050919050565b600061342d602e83613a25565b915061343882613d64565b604082019050919050565b6000613450602e83613a25565b915061345b82613db3565b604082019050919050565b6000613473602d83613a25565b915061347e82613e02565b604082019050919050565b6000613496602083613a25565b91506134a182613e51565b602082019050919050565b60006134b9600083613a09565b91506134c482613e7a565b600082019050919050565b60006134dc600083613a1a565b91506134e782613e7a565b600082019050919050565b60006134ff601d83613a25565b915061350a82613e7d565b602082019050919050565b6000613522602b83613a25565b915061352d82613ea6565b604082019050919050565b6000613545602a83613a25565b915061355082613ef5565b604082019050919050565b6000613568601f83613a25565b915061357382613f44565b602082019050919050565b61358781613a7e565b82525050565b600061359a828486613268565b91508190509392505050565b60006135b282846132c6565b915081905092915050565b60006135c8826134cf565b9150819050919050565b60006020820190506135e7600083018461321d565b92915050565b6000606082019050613602600083018661321d565b61360f602083018561321d565b61361c604083018461357e565b949350505050565b6000604082019050613639600083018561321d565b61364660208301846132f7565b9392505050565b6000604082019050613662600083018561321d565b61366f602083018461357e565b9392505050565b600060208201905061368b600083018461322c565b92915050565b600060208201905081810360008301526136ac81848661323b565b90509392505050565b600060208201905081810360008301526136cf818461328d565b905092915050565b60006020820190506136ec6000830184613306565b92915050565b6000602082019050818103600083015261370c8184613315565b905092915050565b6000602082019050818103600083015261372d8161334e565b9050919050565b6000602082019050818103600083015261374d81613371565b9050919050565b6000602082019050818103600083015261376d81613394565b9050919050565b6000602082019050818103600083015261378d816133b7565b9050919050565b600060208201905081810360008301526137ad816133da565b9050919050565b600060208201905081810360008301526137cd816133fd565b9050919050565b600060208201905081810360008301526137ed81613420565b9050919050565b6000602082019050818103600083015261380d81613443565b9050919050565b6000602082019050818103600083015261382d81613466565b9050919050565b6000602082019050818103600083015261384d81613489565b9050919050565b6000602082019050818103600083015261386d816134f2565b9050919050565b6000602082019050818103600083015261388d81613515565b9050919050565b600060208201905081810360008301526138ad81613538565b9050919050565b600060208201905081810360008301526138cd8161355b565b9050919050565b60006020820190506138e9600083018461357e565b92915050565b6000606082019050613904600083018761357e565b613911602083018661321d565b818103604083015261392481848661323b565b905095945050505050565b6000606082019050613944600083018561357e565b613951602083018461321d565b8181036040830152613962816134ac565b90509392505050565b6000604082019050613980600083018661357e565b818103602083015261399381848661323b565b9050949350505050565b60006139a76139b8565b90506139b38282613afb565b919050565b6000604051905090565b600067ffffffffffffffff8211156139dd576139dc613b2c565b5b6139e682613b79565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613a4182613a5e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613aa082613a7e565b9050919050565b6000613ab282613a88565b9050919050565b82818337600083830152505050565b60005b83811015613ae6578082015181840152602081019050613acb565b83811115613af5576000848401525b50505050565b613b0482613b79565b810181811067ffffffffffffffff82111715613b2357613b22613b2c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613f7681613a36565b8114613f8157600080fd5b50565b613f8d81613a48565b8114613f9857600080fd5b50565b613fa481613a54565b8114613faf57600080fd5b50565b613fbb81613a7e565b8114613fc657600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122071c5d8f02c0c4967eb288874e4451bc4ee75b35d49d0b3560a1136ba07a133ca64736f6c63430008070033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts index b964a1fe..e8598851 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ReceiverEVM__factory.ts @@ -269,7 +269,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506001600081905550611453806100286000396000f3fe6080604052600436106100595760003560e01c8063357fc5a2146100625780636ed701691461008b5780638fcaa0b5146100a2578063c5131691146100cb578063e04d4f97146100f4578063f05b6abf1461011057610060565b3661006057005b005b34801561006e57600080fd5b5061008960048036038101906100849190610ae2565b610139565b005b34801561009757600080fd5b506100a06101b8565b005b3480156100ae57600080fd5b506100c960048036038101906100c49190610a26565b6101f1565b005b3480156100d757600080fd5b506100f260048036038101906100ed9190610ae2565b610230565b005b61010e60048036038101906101099190610a73565b6102fc565b005b34801561011c57600080fd5b506101376004803603810190610132919061096e565b610340565b005b610141610382565b61016e3382858573ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338484846040516101a39493929190610eba565b60405180910390a16101b361045b565b505050565b7fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0336040516101e79190610de3565b60405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161022493929190610e88565b60405180910390a15050565b610238610382565b6000600284610247919061116f565b90506000811415610284576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b13383838673ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338285856040516102e69493929190610eba565b60405180910390a1506102f761045b565b505050565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610333959493929190610eff565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103759493929190610e35565b60405180910390a1505050565b600260005414156103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90610fdb565b60405180910390fd5b6002600081905550565b610455846323b872dd60e01b8585856040516024016103f393929190610dfe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610465565b50505050565b6001600081905550565b60006104c7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661052c9092919063ffffffff16565b905060008151111561052757808060200190518101906104e791906109f9565b610526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051d90610fbb565b60405180910390fd5b5b505050565b606061053b8484600085610544565b90509392505050565b606082471015610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090610f7b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516105b29190610dcc565b60006040518083038185875af1925050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b509150915061060587838387610611565b92505050949350505050565b606083156106745760008351141561066c5761062c85610687565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290610f9b565b60405180910390fd5b5b82905061067f565b61067e83836106aa565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106bd5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f19190610f59565b60405180910390fd5b600061070d61070884611020565b610ffb565b905080838252602082019050828560208602820111156107305761072f6112c3565b5b60005b8581101561077e57813567ffffffffffffffff811115610756576107556112be565b5b808601610763898261092b565b85526020850194506020840193505050600181019050610733565b5050509392505050565b600061079b6107968461104c565b610ffb565b905080838252602082019050828560208602820111156107be576107bd6112c3565b5b60005b858110156107ee57816107d48882610959565b8452602084019350602083019250506001810190506107c1565b5050509392505050565b600061080b61080684611078565b610ffb565b905082815260208101848484011115610827576108266112c8565b5b6108328482856111e8565b509392505050565b600081359050610849816113d8565b92915050565b600082601f830112610864576108636112be565b5b81356108748482602086016106fa565b91505092915050565b600082601f830112610892576108916112be565b5b81356108a2848260208601610788565b91505092915050565b6000813590506108ba816113ef565b92915050565b6000815190506108cf816113ef565b92915050565b60008083601f8401126108eb576108ea6112be565b5b8235905067ffffffffffffffff811115610908576109076112b9565b5b602083019150836001820283011115610924576109236112c3565b5b9250929050565b600082601f8301126109405761093f6112be565b5b81356109508482602086016107f8565b91505092915050565b60008135905061096881611406565b92915050565b600080600060608486031215610987576109866112d2565b5b600084013567ffffffffffffffff8111156109a5576109a46112cd565b5b6109b18682870161084f565b935050602084013567ffffffffffffffff8111156109d2576109d16112cd565b5b6109de8682870161087d565b92505060406109ef868287016108ab565b9150509250925092565b600060208284031215610a0f57610a0e6112d2565b5b6000610a1d848285016108c0565b91505092915050565b60008060208385031215610a3d57610a3c6112d2565b5b600083013567ffffffffffffffff811115610a5b57610a5a6112cd565b5b610a67858286016108d5565b92509250509250929050565b600080600060608486031215610a8c57610a8b6112d2565b5b600084013567ffffffffffffffff811115610aaa57610aa96112cd565b5b610ab68682870161092b565b9350506020610ac786828701610959565b9250506040610ad8868287016108ab565b9150509250925092565b600080600060608486031215610afb57610afa6112d2565b5b6000610b0986828701610959565b9350506020610b1a8682870161083a565b9250506040610b2b8682870161083a565b9150509250925092565b6000610b418383610cb0565b905092915050565b6000610b558383610dae565b60208301905092915050565b610b6a816111a0565b82525050565b6000610b7b826110c9565b610b85818561110f565b935083602082028501610b97856110a9565b8060005b85811015610bd35784840389528151610bb48582610b35565b9450610bbf836110f5565b925060208a01995050600181019050610b9b565b50829750879550505050505092915050565b6000610bf0826110d4565b610bfa8185611120565b9350610c05836110b9565b8060005b83811015610c36578151610c1d8882610b49565b9750610c2883611102565b925050600181019050610c09565b5085935050505092915050565b610c4c816111b2565b82525050565b6000610c5e8385611131565b9350610c6b8385846111e8565b610c74836112d7565b840190509392505050565b6000610c8a826110df565b610c948185611142565b9350610ca48185602086016111f7565b80840191505092915050565b6000610cbb826110ea565b610cc5818561114d565b9350610cd58185602086016111f7565b610cde816112d7565b840191505092915050565b6000610cf4826110ea565b610cfe818561115e565b9350610d0e8185602086016111f7565b610d17816112d7565b840191505092915050565b6000610d2f60268361115e565b9150610d3a826112e8565b604082019050919050565b6000610d52601d8361115e565b9150610d5d82611337565b602082019050919050565b6000610d75602a8361115e565b9150610d8082611360565b604082019050919050565b6000610d98601f8361115e565b9150610da3826113af565b602082019050919050565b610db7816111de565b82525050565b610dc6816111de565b82525050565b6000610dd88284610c7f565b915081905092915050565b6000602082019050610df86000830184610b61565b92915050565b6000606082019050610e136000830186610b61565b610e206020830185610b61565b610e2d6040830184610dbd565b949350505050565b6000608082019050610e4a6000830187610b61565b8181036020830152610e5c8186610b70565b90508181036040830152610e708185610be5565b9050610e7f6060830184610c43565b95945050505050565b6000604082019050610e9d6000830186610b61565b8181036020830152610eb0818486610c52565b9050949350505050565b6000608082019050610ecf6000830187610b61565b610edc6020830186610dbd565b610ee96040830185610b61565b610ef66060830184610b61565b95945050505050565b600060a082019050610f146000830188610b61565b610f216020830187610dbd565b8181036040830152610f338186610ce9565b9050610f426060830185610dbd565b610f4f6080830184610c43565b9695505050505050565b60006020820190508181036000830152610f738184610ce9565b905092915050565b60006020820190508181036000830152610f9481610d22565b9050919050565b60006020820190508181036000830152610fb481610d45565b9050919050565b60006020820190508181036000830152610fd481610d68565b9050919050565b60006020820190508181036000830152610ff481610d8b565b9050919050565b6000611005611016565b9050611011828261122a565b919050565b6000604051905090565b600067ffffffffffffffff82111561103b5761103a61128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110675761106661128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110935761109261128a565b5b61109c826112d7565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061117a826111de565b9150611185836111de565b9250826111955761119461125b565b5b828204905092915050565b60006111ab826111be565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156112155780820151818401526020810190506111fa565b83811115611224576000848401525b50505050565b611233826112d7565b810181811067ffffffffffffffff821117156112525761125161128a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6113e1816111a0565b81146113ec57600080fd5b50565b6113f8816111b2565b811461140357600080fd5b50565b61140f816111de565b811461141a57600080fd5b5056fea2646970667358221220806b40b0ed017d4b60c2eaaa0b400159c25423da3eb36986617bf147e45550f364736f6c63430008070033"; + "0x608060405234801561001057600080fd5b506001600081905550611453806100286000396000f3fe6080604052600436106100595760003560e01c8063357fc5a2146100625780636ed701691461008b5780638fcaa0b5146100a2578063c5131691146100cb578063e04d4f97146100f4578063f05b6abf1461011057610060565b3661006057005b005b34801561006e57600080fd5b5061008960048036038101906100849190610ae2565b610139565b005b34801561009757600080fd5b506100a06101b8565b005b3480156100ae57600080fd5b506100c960048036038101906100c49190610a26565b6101f1565b005b3480156100d757600080fd5b506100f260048036038101906100ed9190610ae2565b610230565b005b61010e60048036038101906101099190610a73565b6102fc565b005b34801561011c57600080fd5b506101376004803603810190610132919061096e565b610340565b005b610141610382565b61016e3382858573ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338484846040516101a39493929190610eba565b60405180910390a16101b361045b565b505050565b7fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0336040516101e79190610de3565b60405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161022493929190610e88565b60405180910390a15050565b610238610382565b6000600284610247919061116f565b90506000811415610284576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102b13383838673ffffffffffffffffffffffffffffffffffffffff166103d2909392919063ffffffff16565b7f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af60338285856040516102e69493929190610eba565b60405180910390a1506102f761045b565b505050565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610333959493929190610eff565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103759493929190610e35565b60405180910390a1505050565b600260005414156103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90610fdb565b60405180910390fd5b6002600081905550565b610455846323b872dd60e01b8585856040516024016103f393929190610dfe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610465565b50505050565b6001600081905550565b60006104c7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661052c9092919063ffffffff16565b905060008151111561052757808060200190518101906104e791906109f9565b610526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051d90610fbb565b60405180910390fd5b5b505050565b606061053b8484600085610544565b90509392505050565b606082471015610589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058090610f7b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516105b29190610dcc565b60006040518083038185875af1925050503d80600081146105ef576040519150601f19603f3d011682016040523d82523d6000602084013e6105f4565b606091505b509150915061060587838387610611565b92505050949350505050565b606083156106745760008351141561066c5761062c85610687565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290610f9b565b60405180910390fd5b5b82905061067f565b61067e83836106aa565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156106bd5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f19190610f59565b60405180910390fd5b600061070d61070884611020565b610ffb565b905080838252602082019050828560208602820111156107305761072f6112c3565b5b60005b8581101561077e57813567ffffffffffffffff811115610756576107556112be565b5b808601610763898261092b565b85526020850194506020840193505050600181019050610733565b5050509392505050565b600061079b6107968461104c565b610ffb565b905080838252602082019050828560208602820111156107be576107bd6112c3565b5b60005b858110156107ee57816107d48882610959565b8452602084019350602083019250506001810190506107c1565b5050509392505050565b600061080b61080684611078565b610ffb565b905082815260208101848484011115610827576108266112c8565b5b6108328482856111e8565b509392505050565b600081359050610849816113d8565b92915050565b600082601f830112610864576108636112be565b5b81356108748482602086016106fa565b91505092915050565b600082601f830112610892576108916112be565b5b81356108a2848260208601610788565b91505092915050565b6000813590506108ba816113ef565b92915050565b6000815190506108cf816113ef565b92915050565b60008083601f8401126108eb576108ea6112be565b5b8235905067ffffffffffffffff811115610908576109076112b9565b5b602083019150836001820283011115610924576109236112c3565b5b9250929050565b600082601f8301126109405761093f6112be565b5b81356109508482602086016107f8565b91505092915050565b60008135905061096881611406565b92915050565b600080600060608486031215610987576109866112d2565b5b600084013567ffffffffffffffff8111156109a5576109a46112cd565b5b6109b18682870161084f565b935050602084013567ffffffffffffffff8111156109d2576109d16112cd565b5b6109de8682870161087d565b92505060406109ef868287016108ab565b9150509250925092565b600060208284031215610a0f57610a0e6112d2565b5b6000610a1d848285016108c0565b91505092915050565b60008060208385031215610a3d57610a3c6112d2565b5b600083013567ffffffffffffffff811115610a5b57610a5a6112cd565b5b610a67858286016108d5565b92509250509250929050565b600080600060608486031215610a8c57610a8b6112d2565b5b600084013567ffffffffffffffff811115610aaa57610aa96112cd565b5b610ab68682870161092b565b9350506020610ac786828701610959565b9250506040610ad8868287016108ab565b9150509250925092565b600080600060608486031215610afb57610afa6112d2565b5b6000610b0986828701610959565b9350506020610b1a8682870161083a565b9250506040610b2b8682870161083a565b9150509250925092565b6000610b418383610cb0565b905092915050565b6000610b558383610dae565b60208301905092915050565b610b6a816111a0565b82525050565b6000610b7b826110c9565b610b85818561110f565b935083602082028501610b97856110a9565b8060005b85811015610bd35784840389528151610bb48582610b35565b9450610bbf836110f5565b925060208a01995050600181019050610b9b565b50829750879550505050505092915050565b6000610bf0826110d4565b610bfa8185611120565b9350610c05836110b9565b8060005b83811015610c36578151610c1d8882610b49565b9750610c2883611102565b925050600181019050610c09565b5085935050505092915050565b610c4c816111b2565b82525050565b6000610c5e8385611131565b9350610c6b8385846111e8565b610c74836112d7565b840190509392505050565b6000610c8a826110df565b610c948185611142565b9350610ca48185602086016111f7565b80840191505092915050565b6000610cbb826110ea565b610cc5818561114d565b9350610cd58185602086016111f7565b610cde816112d7565b840191505092915050565b6000610cf4826110ea565b610cfe818561115e565b9350610d0e8185602086016111f7565b610d17816112d7565b840191505092915050565b6000610d2f60268361115e565b9150610d3a826112e8565b604082019050919050565b6000610d52601d8361115e565b9150610d5d82611337565b602082019050919050565b6000610d75602a8361115e565b9150610d8082611360565b604082019050919050565b6000610d98601f8361115e565b9150610da3826113af565b602082019050919050565b610db7816111de565b82525050565b610dc6816111de565b82525050565b6000610dd88284610c7f565b915081905092915050565b6000602082019050610df86000830184610b61565b92915050565b6000606082019050610e136000830186610b61565b610e206020830185610b61565b610e2d6040830184610dbd565b949350505050565b6000608082019050610e4a6000830187610b61565b8181036020830152610e5c8186610b70565b90508181036040830152610e708185610be5565b9050610e7f6060830184610c43565b95945050505050565b6000604082019050610e9d6000830186610b61565b8181036020830152610eb0818486610c52565b9050949350505050565b6000608082019050610ecf6000830187610b61565b610edc6020830186610dbd565b610ee96040830185610b61565b610ef66060830184610b61565b95945050505050565b600060a082019050610f146000830188610b61565b610f216020830187610dbd565b8181036040830152610f338186610ce9565b9050610f426060830185610dbd565b610f4f6080830184610c43565b9695505050505050565b60006020820190508181036000830152610f738184610ce9565b905092915050565b60006020820190508181036000830152610f9481610d22565b9050919050565b60006020820190508181036000830152610fb481610d45565b9050919050565b60006020820190508181036000830152610fd481610d68565b9050919050565b60006020820190508181036000830152610ff481610d8b565b9050919050565b6000611005611016565b9050611011828261122a565b919050565b6000604051905090565b600067ffffffffffffffff82111561103b5761103a61128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110675761106661128a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156110935761109261128a565b5b61109c826112d7565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061117a826111de565b9150611185836111de565b9250826111955761119461125b565b5b828204905092915050565b60006111ab826111be565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156112155780820151818401526020810190506111fa565b83811115611224576000848401525b50505050565b611233826112d7565b810181811067ffffffffffffffff821117156112525761125161128a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6113e1816111a0565b81146113ec57600080fd5b50565b6113f8816111b2565b811461140357600080fd5b50565b61140f816111de565b811461141a57600080fd5b5056fea2646970667358221220c31e8a5ca88f5ae54034b6491a4128b8c7599ac4cdb009070ccdd45a512dc07f64736f6c63430008070033"; type ReceiverEVMConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts b/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts index 51cf50c3..344afa71 100644 --- a/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/TestERC20__factory.ts @@ -317,7 +317,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea2646970667358221220fcfdc568a663fff3ad57cec6847cf2da019cf465788683cdfa49393f729d6a9f64736f6c63430008070033"; + "0x60806040523480156200001157600080fd5b5060405162001813380380620018138339818101604052810190620000379190620001a3565b818181600390805190602001906200005192919062000075565b5080600490805190602001906200006a92919062000075565b5050505050620003ac565b8280546200008390620002bd565b90600052602060002090601f016020900481019282620000a75760008555620000f3565b82601f10620000c257805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f2578251825591602001919060010190620000d5565b5b50905062000102919062000106565b5090565b5b808211156200012157600081600090555060010162000107565b5090565b60006200013c620001368462000251565b62000228565b9050828152602081018484840111156200015b576200015a6200038c565b5b6200016884828562000287565b509392505050565b600082601f83011262000188576200018762000387565b5b81516200019a84826020860162000125565b91505092915050565b60008060408385031215620001bd57620001bc62000396565b5b600083015167ffffffffffffffff811115620001de57620001dd62000391565b5b620001ec8582860162000170565b925050602083015167ffffffffffffffff81111562000210576200020f62000391565b5b6200021e8582860162000170565b9150509250929050565b60006200023462000247565b9050620002428282620002f3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200026f576200026e62000358565b5b6200027a826200039b565b9050602081019050919050565b60005b83811015620002a75780820151818401526020810190506200028a565b83811115620002b7576000848401525b50505050565b60006002820490506001821680620002d657607f821691505b60208210811415620002ed57620002ec62000329565b5b50919050565b620002fe826200039b565b810181811067ffffffffffffffff8211171562000320576200031f62000358565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61145780620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610ecf565b60405180910390f35b6100f160048036038101906100ec9190610cf6565b61032f565b6040516100fe9190610eb4565b60405180910390f35b61010f610352565b60405161011c9190610ff1565b60405180910390f35b61013f600480360381019061013a9190610ca3565b61035c565b60405161014c9190610eb4565b60405180910390f35b61015d61038b565b60405161016a919061100c565b60405180910390f35b61018d60048036038101906101889190610cf6565b610394565b60405161019a9190610eb4565b60405180910390f35b6101bd60048036038101906101b89190610cf6565b6103cb565b005b6101d960048036038101906101d49190610c36565b6103d9565b6040516101e69190610ff1565b60405180910390f35b6101f7610421565b6040516102049190610ecf565b60405180910390f35b61022760048036038101906102229190610cf6565b6104b3565b6040516102349190610eb4565b60405180910390f35b61025760048036038101906102529190610cf6565b61052a565b6040516102649190610eb4565b60405180910390f35b61028760048036038101906102829190610c63565b61054d565b6040516102949190610ff1565b60405180910390f35b6060600380546102ac90611121565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890611121565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a6105d4565b90506103478185856105dc565b600191505092915050565b6000600254905090565b6000806103676105d4565b90506103748582856107a7565b61037f858585610833565b60019150509392505050565b60006012905090565b60008061039f6105d4565b90506103c08185856103b1858961054d565b6103bb9190611043565b6105dc565b600191505092915050565b6103d58282610aab565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461043090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461045c90611121565b80156104a95780601f1061047e576101008083540402835291602001916104a9565b820191906000526020600020905b81548152906001019060200180831161048c57829003601f168201915b5050505050905090565b6000806104be6105d4565b905060006104cc828661054d565b905083811015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890610fb1565b60405180910390fd5b61051e82868684036105dc565b60019250505092915050565b6000806105356105d4565b9050610542818585610833565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561064c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064390610f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b390610f11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079a9190610ff1565b60405180910390a3505050565b60006107b3848461054d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082d578181101561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610f31565b60405180910390fd5b61082c84848484036105dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610f71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a90610ef1565b60405180910390fd5b61091e838383610c02565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b90610f51565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a929190610ff1565b60405180910390a3610aa5848484610c07565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290610fd1565b60405180910390fd5b610b2760008383610c02565b8060026000828254610b399190611043565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bea9190610ff1565b60405180910390a3610bfe60008383610c07565b5050565b505050565b505050565b600081359050610c1b816113f3565b92915050565b600081359050610c308161140a565b92915050565b600060208284031215610c4c57610c4b6111b1565b5b6000610c5a84828501610c0c565b91505092915050565b60008060408385031215610c7a57610c796111b1565b5b6000610c8885828601610c0c565b9250506020610c9985828601610c0c565b9150509250929050565b600080600060608486031215610cbc57610cbb6111b1565b5b6000610cca86828701610c0c565b9350506020610cdb86828701610c0c565b9250506040610cec86828701610c21565b9150509250925092565b60008060408385031215610d0d57610d0c6111b1565b5b6000610d1b85828601610c0c565b9250506020610d2c85828601610c21565b9150509250929050565b610d3f816110ab565b82525050565b6000610d5082611027565b610d5a8185611032565b9350610d6a8185602086016110ee565b610d73816111b6565b840191505092915050565b6000610d8b602383611032565b9150610d96826111c7565b604082019050919050565b6000610dae602283611032565b9150610db982611216565b604082019050919050565b6000610dd1601d83611032565b9150610ddc82611265565b602082019050919050565b6000610df4602683611032565b9150610dff8261128e565b604082019050919050565b6000610e17602583611032565b9150610e22826112dd565b604082019050919050565b6000610e3a602483611032565b9150610e458261132c565b604082019050919050565b6000610e5d602583611032565b9150610e688261137b565b604082019050919050565b6000610e80601f83611032565b9150610e8b826113ca565b602082019050919050565b610e9f816110d7565b82525050565b610eae816110e1565b82525050565b6000602082019050610ec96000830184610d36565b92915050565b60006020820190508181036000830152610ee98184610d45565b905092915050565b60006020820190508181036000830152610f0a81610d7e565b9050919050565b60006020820190508181036000830152610f2a81610da1565b9050919050565b60006020820190508181036000830152610f4a81610dc4565b9050919050565b60006020820190508181036000830152610f6a81610de7565b9050919050565b60006020820190508181036000830152610f8a81610e0a565b9050919050565b60006020820190508181036000830152610faa81610e2d565b9050919050565b60006020820190508181036000830152610fca81610e50565b9050919050565b60006020820190508181036000830152610fea81610e73565b9050919050565b60006020820190506110066000830184610e96565b92915050565b60006020820190506110216000830184610ea5565b92915050565b600081519050919050565b600082825260208201905092915050565b600061104e826110d7565b9150611059836110d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561108e5761108d611153565b5b828201905092915050565b60006110a4826110b7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561110c5780820151818401526020810190506110f1565b8381111561111b576000848401525b50505050565b6000600282049050600182168061113957607f821691505b6020821081141561114d5761114c611182565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6113fc81611099565b811461140757600080fd5b50565b611413816110d7565b811461141e57600080fd5b5056fea26469706673582212203c8c0934d33c58546e4ab2e4e41476df7926eae7ae1412541fc4d914f04b2c8364736f6c63430008070033"; type TestERC20ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts index e0e2a177..fa979a68 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNative__factory.ts @@ -244,7 +244,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162001638380380620016388339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c61132b6200030d6000396000818161020201528181610284015281816103f0015281816104b5015281816105b30152818161063501526107130152600081816101e001528181610248015281816104910152818161059101526105f9015261132b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610c56565b61014c565b005b6100b860048036038101906100b39190610c03565b61035a565b005b6100c261048f565b6040516100cf9190610f68565b60405180910390f35b6100e06104b3565b6040516100ed9190610e9f565b60405180910390f35b6100fe6104d7565b60405161010b9190610e9f565b60405180910390f35b61012e60048036038101906101299190610c56565b6104fd565b005b61014a60048036038101906101459190610d0b565b61070b565b005b61015461075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102467f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016102c7959493929190610ef1565b600060405180830381600087803b1580156102e157600080fd5b505af11580156102f5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161034393929190611040565b60405180910390a2610353610831565b5050505050565b61036261075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61043483837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161047a9190611025565b60405180910390a261048a610831565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61050561075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105f77f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610678959493929190610ef1565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516106f493929190611040565b60405180910390a2610704610831565b5050505050565b6107583330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661083b909392919063ffffffff16565b50565b600260005414156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890611005565b60405180910390fd5b6002600081905550565b61082c8363a9059cbb60e01b84846040516024016107ca929190610f3f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b505050565b6001600081905550565b6108be846323b872dd60e01b85858560405160240161085c93929190610eba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b50505050565b6000610926826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661098b9092919063ffffffff16565b905060008151111561098657808060200190518101906109469190610cde565b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90610fe5565b60405180910390fd5b5b505050565b606061099a84846000856109a3565b90509392505050565b6060824710156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90610fa5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a119190610e88565b60006040518083038185875af1925050503d8060008114610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b5091509150610a6487838387610a70565b92505050949350505050565b60608315610ad357600083511415610acb57610a8b85610ae6565b610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190610fc5565b60405180910390fd5b5b829050610ade565b610add8383610b09565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610b1c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190610f83565b60405180910390fd5b600081359050610b6881611299565b92915050565b600081519050610b7d816112b0565b92915050565b600081359050610b92816112c7565b92915050565b60008083601f840112610bae57610bad611184565b5b8235905067ffffffffffffffff811115610bcb57610bca61117f565b5b602083019150836001820283011115610be757610be6611189565b5b9250929050565b600081359050610bfd816112de565b92915050565b600080600060608486031215610c1c57610c1b611193565b5b6000610c2a86828701610b59565b9350506020610c3b86828701610bee565b9250506040610c4c86828701610b83565b9150509250925092565b600080600080600060808688031215610c7257610c71611193565b5b6000610c8088828901610b59565b9550506020610c9188828901610bee565b945050604086013567ffffffffffffffff811115610cb257610cb161118e565b5b610cbe88828901610b98565b93509350506060610cd188828901610b83565b9150509295509295909350565b600060208284031215610cf457610cf3611193565b5b6000610d0284828501610b6e565b91505092915050565b600060208284031215610d2157610d20611193565b5b6000610d2f84828501610bee565b91505092915050565b610d41816110b5565b82525050565b6000610d538385611088565b9350610d6083858461113d565b610d6983611198565b840190509392505050565b6000610d7f82611072565b610d898185611099565b9350610d9981856020860161114c565b80840191505092915050565b610dae81611107565b82525050565b6000610dbf8261107d565b610dc981856110a4565b9350610dd981856020860161114c565b610de281611198565b840191505092915050565b6000610dfa6026836110a4565b9150610e05826111a9565b604082019050919050565b6000610e1d601d836110a4565b9150610e28826111f8565b602082019050919050565b6000610e40602a836110a4565b9150610e4b82611221565b604082019050919050565b6000610e63601f836110a4565b9150610e6e82611270565b602082019050919050565b610e82816110fd565b82525050565b6000610e948284610d74565b915081905092915050565b6000602082019050610eb46000830184610d38565b92915050565b6000606082019050610ecf6000830186610d38565b610edc6020830185610d38565b610ee96040830184610e79565b949350505050565b6000608082019050610f066000830188610d38565b610f136020830187610d38565b610f206040830186610e79565b8181036060830152610f33818486610d47565b90509695505050505050565b6000604082019050610f546000830185610d38565b610f616020830184610e79565b9392505050565b6000602082019050610f7d6000830184610da5565b92915050565b60006020820190508181036000830152610f9d8184610db4565b905092915050565b60006020820190508181036000830152610fbe81610ded565b9050919050565b60006020820190508181036000830152610fde81610e10565b9050919050565b60006020820190508181036000830152610ffe81610e33565b9050919050565b6000602082019050818103600083015261101e81610e56565b9050919050565b600060208201905061103a6000830184610e79565b92915050565b60006040820190506110556000830186610e79565b8181036020830152611068818486610d47565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006110c0826110dd565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111282611119565b9050919050565b60006111248261112b565b9050919050565b6000611136826110dd565b9050919050565b82818337600083830152505050565b60005b8381101561116a57808201518184015260208101905061114f565b83811115611179576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6112a2816110b5565b81146112ad57600080fd5b50565b6112b9816110c7565b81146112c457600080fd5b50565b6112d0816110d3565b81146112db57600080fd5b50565b6112e7816110fd565b81146112f257600080fd5b5056fea2646970667358221220724dfbb3e6e4b9c22a02d27916991d2dd9a38c585c03f6d0aef019c03f957ee464736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b5060405162001638380380620016388339818101604052810190620000379190620001ec565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000aa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620000e25750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200011a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050506200029b565b600081519050620001e68162000281565b92915050565b6000806000606084860312156200020857620002076200027c565b5b60006200021886828701620001d5565b93505060206200022b86828701620001d5565b92505060406200023e86828701620001d5565b9150509250925092565b600062000255826200025c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200028c8162000248565b81146200029857600080fd5b50565b60805160601c60a05160601c61132b6200030d6000396000818161020201528181610284015281816103f0015281816104b5015281816105b30152818161063501526107130152600081816101e001528181610248015281816104910152818161059101526105f9015261132b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100d85780635b112591146100f65780635e3e9fef14610114578063743e0c9b146101305761007d565b806302d5c89914610082578063106e62901461009e578063116191b6146100ba575b600080fd5b61009c60048036038101906100979190610c56565b61014c565b005b6100b860048036038101906100b39190610c03565b61035a565b005b6100c261048f565b6040516100cf9190610f68565b60405180910390f35b6100e06104b3565b6040516100ed9190610e9f565b60405180910390f35b6100fe6104d7565b60405161010b9190610e9f565b60405180910390f35b61012e60048036038101906101299190610c56565b6104fd565b005b61014a60048036038101906101459190610d0b565b61070b565b005b61015461075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102467f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b81526004016102c7959493929190610ef1565b600060405180830381600087803b1580156102e157600080fd5b505af11580156102f5573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161034393929190611040565b60405180910390a2610353610831565b5050505050565b61036261075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61043483837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161047a9190611025565b60405180910390a261048a610831565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61050561075b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105f77f0000000000000000000000000000000000000000000000000000000000000000857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107ab9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610678959493929190610ef1565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516106f493929190611040565b60405180910390a2610704610831565b5050505050565b6107583330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661083b909392919063ffffffff16565b50565b600260005414156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890611005565b60405180910390fd5b6002600081905550565b61082c8363a9059cbb60e01b84846040516024016107ca929190610f3f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b505050565b6001600081905550565b6108be846323b872dd60e01b85858560405160240161085c93929190610eba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506108c4565b50505050565b6000610926826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661098b9092919063ffffffff16565b905060008151111561098657808060200190518101906109469190610cde565b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90610fe5565b60405180910390fd5b5b505050565b606061099a84846000856109a3565b90509392505050565b6060824710156109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df90610fa5565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610a119190610e88565b60006040518083038185875af1925050503d8060008114610a4e576040519150601f19603f3d011682016040523d82523d6000602084013e610a53565b606091505b5091509150610a6487838387610a70565b92505050949350505050565b60608315610ad357600083511415610acb57610a8b85610ae6565b610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac190610fc5565b60405180910390fd5b5b829050610ade565b610add8383610b09565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115610b1c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190610f83565b60405180910390fd5b600081359050610b6881611299565b92915050565b600081519050610b7d816112b0565b92915050565b600081359050610b92816112c7565b92915050565b60008083601f840112610bae57610bad611184565b5b8235905067ffffffffffffffff811115610bcb57610bca61117f565b5b602083019150836001820283011115610be757610be6611189565b5b9250929050565b600081359050610bfd816112de565b92915050565b600080600060608486031215610c1c57610c1b611193565b5b6000610c2a86828701610b59565b9350506020610c3b86828701610bee565b9250506040610c4c86828701610b83565b9150509250925092565b600080600080600060808688031215610c7257610c71611193565b5b6000610c8088828901610b59565b9550506020610c9188828901610bee565b945050604086013567ffffffffffffffff811115610cb257610cb161118e565b5b610cbe88828901610b98565b93509350506060610cd188828901610b83565b9150509295509295909350565b600060208284031215610cf457610cf3611193565b5b6000610d0284828501610b6e565b91505092915050565b600060208284031215610d2157610d20611193565b5b6000610d2f84828501610bee565b91505092915050565b610d41816110b5565b82525050565b6000610d538385611088565b9350610d6083858461113d565b610d6983611198565b840190509392505050565b6000610d7f82611072565b610d898185611099565b9350610d9981856020860161114c565b80840191505092915050565b610dae81611107565b82525050565b6000610dbf8261107d565b610dc981856110a4565b9350610dd981856020860161114c565b610de281611198565b840191505092915050565b6000610dfa6026836110a4565b9150610e05826111a9565b604082019050919050565b6000610e1d601d836110a4565b9150610e28826111f8565b602082019050919050565b6000610e40602a836110a4565b9150610e4b82611221565b604082019050919050565b6000610e63601f836110a4565b9150610e6e82611270565b602082019050919050565b610e82816110fd565b82525050565b6000610e948284610d74565b915081905092915050565b6000602082019050610eb46000830184610d38565b92915050565b6000606082019050610ecf6000830186610d38565b610edc6020830185610d38565b610ee96040830184610e79565b949350505050565b6000608082019050610f066000830188610d38565b610f136020830187610d38565b610f206040830186610e79565b8181036060830152610f33818486610d47565b90509695505050505050565b6000604082019050610f546000830185610d38565b610f616020830184610e79565b9392505050565b6000602082019050610f7d6000830184610da5565b92915050565b60006020820190508181036000830152610f9d8184610db4565b905092915050565b60006020820190508181036000830152610fbe81610ded565b9050919050565b60006020820190508181036000830152610fde81610e10565b9050919050565b60006020820190508181036000830152610ffe81610e33565b9050919050565b6000602082019050818103600083015261101e81610e56565b9050919050565b600060208201905061103a6000830184610e79565b92915050565b60006040820190506110556000830186610e79565b8181036020830152611068818486610d47565b9050949350505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006110c0826110dd565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111282611119565b9050919050565b60006111248261112b565b9050919050565b6000611136826110dd565b9050919050565b82818337600083830152505050565b60005b8381101561116a57808201518184015260208101905061114f565b83811115611179576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6112a2816110b5565b81146112ad57600080fd5b50565b6112b9816110c7565b81146112c457600080fd5b50565b6112d0816110d3565b81146112db57600080fd5b50565b6112e7816110fd565b81146112f257600080fd5b5056fea2646970667358221220655dba4ad3270e6153f071458a8ebcb80a69a23cb0bf8a44ed4a1f4df173d65664736f6c63430008070033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts index d915e84f..29c3353f 100644 --- a/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts +++ b/typechain-types/factories/contracts/prototypes/evm/ZetaConnectorNonNative__factory.ts @@ -288,7 +288,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002553480156200003557600080fd5b506040516200158d3803806200158d83398181016040528101906200005b919062000210565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000ce5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001065750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200013e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050620002bf565b6000815190506200020a81620002a5565b92915050565b6000806000606084860312156200022c576200022b620002a0565b5b60006200023c86828701620001f9565b93505060206200024f86828701620001f9565b92505060406200026286828701620001f9565b9150509250925092565b6000620002798262000280565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002b0816200026c565b8114620002bc57600080fd5b50565b60805160601c60a05160601c611247620003466000396000818161023001528181610311015281816103fc0152818161056601528181610647015281816107550152818161083101528181610912015281816109fd0152610b9d01526000818161034d015281816103c0015281816107310152818161094e01526109c101526112476000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80635b112591116100665780635b1125911461010c5780635e3e9fef1461012a5780636f8b44b014610146578063743e0c9b14610162578063d5abeb011461017e57610093565b806302d5c89914610098578063106e6290146100b4578063116191b6146100d057806321e093b1146100ee575b600080fd5b6100b260048036038101906100ad9190610d88565b61019c565b005b6100ce60048036038101906100c99190610d35565b6104d2565b005b6100d861072f565b6040516100e59190610fbf565b60405180910390f35b6100f6610753565b6040516101039190610ef6565b60405180910390f35b610114610777565b6040516101219190610ef6565b60405180910390f35b610144600480360381019061013f9190610d88565b61079d565b005b610160600480360381019061015b9190610e10565b610ad3565b005b61017c60048036038101906101779190610e10565b610b9b565b005b610186610c2b565b6040516101939190610ffa565b60405180910390f35b6101a4610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461022b576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561029457600080fd5b505afa1580156102a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cc9190610e3d565b856102d79190611069565b111561030f576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161038c93929190610f88565b600060405180830381600087803b1580156103a657600080fd5b505af11580156103ba573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161043f959493929190610f11565b600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104bb93929190611015565b60405180910390a26104cb610c81565b5050505050565b6104da610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610561576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ca57600080fd5b505afa1580156105de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106029190610e3d565b8361060d9190611069565b1115610645576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b81526004016106a293929190610f88565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161071a9190610ffa565b60405180910390a261072a610c81565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a5610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461082c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd9190610e3d565b856108d89190611069565b1115610910576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161098d93929190610f88565b600060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610a40959493929190610f11565b600060405180830381600087803b158015610a5a57600080fd5b505af1158015610a6e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced858585604051610abc93929190611015565b60405180910390a2610acc610c81565b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c81604051610b909190610ffa565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401610bf6929190610f5f565b600060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b5050505050565b60025481565b60026000541415610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e90610fda565b60405180910390fd5b6002600081905550565b6001600081905550565b600081359050610c9a816111cc565b92915050565b600081359050610caf816111e3565b92915050565b60008083601f840112610ccb57610cca61117e565b5b8235905067ffffffffffffffff811115610ce857610ce7611179565b5b602083019150836001820283011115610d0457610d03611183565b5b9250929050565b600081359050610d1a816111fa565b92915050565b600081519050610d2f816111fa565b92915050565b600080600060608486031215610d4e57610d4d61118d565b5b6000610d5c86828701610c8b565b9350506020610d6d86828701610d0b565b9250506040610d7e86828701610ca0565b9150509250925092565b600080600080600060808688031215610da457610da361118d565b5b6000610db288828901610c8b565b9550506020610dc388828901610d0b565b945050604086013567ffffffffffffffff811115610de457610de3611188565b5b610df088828901610cb5565b93509350506060610e0388828901610ca0565b9150509295509295909350565b600060208284031215610e2657610e2561118d565b5b6000610e3484828501610d0b565b91505092915050565b600060208284031215610e5357610e5261118d565b5b6000610e6184828501610d20565b91505092915050565b610e73816110bf565b82525050565b610e82816110d1565b82525050565b6000610e948385611047565b9350610ea183858461113b565b610eaa83611192565b840190509392505050565b610ebe81611105565b82525050565b6000610ed1601f83611058565b9150610edc826111a3565b602082019050919050565b610ef0816110fb565b82525050565b6000602082019050610f0b6000830184610e6a565b92915050565b6000608082019050610f266000830188610e6a565b610f336020830187610e6a565b610f406040830186610ee7565b8181036060830152610f53818486610e88565b90509695505050505050565b6000604082019050610f746000830185610e6a565b610f816020830184610ee7565b9392505050565b6000606082019050610f9d6000830186610e6a565b610faa6020830185610ee7565b610fb76040830184610e79565b949350505050565b6000602082019050610fd46000830184610eb5565b92915050565b60006020820190508181036000830152610ff381610ec4565b9050919050565b600060208201905061100f6000830184610ee7565b92915050565b600060408201905061102a6000830186610ee7565b818103602083015261103d818486610e88565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611074826110fb565b915061107f836110fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156110b4576110b361114a565b5b828201905092915050565b60006110ca826110db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111082611117565b9050919050565b600061112282611129565b9050919050565b6000611134826110db565b9050919050565b82818337600083830152505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6111d5816110bf565b81146111e057600080fd5b50565b6111ec816110d1565b81146111f757600080fd5b50565b611203816110fb565b811461120e57600080fd5b5056fea26469706673582212201f817c0195940fddc4165c2ca6317081a920edafb2f79b81682fec2a95beb85364736f6c63430008070033"; + "0x60c06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002553480156200003557600080fd5b506040516200158d3803806200158d83398181016040528101906200005b919062000210565b8282826001600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620000ce5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001065750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200013e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050620002bf565b6000815190506200020a81620002a5565b92915050565b6000806000606084860312156200022c576200022b620002a0565b5b60006200023c86828701620001f9565b93505060206200024f86828701620001f9565b92505060406200026286828701620001f9565b9150509250925092565b6000620002798262000280565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620002b0816200026c565b8114620002bc57600080fd5b50565b60805160601c60a05160601c611247620003466000396000818161023001528181610311015281816103fc0152818161056601528181610647015281816107550152818161083101528181610912015281816109fd0152610b9d01526000818161034d015281816103c0015281816107310152818161094e01526109c101526112476000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80635b112591116100665780635b1125911461010c5780635e3e9fef1461012a5780636f8b44b014610146578063743e0c9b14610162578063d5abeb011461017e57610093565b806302d5c89914610098578063106e6290146100b4578063116191b6146100d057806321e093b1146100ee575b600080fd5b6100b260048036038101906100ad9190610d88565b61019c565b005b6100ce60048036038101906100c99190610d35565b6104d2565b005b6100d861072f565b6040516100e59190610fbf565b60405180910390f35b6100f6610753565b6040516101039190610ef6565b60405180910390f35b610114610777565b6040516101219190610ef6565b60405180910390f35b610144600480360381019061013f9190610d88565b61079d565b005b610160600480360381019061015b9190610e10565b610ad3565b005b61017c60048036038101906101779190610e10565b610b9b565b005b610186610c2b565b6040516101939190610ffa565b60405180910390f35b6101a4610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461022b576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561029457600080fd5b505afa1580156102a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cc9190610e3d565b856102d79190611069565b111561030f576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161038c93929190610f88565b600060405180830381600087803b1580156103a657600080fd5b505af11580156103ba573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b8969bd47f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b815260040161043f959493929190610f11565b600060405180830381600087803b15801561045957600080fd5b505af115801561046d573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104bb93929190611015565b60405180910390a26104cb610c81565b5050505050565b6104da610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610561576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ca57600080fd5b505afa1580156105de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106029190610e3d565b8361060d9190611069565b1115610645576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8484846040518463ffffffff1660e01b81526004016106a293929190610f88565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161071a9190610ffa565b60405180910390a261072a610c81565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a5610c31565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461082c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd9190610e3d565b856108d89190611069565b1115610910576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee7f000000000000000000000000000000000000000000000000000000000000000086846040518463ffffffff1660e01b815260040161098d93929190610f88565b600060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635131ab597f0000000000000000000000000000000000000000000000000000000000000000878787876040518663ffffffff1660e01b8152600401610a40959493929190610f11565b600060405180830381600087803b158015610a5a57600080fd5b505af1158015610a6e573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced858585604051610abc93929190611015565b60405180910390a2610acc610c81565b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c81604051610b909190610ffa565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401610bf6929190610f5f565b600060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b5050505050565b60025481565b60026000541415610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e90610fda565b60405180910390fd5b6002600081905550565b6001600081905550565b600081359050610c9a816111cc565b92915050565b600081359050610caf816111e3565b92915050565b60008083601f840112610ccb57610cca61117e565b5b8235905067ffffffffffffffff811115610ce857610ce7611179565b5b602083019150836001820283011115610d0457610d03611183565b5b9250929050565b600081359050610d1a816111fa565b92915050565b600081519050610d2f816111fa565b92915050565b600080600060608486031215610d4e57610d4d61118d565b5b6000610d5c86828701610c8b565b9350506020610d6d86828701610d0b565b9250506040610d7e86828701610ca0565b9150509250925092565b600080600080600060808688031215610da457610da361118d565b5b6000610db288828901610c8b565b9550506020610dc388828901610d0b565b945050604086013567ffffffffffffffff811115610de457610de3611188565b5b610df088828901610cb5565b93509350506060610e0388828901610ca0565b9150509295509295909350565b600060208284031215610e2657610e2561118d565b5b6000610e3484828501610d0b565b91505092915050565b600060208284031215610e5357610e5261118d565b5b6000610e6184828501610d20565b91505092915050565b610e73816110bf565b82525050565b610e82816110d1565b82525050565b6000610e948385611047565b9350610ea183858461113b565b610eaa83611192565b840190509392505050565b610ebe81611105565b82525050565b6000610ed1601f83611058565b9150610edc826111a3565b602082019050919050565b610ef0816110fb565b82525050565b6000602082019050610f0b6000830184610e6a565b92915050565b6000608082019050610f266000830188610e6a565b610f336020830187610e6a565b610f406040830186610ee7565b8181036060830152610f53818486610e88565b90509695505050505050565b6000604082019050610f746000830185610e6a565b610f816020830184610ee7565b9392505050565b6000606082019050610f9d6000830186610e6a565b610faa6020830185610ee7565b610fb76040830184610e79565b949350505050565b6000602082019050610fd46000830184610eb5565b92915050565b60006020820190508181036000830152610ff381610ec4565b9050919050565b600060208201905061100f6000830184610ee7565b92915050565b600060408201905061102a6000830186610ee7565b818103602083015261103d818486610e88565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611074826110fb565b915061107f836110fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156110b4576110b361114a565b5b828201905092915050565b60006110ca826110db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061111082611117565b9050919050565b600061112282611129565b9050919050565b6000611134826110db565b9050919050565b82818337600083830152505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6111d5816110bf565b81146111e057600080fd5b50565b6111ec816110d1565b81146111f757600080fd5b50565b611203816110fb565b811461120e57600080fd5b5056fea264697066735822122044af4e37ef2ad6dd470fc1c3af732b6c36970257d67f6756302aee086afdfa4d64736f6c63430008070033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts b/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts index 705ce619..d4e05ae4 100644 --- a/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts +++ b/typechain-types/factories/contracts/prototypes/zevm/GatewayZEVM__factory.ts @@ -707,7 +707,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c403e7110f39344a7464aedddcc11ad944288d8cd79a4d58fa568decbde916ef64736f6c63430008070033"; + "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50620000586200005e60201b60201c565b62000208565b600060019054906101000a900460ff1615620000b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a8906200015c565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff1614620001225760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516200011991906200017e565b60405180910390a15b565b6000620001336027836200019b565b91506200014082620001b9565b604082019050919050565b6200015681620001ac565b82525050565b60006020820190508181036000830152620001778162000124565b9050919050565b60006020820190506200019560008301846200014b565b92915050565b600082825260208201905092915050565b600060ff82169050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60805160601c613e6d6200024360003960008181610b2a01528181610bb901528181610ccb01528181610d5a0152610e0a0152613e6d6000f3fe6080604052600436106101235760003560e01c806352d1902d116100a0578063bcf7f32b11610064578063bcf7f32b14610454578063c39aca371461047d578063c4d66de8146104a6578063f2fde38b146104cf578063f45346dc146104f8576101ff565b806352d1902d146103955780635af65967146103c0578063715018a6146103e95780637993c1e0146104005780638da5cb5b14610429576101ff565b80632e1a7d4d116100e75780632e1a7d4d146102d3578063309f5004146102fc5780633659cfe6146103255780633ce4a5bc1461034e5780634f1ef28614610379576101ff565b80630ac7c44c14610204578063135390f91461022d57806321501a951461025657806321e093b11461027f578063267e75a0146102aa576101ff565b366101ff5760fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156101c6575073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156101fd576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561021057600080fd5b5061022b600480360381019061022691906129b3565b610521565b005b34801561023957600080fd5b50610254600480360381019061024f9190612a2f565b610588565b005b34801561026257600080fd5b5061027d60048036038101906102789190612cae565b61067f565b005b34801561028b57600080fd5b5061029461084e565b6040516102a1919061328e565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc9190612dac565b610874565b005b3480156102df57600080fd5b506102fa60048036038101906102f59190612d52565b610957565b005b34801561030857600080fd5b50610323600480360381019061031e9190612b42565b610a34565b005b34801561033157600080fd5b5061034c6004803603810190610347919061283d565b610b28565b005b34801561035a57600080fd5b50610363610cb1565b604051610370919061328e565b60405180910390f35b610393600480360381019061038e919061286a565b610cc9565b005b3480156103a157600080fd5b506103aa610e06565b6040516103b791906134c5565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190612b42565b610ebf565b005b3480156103f557600080fd5b506103fe6110f1565b005b34801561040c57600080fd5b5061042760048036038101906104229190612a9e565b611105565b005b34801561043557600080fd5b5061043e611202565b60405161044b919061328e565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612bf8565b61122c565b005b34801561048957600080fd5b506104a4600480360381019061049f9190612bf8565b611320565b005b3480156104b257600080fd5b506104cd60048036038101906104c8919061283d565b611552565b005b3480156104db57600080fd5b506104f660048036038101906104f1919061283d565b611749565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612906565b6117cd565b005b610529611989565b3373ffffffffffffffffffffffffffffffffffffffff167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f848484604051610573939291906134e0565b60405180910390a26105836119d9565b505050565b610590611989565b600061059c83836119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716838686858773ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612d7f565b60405161066995949392919061342f565b60405180910390a25061067a6119d9565b505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061077157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156107a8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107b28484611cd3565b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e8660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786866040518663ffffffff1660e01b815260040161081595949392919061372b565b600060405180830381600087803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b505050505050505050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087c611989565b61089a8373735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab60405160200161091a9190613247565b60405160208183030381529060405286600080888860405161094297969594939291906132e0565b60405180910390a26109526119d9565b505050565b61095f611989565b61097d8173735b14bb79463307aacbed86daf3322b1e6226ab611cd3565b3373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771660fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673735b14bb79463307aacbed86daf3322b1e6226ab6040516020016109fd9190613247565b60405160208183030381529060405284600080604051610a21959493929190613351565b60405180910390a2610a316119d9565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b8152600401610aee9594939291906136d6565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610bf6611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390613596565b60405180910390fd5b610c5581611f46565b610cae81600067ffffffffffffffff811115610c7457610c736139f0565b5b6040519080825280601f01601f191660200182016040528015610ca65781602001600182028036833780820191505090505b506000611f51565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613576565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d97611eef565b73ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490613596565b60405180910390fd5b610df682611f46565b610e0282826001611f51565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906135b6565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f38576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610fb157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610fe8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161102392919061349c565b602060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110759190612959565b508273ffffffffffffffffffffffffffffffffffffffff166369582bee87878786866040518663ffffffff1660e01b81526004016110b79594939291906136d6565b600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050505050505050565b6110f96120ce565b611103600061214c565b565b61110d611989565b600061111985856119e3565b90503373ffffffffffffffffffffffffffffffffffffffff167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716858888858973ffffffffffffffffffffffffffffffffffffffff16634d8943bb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119d57600080fd5b505afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190612d7f565b89896040516111ea97969594939291906133be565b60405180910390a2506111fb6119d9565b5050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b81526004016112e695949392919061372b565b600060405180830381600087803b15801561130057600080fd5b505af1158015611314573d6000803e3d6000fd5b50505050505050505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061141257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611449576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b815260040161148492919061349c565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d69190612959565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b815260040161151895949392919061372b565b600060405180830381600087803b15801561153257600080fd5b505af1158015611546573d6000803e3d6000fd5b50505050505050505050565b60008060019054906101000a900460ff161590508080156115835750600160008054906101000a900460ff1660ff16105b806115b0575061159230612212565b1580156115af5750600160008054906101000a900460ff1660ff16145b5b6115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e6906135f6565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561162c576001600060016101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611693576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169b612235565b6116a361228e565b6116ab6122df565b8160fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117455760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161173c9190613519565b60405180910390a15b5050565b6117516120ce565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613556565b60405180910390fd5b6117ca8161214c565b50565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611846576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118bf57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156118f6576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166347e7ef2482846040518363ffffffff1660e01b815260040161193192919061349c565b602060405180830381600087803b15801561194b57600080fd5b505af115801561195f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119839190612959565b50505050565b600260c95414156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c6906136b6565b60405180910390fd5b600260c981905550565b600160c981905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b158015611a2d57600080fd5b505afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6591906128c6565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401611aba939291906132a9565b602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c9190612959565b611b42576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff1660e01b8152600401611b7f939291906132a9565b602060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612959565b611c07576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b8152600401611c409190613780565b602060405180830381600087803b158015611c5a57600080fd5b505af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612959565b611cc8576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505092915050565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611d32939291906132a9565b602060405180830381600087803b158015611d4c57600080fd5b505af1158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d849190612959565b611dba576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b8152600401611e159190613780565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1683604051611e6d90613279565b60006040518083038185875af1925050503d8060008114611eaa576040519150601f19603f3d011682016040523d82523d6000602084013e611eaf565b606091505b5050905080611eea576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611f1d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f4e6120ce565b50565b611f7d7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612342565b60000160009054906101000a900460ff1615611fa157611f9c8361234c565b6120c9565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe757600080fd5b505afa92505050801561201857506040513d601f19601f820116820180604052508101906120159190612986565b60015b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613616565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906135d6565b60405180910390fd5b506120c8838383612405565b5b505050565b6120d6612431565b73ffffffffffffffffffffffffffffffffffffffff166120f4611202565b73ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214190613656565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90613696565b60405180910390fd5b61228c612439565b565b600060019054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d490613696565b60405180910390fd5b565b600060019054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613696565b60405180910390fd5b61233661249a565b565b6000819050919050565b6000819050919050565b61235581612212565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613636565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612338565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61240e836124f3565b60008251118061241b5750805b1561242c5761242a8383612542565b505b505050565b600033905090565b600060019054906101000a900460ff16612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613696565b60405180910390fd5b612498612493612431565b61214c565b565b600060019054906101000a900460ff166124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613696565b60405180910390fd5b600160c981905550565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606125678383604051806060016040528060278152602001613e116027913961256f565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516125999190613262565b600060405180830381855af49150503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50915091506125ea868383876125f5565b925050509392505050565b60608315612658576000835114156126505761261085612212565b61264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613676565b60405180910390fd5b5b829050612663565b612662838361266b565b5b949350505050565b60008251111561267e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29190613534565b60405180910390fd5b60006126ce6126c9846137c0565b61379b565b9050828152602081018484840111156126ea576126e9613a3d565b5b6126f5848285613959565b509392505050565b60008135905061270c81613db4565b92915050565b60008151905061272181613db4565b92915050565b60008151905061273681613dcb565b92915050565b60008151905061274b81613de2565b92915050565b60008083601f84011261276757612766613a29565b5b8235905067ffffffffffffffff81111561278457612783613a24565b5b6020830191508360018202830111156127a05761279f613a38565b5b9250929050565b600082601f8301126127bc576127bb613a29565b5b81356127cc8482602086016126bb565b91505092915050565b6000606082840312156127eb576127ea613a2e565b5b81905092915050565b60006060828403121561280a57612809613a2e565b5b81905092915050565b60008135905061282281613df9565b92915050565b60008151905061283781613df9565b92915050565b60006020828403121561285357612852613a4c565b5b6000612861848285016126fd565b91505092915050565b6000806040838503121561288157612880613a4c565b5b600061288f858286016126fd565b925050602083013567ffffffffffffffff8111156128b0576128af613a42565b5b6128bc858286016127a7565b9150509250929050565b600080604083850312156128dd576128dc613a4c565b5b60006128eb85828601612712565b92505060206128fc85828601612828565b9150509250929050565b60008060006060848603121561291f5761291e613a4c565b5b600061292d868287016126fd565b935050602061293e86828701612813565b925050604061294f868287016126fd565b9150509250925092565b60006020828403121561296f5761296e613a4c565b5b600061297d84828501612727565b91505092915050565b60006020828403121561299c5761299b613a4c565b5b60006129aa8482850161273c565b91505092915050565b6000806000604084860312156129cc576129cb613a4c565b5b600084013567ffffffffffffffff8111156129ea576129e9613a42565b5b6129f6868287016127a7565b935050602084013567ffffffffffffffff811115612a1757612a16613a42565b5b612a2386828701612751565b92509250509250925092565b600080600060608486031215612a4857612a47613a4c565b5b600084013567ffffffffffffffff811115612a6657612a65613a42565b5b612a72868287016127a7565b9350506020612a8386828701612813565b9250506040612a94868287016126fd565b9150509250925092565b600080600080600060808688031215612aba57612ab9613a4c565b5b600086013567ffffffffffffffff811115612ad857612ad7613a42565b5b612ae4888289016127a7565b9550506020612af588828901612813565b9450506040612b06888289016126fd565b935050606086013567ffffffffffffffff811115612b2757612b26613a42565b5b612b3388828901612751565b92509250509295509295909350565b60008060008060008060a08789031215612b5f57612b5e613a4c565b5b600087013567ffffffffffffffff811115612b7d57612b7c613a42565b5b612b8989828a016127d5565b9650506020612b9a89828a016126fd565b9550506040612bab89828a01612813565b9450506060612bbc89828a016126fd565b935050608087013567ffffffffffffffff811115612bdd57612bdc613a42565b5b612be989828a01612751565b92509250509295509295509295565b60008060008060008060a08789031215612c1557612c14613a4c565b5b600087013567ffffffffffffffff811115612c3357612c32613a42565b5b612c3f89828a016127f4565b9650506020612c5089828a016126fd565b9550506040612c6189828a01612813565b9450506060612c7289828a016126fd565b935050608087013567ffffffffffffffff811115612c9357612c92613a42565b5b612c9f89828a01612751565b92509250509295509295509295565b600080600080600060808688031215612cca57612cc9613a4c565b5b600086013567ffffffffffffffff811115612ce857612ce7613a42565b5b612cf4888289016127f4565b9550506020612d0588828901612813565b9450506040612d16888289016126fd565b935050606086013567ffffffffffffffff811115612d3757612d36613a42565b5b612d4388828901612751565b92509250509295509295909350565b600060208284031215612d6857612d67613a4c565b5b6000612d7684828501612813565b91505092915050565b600060208284031215612d9557612d94613a4c565b5b6000612da384828501612828565b91505092915050565b600080600060408486031215612dc557612dc4613a4c565b5b6000612dd386828701612813565b935050602084013567ffffffffffffffff811115612df457612df3613a42565b5b612e0086828701612751565b92509250509250925092565b612e15816138d6565b82525050565b612e24816138d6565b82525050565b612e3b612e36826138d6565b6139cc565b82525050565b612e4a816138f4565b82525050565b6000612e5c8385613807565b9350612e69838584613959565b612e7283613a51565b840190509392505050565b6000612e898385613818565b9350612e96838584613959565b612e9f83613a51565b840190509392505050565b6000612eb5826137f1565b612ebf8185613818565b9350612ecf818560208601613968565b612ed881613a51565b840191505092915050565b6000612eee826137f1565b612ef88185613829565b9350612f08818560208601613968565b80840191505092915050565b612f1d81613935565b82525050565b612f2c81613947565b82525050565b6000612f3d826137fc565b612f478185613834565b9350612f57818560208601613968565b612f6081613a51565b840191505092915050565b6000612f78602683613834565b9150612f8382613a6f565b604082019050919050565b6000612f9b602c83613834565b9150612fa682613abe565b604082019050919050565b6000612fbe602c83613834565b9150612fc982613b0d565b604082019050919050565b6000612fe1603883613834565b9150612fec82613b5c565b604082019050919050565b6000613004602983613834565b915061300f82613bab565b604082019050919050565b6000613027602e83613834565b915061303282613bfa565b604082019050919050565b600061304a602e83613834565b915061305582613c49565b604082019050919050565b600061306d602d83613834565b915061307882613c98565b604082019050919050565b6000613090602083613834565b915061309b82613ce7565b602082019050919050565b60006130b3600083613818565b91506130be82613d10565b600082019050919050565b60006130d6600083613829565b91506130e182613d10565b600082019050919050565b60006130f9601d83613834565b915061310482613d13565b602082019050919050565b600061311c602b83613834565b915061312782613d3c565b604082019050919050565b600061313f601f83613834565b915061314a82613d8b565b602082019050919050565b600060608301613168600084018461385c565b858303600087015261317b838284612e50565b9250505061318c6020840184613845565b6131996020860182612e0c565b506131a760408401846138bf565b6131b46040860182613229565b508091505092915050565b6000606083016131d2600084018461385c565b85830360008701526131e5838284612e50565b925050506131f66020840184613845565b6132036020860182612e0c565b5061321160408401846138bf565b61321e6040860182613229565b508091505092915050565b6132328161391e565b82525050565b6132418161391e565b82525050565b60006132538284612e2a565b60148201915081905092915050565b600061326e8284612ee3565b915081905092915050565b6000613284826130c9565b9150819050919050565b60006020820190506132a36000830184612e1b565b92915050565b60006060820190506132be6000830186612e1b565b6132cb6020830185612e1b565b6132d86040830184613238565b949350505050565b600060c0820190506132f5600083018a612e1b565b81810360208301526133078189612eaa565b90506133166040830188613238565b6133236060830187612f14565b6133306080830186612f14565b81810360a0830152613343818486612e7d565b905098975050505050505050565b600060c0820190506133666000830188612e1b565b81810360208301526133788187612eaa565b90506133876040830186613238565b6133946060830185612f14565b6133a16080830184612f14565b81810360a08301526133b2816130a6565b90509695505050505050565b600060c0820190506133d3600083018a612e1b565b81810360208301526133e58189612eaa565b90506133f46040830188613238565b6134016060830187613238565b61340e6080830186613238565b81810360a0830152613421818486612e7d565b905098975050505050505050565b600060c0820190506134446000830188612e1b565b81810360208301526134568187612eaa565b90506134656040830186613238565b6134726060830185613238565b61347f6080830184613238565b81810360a0830152613490816130a6565b90509695505050505050565b60006040820190506134b16000830185612e1b565b6134be6020830184613238565b9392505050565b60006020820190506134da6000830184612e41565b92915050565b600060408201905081810360008301526134fa8186612eaa565b9050818103602083015261350f818486612e7d565b9050949350505050565b600060208201905061352e6000830184612f23565b92915050565b6000602082019050818103600083015261354e8184612f32565b905092915050565b6000602082019050818103600083015261356f81612f6b565b9050919050565b6000602082019050818103600083015261358f81612f8e565b9050919050565b600060208201905081810360008301526135af81612fb1565b9050919050565b600060208201905081810360008301526135cf81612fd4565b9050919050565b600060208201905081810360008301526135ef81612ff7565b9050919050565b6000602082019050818103600083015261360f8161301a565b9050919050565b6000602082019050818103600083015261362f8161303d565b9050919050565b6000602082019050818103600083015261364f81613060565b9050919050565b6000602082019050818103600083015261366f81613083565b9050919050565b6000602082019050818103600083015261368f816130ec565b9050919050565b600060208201905081810360008301526136af8161310f565b9050919050565b600060208201905081810360008301526136cf81613132565b9050919050565b600060808201905081810360008301526136f08188613155565b90506136ff6020830187612e1b565b61370c6040830186613238565b818103606083015261371f818486612e7d565b90509695505050505050565b6000608082019050818103600083015261374581886131bf565b90506137546020830187612e1b565b6137616040830186613238565b8181036060830152613774818486612e7d565b90509695505050505050565b60006020820190506137956000830184613238565b92915050565b60006137a56137b6565b90506137b1828261399b565b919050565b6000604051905090565b600067ffffffffffffffff8211156137db576137da6139f0565b5b6137e482613a51565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061385460208401846126fd565b905092915050565b6000808335600160200384360303811261387957613878613a47565b5b83810192508235915060208301925067ffffffffffffffff8211156138a1576138a0613a1f565b5b6001820236038413156138b7576138b6613a33565b5b509250929050565b60006138ce6020840184612813565b905092915050565b60006138e1826138fe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139408261391e565b9050919050565b600061395282613928565b9050919050565b82818337600083830152505050565b60005b8381101561398657808201518184015260208101905061396b565b83811115613995576000848401525b50505050565b6139a482613a51565b810181811067ffffffffffffffff821117156139c3576139c26139f0565b5b80604052505050565b60006139d7826139de565b9050919050565b60006139e982613a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b613dbd816138d6565b8114613dc857600080fd5b50565b613dd4816138e8565b8114613ddf57600080fd5b50565b613deb816138f4565b8114613df657600080fd5b50565b613e028161391e565b8114613e0d57600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220378b717703092a88bbd7020c74cb919fe0a2dcf0feb2bf8581734d32a89387ac64736f6c63430008070033"; type GatewayZEVMConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts b/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts index 388b8a3d..992bea27 100644 --- a/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts +++ b/typechain-types/factories/contracts/prototypes/zevm/SenderZEVM__factory.ts @@ -108,7 +108,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610bcd380380610bcd8339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610ab6806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b614610062578063a0a1730b14610080575b600080fd5b610060600480360381019061005b91906105fd565b61009c565b005b61006a6102af565b6040516100779190610761565b60405180910390f35b61009a6004803603810190610095919061055e565b6102d3565b005b60008383836040516024016100b39392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b815260040161018d92919061077c565b602060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610531565b610215576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0888888856040518563ffffffff1660e01b815260040161027494939291906107dc565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383836040516024016102ea9392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c86836040518363ffffffff1660e01b81526004016103c49291906107a5565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050505050505050565b600061041061040b84610892565b61086d565b90508281526020810184848401111561042c5761042b610a1b565b5b610437848285610974565b509392505050565b600061045261044d846108c3565b61086d565b90508281526020810184848401111561046e5761046d610a1b565b5b610479848285610974565b509392505050565b60008135905061049081610a3b565b92915050565b6000813590506104a581610a52565b92915050565b6000815190506104ba81610a52565b92915050565b600082601f8301126104d5576104d4610a16565b5b81356104e58482602086016103fd565b91505092915050565b600082601f83011261050357610502610a16565b5b813561051384826020860161043f565b91505092915050565b60008135905061052b81610a69565b92915050565b60006020828403121561054757610546610a25565b5b6000610555848285016104ab565b91505092915050565b6000806000806080858703121561057857610577610a25565b5b600085013567ffffffffffffffff81111561059657610595610a20565b5b6105a2878288016104c0565b945050602085013567ffffffffffffffff8111156105c3576105c2610a20565b5b6105cf878288016104ee565b93505060406105e08782880161051c565b92505060606105f187828801610496565b91505092959194509250565b60008060008060008060c0878903121561061a57610619610a25565b5b600087013567ffffffffffffffff81111561063857610637610a20565b5b61064489828a016104c0565b965050602061065589828a0161051c565b955050604061066689828a01610481565b945050606087013567ffffffffffffffff81111561068757610686610a20565b5b61069389828a016104ee565b93505060806106a489828a0161051c565b92505060a06106b589828a01610496565b9150509295509295509295565b6106cb8161092c565b82525050565b6106da8161093e565b82525050565b60006106eb826108f4565b6106f5818561090a565b9350610705818560208601610983565b61070e81610a2a565b840191505092915050565b6000610724826108ff565b61072e818561091b565b935061073e818560208601610983565b61074781610a2a565b840191505092915050565b61075b8161096a565b82525050565b600060208201905061077660008301846106c2565b92915050565b600060408201905061079160008301856106c2565b61079e6020830184610752565b9392505050565b600060408201905081810360008301526107bf81856106e0565b905081810360208301526107d381846106e0565b90509392505050565b600060808201905081810360008301526107f681876106e0565b90506108056020830186610752565b61081260408301856106c2565b818103606083015261082481846106e0565b905095945050505050565b600060608201905081810360008301526108498186610719565b90506108586020830185610752565b61086560408301846106d1565b949350505050565b6000610877610888565b905061088382826109b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156108ad576108ac6109e7565b5b6108b682610a2a565b9050602081019050919050565b600067ffffffffffffffff8211156108de576108dd6109e7565b5b6108e782610a2a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006109378261094a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156109a1578082015181840152602081019050610986565b838111156109b0576000848401525b50505050565b6109bf82610a2a565b810181811067ffffffffffffffff821117156109de576109dd6109e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610a448161092c565b8114610a4f57600080fd5b50565b610a5b8161093e565b8114610a6657600080fd5b50565b610a728161096a565b8114610a7d57600080fd5b5056fea264697066735822122041c2abc6b3a41841b90c67bd1f0fcea62676455ba61882c22a78070a8128a5b164736f6c63430008070033"; + "0x608060405234801561001057600080fd5b50604051610bcd380380610bcd8339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610ab6806101176000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b614610062578063a0a1730b14610080575b600080fd5b610060600480360381019061005b91906105fd565b61009c565b005b61006a6102af565b6040516100779190610761565b60405180910390f35b61009a6004803603810190610095919061055e565b6102d3565b005b60008383836040516024016100b39392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b815260040161018d92919061077c565b602060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101df9190610531565b610215576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637993c1e0888888856040518563ffffffff1660e01b815260040161027494939291906107dc565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383836040516024016102ea9392919061082f565b6040516020818303038152906040527fe04d4f97000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ac7c44c86836040518363ffffffff1660e01b81526004016103c49291906107a5565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b505050505050505050565b600061041061040b84610892565b61086d565b90508281526020810184848401111561042c5761042b610a1b565b5b610437848285610974565b509392505050565b600061045261044d846108c3565b61086d565b90508281526020810184848401111561046e5761046d610a1b565b5b610479848285610974565b509392505050565b60008135905061049081610a3b565b92915050565b6000813590506104a581610a52565b92915050565b6000815190506104ba81610a52565b92915050565b600082601f8301126104d5576104d4610a16565b5b81356104e58482602086016103fd565b91505092915050565b600082601f83011261050357610502610a16565b5b813561051384826020860161043f565b91505092915050565b60008135905061052b81610a69565b92915050565b60006020828403121561054757610546610a25565b5b6000610555848285016104ab565b91505092915050565b6000806000806080858703121561057857610577610a25565b5b600085013567ffffffffffffffff81111561059657610595610a20565b5b6105a2878288016104c0565b945050602085013567ffffffffffffffff8111156105c3576105c2610a20565b5b6105cf878288016104ee565b93505060406105e08782880161051c565b92505060606105f187828801610496565b91505092959194509250565b60008060008060008060c0878903121561061a57610619610a25565b5b600087013567ffffffffffffffff81111561063857610637610a20565b5b61064489828a016104c0565b965050602061065589828a0161051c565b955050604061066689828a01610481565b945050606087013567ffffffffffffffff81111561068757610686610a20565b5b61069389828a016104ee565b93505060806106a489828a0161051c565b92505060a06106b589828a01610496565b9150509295509295509295565b6106cb8161092c565b82525050565b6106da8161093e565b82525050565b60006106eb826108f4565b6106f5818561090a565b9350610705818560208601610983565b61070e81610a2a565b840191505092915050565b6000610724826108ff565b61072e818561091b565b935061073e818560208601610983565b61074781610a2a565b840191505092915050565b61075b8161096a565b82525050565b600060208201905061077660008301846106c2565b92915050565b600060408201905061079160008301856106c2565b61079e6020830184610752565b9392505050565b600060408201905081810360008301526107bf81856106e0565b905081810360208301526107d381846106e0565b90509392505050565b600060808201905081810360008301526107f681876106e0565b90506108056020830186610752565b61081260408301856106c2565b818103606083015261082481846106e0565b905095945050505050565b600060608201905081810360008301526108498186610719565b90506108586020830185610752565b61086560408301846106d1565b949350505050565b6000610877610888565b905061088382826109b6565b919050565b6000604051905090565b600067ffffffffffffffff8211156108ad576108ac6109e7565b5b6108b682610a2a565b9050602081019050919050565b600067ffffffffffffffff8211156108de576108dd6109e7565b5b6108e782610a2a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006109378261094a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156109a1578082015181840152602081019050610986565b838111156109b0576000848401525b50505050565b6109bf82610a2a565b810181811067ffffffffffffffff821117156109de576109dd6109e7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b610a448161092c565b8114610a4f57600080fd5b50565b610a5b8161093e565b8114610a6657600080fd5b50565b610a728161096a565b8114610a7d57600080fd5b5056fea26469706673582212208589b7fc9598202eaf46c595855edab9daadb2791c73209ade07df3bbb24033e64736f6c63430008070033"; type SenderZEVMConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts b/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts index f5385982..085cf1d2 100644 --- a/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts +++ b/typechain-types/factories/contracts/prototypes/zevm/TestZContract__factory.ts @@ -185,7 +185,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506107e0806100206000396000f3fe60806040526004361061002d5760003560e01c806369582bee14610036578063de43156e1461005f57610034565b3661003457005b005b34801561004257600080fd5b5061005d60048036038101906100589190610346565b610088565b005b34801561006b57600080fd5b50610086600480360381019061008191906103ea565b610115565b005b606060008383905011156100a85782828101906100a591906102fd565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999488680600001906100d99190610575565b8860200160208101906100ec91906102d0565b8960400135338660405161010596959493929190610512565b60405180910390a1505050505050565b6060600083839050111561013557828281019061013291906102fd565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e8680600001906101669190610575565b88602001602081019061017991906102d0565b8960400135338660405161019296959493929190610512565b60405180910390a1505050505050565b60006101b56101b0846105fd565b6105d8565b9050828152602081018484840111156101d1576101d061075c565b5b6101dc848285610697565b509392505050565b6000813590506101f38161077c565b92915050565b60008083601f84011261020f5761020e61073e565b5b8235905067ffffffffffffffff81111561022c5761022b610739565b5b60208301915083600182028301111561024857610247610752565b5b9250929050565b600082601f8301126102645761026361073e565b5b81356102748482602086016101a2565b91505092915050565b60006060828403121561029357610292610748565b5b81905092915050565b6000606082840312156102b2576102b1610748565b5b81905092915050565b6000813590506102ca81610793565b92915050565b6000602082840312156102e6576102e5610766565b5b60006102f4848285016101e4565b91505092915050565b60006020828403121561031357610312610766565b5b600082013567ffffffffffffffff81111561033157610330610761565b5b61033d8482850161024f565b91505092915050565b60008060008060006080868803121561036257610361610766565b5b600086013567ffffffffffffffff8111156103805761037f610761565b5b61038c8882890161027d565b955050602061039d888289016101e4565b94505060406103ae888289016102bb565b935050606086013567ffffffffffffffff8111156103cf576103ce610761565b5b6103db888289016101f9565b92509250509295509295909350565b60008060008060006080868803121561040657610405610766565b5b600086013567ffffffffffffffff81111561042457610423610761565b5b6104308882890161029c565b9550506020610441888289016101e4565b9450506040610452888289016102bb565b935050606086013567ffffffffffffffff81111561047357610472610761565b5b61047f888289016101f9565b92509250509295509295909350565b6104978161065b565b82525050565b60006104a98385610639565b93506104b6838584610697565b6104bf8361076b565b840190509392505050565b60006104d58261062e565b6104df818561064a565b93506104ef8185602086016106a6565b6104f88161076b565b840191505092915050565b61050c8161068d565b82525050565b600060a082019050818103600083015261052d81888a61049d565b905061053c602083018761048e565b6105496040830186610503565b610556606083018561048e565b818103608083015261056881846104ca565b9050979650505050505050565b600080833560016020038436030381126105925761059161074d565b5b80840192508235915067ffffffffffffffff8211156105b4576105b3610743565b5b6020830192506001820236038313156105d0576105cf610757565b5b509250929050565b60006105e26105f3565b90506105ee82826106d9565b919050565b6000604051905090565b600067ffffffffffffffff8211156106185761061761070a565b5b6106218261076b565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006106668261066d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156106c45780820151818401526020810190506106a9565b838111156106d3576000848401525b50505050565b6106e28261076b565b810181811067ffffffffffffffff821117156107015761070061070a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6107858161065b565b811461079057600080fd5b50565b61079c8161068d565b81146107a757600080fd5b5056fea2646970667358221220d8ae51f378c28fdd3372175a2a0c40cf07b2f206830500b75e6335c89a39193164736f6c63430008070033"; + "0x608060405234801561001057600080fd5b506107e0806100206000396000f3fe60806040526004361061002d5760003560e01c806369582bee14610036578063de43156e1461005f57610034565b3661003457005b005b34801561004257600080fd5b5061005d60048036038101906100589190610346565b610088565b005b34801561006b57600080fd5b50610086600480360381019061008191906103ea565b610115565b005b606060008383905011156100a85782828101906100a591906102fd565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999488680600001906100d99190610575565b8860200160208101906100ec91906102d0565b8960400135338660405161010596959493929190610512565b60405180910390a1505050505050565b6060600083839050111561013557828281019061013291906102fd565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e8680600001906101669190610575565b88602001602081019061017991906102d0565b8960400135338660405161019296959493929190610512565b60405180910390a1505050505050565b60006101b56101b0846105fd565b6105d8565b9050828152602081018484840111156101d1576101d061075c565b5b6101dc848285610697565b509392505050565b6000813590506101f38161077c565b92915050565b60008083601f84011261020f5761020e61073e565b5b8235905067ffffffffffffffff81111561022c5761022b610739565b5b60208301915083600182028301111561024857610247610752565b5b9250929050565b600082601f8301126102645761026361073e565b5b81356102748482602086016101a2565b91505092915050565b60006060828403121561029357610292610748565b5b81905092915050565b6000606082840312156102b2576102b1610748565b5b81905092915050565b6000813590506102ca81610793565b92915050565b6000602082840312156102e6576102e5610766565b5b60006102f4848285016101e4565b91505092915050565b60006020828403121561031357610312610766565b5b600082013567ffffffffffffffff81111561033157610330610761565b5b61033d8482850161024f565b91505092915050565b60008060008060006080868803121561036257610361610766565b5b600086013567ffffffffffffffff8111156103805761037f610761565b5b61038c8882890161027d565b955050602061039d888289016101e4565b94505060406103ae888289016102bb565b935050606086013567ffffffffffffffff8111156103cf576103ce610761565b5b6103db888289016101f9565b92509250509295509295909350565b60008060008060006080868803121561040657610405610766565b5b600086013567ffffffffffffffff81111561042457610423610761565b5b6104308882890161029c565b9550506020610441888289016101e4565b9450506040610452888289016102bb565b935050606086013567ffffffffffffffff81111561047357610472610761565b5b61047f888289016101f9565b92509250509295509295909350565b6104978161065b565b82525050565b60006104a98385610639565b93506104b6838584610697565b6104bf8361076b565b840190509392505050565b60006104d58261062e565b6104df818561064a565b93506104ef8185602086016106a6565b6104f88161076b565b840191505092915050565b61050c8161068d565b82525050565b600060a082019050818103600083015261052d81888a61049d565b905061053c602083018761048e565b6105496040830186610503565b610556606083018561048e565b818103608083015261056881846104ca565b9050979650505050505050565b600080833560016020038436030381126105925761059161074d565b5b80840192508235915067ffffffffffffffff8211156105b4576105b3610743565b5b6020830192506001820236038313156105d0576105cf610757565b5b509250929050565b60006105e26105f3565b90506105ee82826106d9565b919050565b6000604051905090565b600067ffffffffffffffff8211156106185761061761070a565b5b6106218261076b565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006106668261066d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156106c45780820151818401526020810190506106a9565b838111156106d3576000848401525b50505050565b6106e28261076b565b810181811067ffffffffffffffff821117156107015761070061070a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6107858161065b565b811461079057600080fd5b50565b61079c8161068d565b81146107a757600080fd5b5056fea2646970667358221220febf3f8cf5fd0742329aa443cb341b916e26ee1be7a429c48a3a28b956bd845f64736f6c63430008070033"; type TestZContractConstructorParams = | [signer?: Signer]