Multichain Info
Latest 25 from a total of 709 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Gas Transfer | 39305435 | 209 days ago | IN | 1.39940893 CELO | 0.00554991 | ||||
| Gas Transfer | 33952409 | 271 days ago | IN | 2.35224398 CELO | 0.00554961 | ||||
| Gas Transfer | 33515968 | 276 days ago | IN | 2.47365212 CELO | 0.00554991 | ||||
| Gas Transfer | 29856453 | 374 days ago | IN | 22.24315393 CELO | 0.00233217 | ||||
| Gas Transfer | 29837229 | 376 days ago | IN | 5.9835866 CELO | 0.00226435 | ||||
| Gas Transfer | 29722020 | 382 days ago | IN | 2.17977683 CELO | 0.00265542 | ||||
| Gas Transfer | 29557334 | 392 days ago | IN | 5.07516382 CELO | 0.00232973 | ||||
| Gas Transfer | 29521007 | 394 days ago | IN | 5.24078025 CELO | 0.00221831 | ||||
| Gas Transfer | 29056859 | 421 days ago | IN | 0.29248894 CELO | 0.00265527 | ||||
| Gas Transfer | 28882292 | 431 days ago | IN | 3.08706323 CELO | 0.00221506 | ||||
| Gas Transfer | 28782930 | 437 days ago | IN | 3.51872013 CELO | 0.00238931 | ||||
| Gas Transfer | 28779977 | 437 days ago | IN | 5.19683961 CELO | 0.00226661 | ||||
| Gas Transfer | 28643810 | 445 days ago | IN | 4.33627509 CELO | 0.00222052 | ||||
| Gas Transfer | 28527243 | 451 days ago | IN | 5.4884302 CELO | 0.00221273 | ||||
| Gas Transfer | 28321670 | 463 days ago | IN | 6.67922107 CELO | 0.00233873 | ||||
| Gas Transfer | 28317841 | 463 days ago | IN | 1.14953819 CELO | 0.00234094 | ||||
| Gas Transfer | 28299839 | 464 days ago | IN | 0.69031314 CELO | 0.00233861 | ||||
| Gas Transfer | 28251310 | 467 days ago | IN | 0.71619092 CELO | 0.00234328 | ||||
| Gas Transfer | 27903114 | 487 days ago | IN | 1.24988006 CELO | 0.0022204 | ||||
| Gas Transfer | 27901933 | 488 days ago | IN | 3.81029491 CELO | 0.00256287 | ||||
| Gas Transfer | 27868996 | 489 days ago | IN | 2.49572267 CELO | 0.00221819 | ||||
| Gas Transfer | 27867435 | 490 days ago | IN | 1.96535972 CELO | 0.00234082 | ||||
| Gas Transfer | 27858610 | 490 days ago | IN | 2.31067298 CELO | 0.00233849 | ||||
| Gas Transfer | 26042505 | 595 days ago | IN | 2.06400845 CELO | 0.0022204 | ||||
| Gas Transfer | 26017716 | 597 days ago | IN | 5.54813877 CELO | 0.00226435 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 39305435 | 209 days ago | 0.82521988 CELO | ||||
| 33952409 | 271 days ago | 1.91031363 CELO | ||||
| 33515968 | 276 days ago | 2.02183265 CELO | ||||
| 29856453 | 374 days ago | 22.01071939 CELO | ||||
| 29837229 | 376 days ago | 5.735631 CELO | ||||
| 29722020 | 382 days ago | 1.9533467 CELO | ||||
| 29557334 | 392 days ago | 4.85356307 CELO | ||||
| 29521007 | 394 days ago | 5.01365962 CELO | ||||
| 29056859 | 421 days ago | 0.12277516 CELO | ||||
| 28882292 | 431 days ago | 2.86576587 CELO | ||||
| 28782930 | 437 days ago | 3.28366052 CELO | ||||
| 28779977 | 437 days ago | 4.97039649 CELO | ||||
| 28643810 | 445 days ago | 4.09057525 CELO | ||||
| 28527243 | 451 days ago | 5.26197853 CELO | ||||
| 28321670 | 463 days ago | 6.50293796 CELO | ||||
| 28317841 | 463 days ago | 0.96697448 CELO | ||||
| 28299839 | 464 days ago | 0.49493755 CELO | ||||
| 28251310 | 467 days ago | 0.5313945 CELO | ||||
| 27903114 | 487 days ago | 0.96799087 CELO | ||||
| 27901933 | 488 days ago | 3.53050732 CELO | ||||
| 27868996 | 489 days ago | 2.19805638 CELO | ||||
| 27867435 | 490 days ago | 1.67009168 CELO | ||||
| 27858610 | 490 days ago | 2.02013127 CELO | ||||
| 26042505 | 595 days ago | 1.85439414 CELO | ||||
| 26017716 | 597 days ago | 5.36045155 CELO |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
InterportLZGasTransfer
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at celoscan.io on 2024-01-17 */ // Sources flattened with hardhat v2.19.0 https://hardhat.org // SPDX-License-Identifier: AGPL-3.0-only AND MIT // File @openzeppelin/contracts/utils/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/security/[email protected] // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File contracts/Constants.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @dev The default token decimals value */ uint256 constant DECIMALS_DEFAULT = 18; /** * @dev The maximum uint256 value for swap amount limit settings */ uint256 constant INFINITY = type(uint256).max; /** * @dev The default limit of account list size */ uint256 constant LIST_SIZE_LIMIT_DEFAULT = 100; /** * @dev The limit of swap router list size */ uint256 constant LIST_SIZE_LIMIT_ROUTERS = 200; /** * @dev The factor for percentage settings. Example: 100 is 0.1% */ uint256 constant MILLIPERCENT_FACTOR = 100_000; /** * @dev The de facto standard address to denote the native token */ address constant NATIVE_TOKEN_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; // File contracts/helpers/TransferHelper.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @notice Emitted when an approval action fails */ error SafeApproveError(); /** * @notice Emitted when a transfer action fails */ error SafeTransferError(); /** * @notice Emitted when a transferFrom action fails */ error SafeTransferFromError(); /** * @notice Emitted when a transfer of the native token fails */ error SafeTransferNativeError(); /** * @notice Safely approve the token to the account * @param _token The token address * @param _to The token approval recipient address * @param _value The token approval amount */ function safeApprove(address _token, address _to, uint256 _value) { // 0x095ea7b3 is the selector for "approve(address,uint256)" (bool success, bytes memory data) = _token.call( abi.encodeWithSelector(0x095ea7b3, _to, _value) ); bool condition = success && (data.length == 0 || abi.decode(data, (bool))); if (!condition) { revert SafeApproveError(); } } /** * @notice Safely transfer the token to the account * @param _token The token address * @param _to The token transfer recipient address * @param _value The token transfer amount */ function safeTransfer(address _token, address _to, uint256 _value) { // 0xa9059cbb is the selector for "transfer(address,uint256)" (bool success, bytes memory data) = _token.call( abi.encodeWithSelector(0xa9059cbb, _to, _value) ); bool condition = success && (data.length == 0 || abi.decode(data, (bool))); if (!condition) { revert SafeTransferError(); } } /** * @notice Safely transfer the token between the accounts * @param _token The token address * @param _from The token transfer source address * @param _to The token transfer recipient address * @param _value The token transfer amount */ function safeTransferFrom(address _token, address _from, address _to, uint256 _value) { // 0x23b872dd is the selector for "transferFrom(address,address,uint256)" (bool success, bytes memory data) = _token.call( abi.encodeWithSelector(0x23b872dd, _from, _to, _value) ); bool condition = success && (data.length == 0 || abi.decode(data, (bool))); if (!condition) { revert SafeTransferFromError(); } } /** * @notice Safely transfer the native token to the account * @param _to The native token transfer recipient address * @param _value The native token transfer amount */ function safeTransferNative(address _to, uint256 _value) { (bool success, ) = _to.call{ value: _value }(new bytes(0)); if (!success) { revert SafeTransferNativeError(); } } // File contracts/interfaces/ITokenBalance.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title ITokenBalance * @notice Token balance interface */ interface ITokenBalance { /** * @notice Getter of the token balance by the account * @param _account The account address * @return Token balance */ function balanceOf(address _account) external view returns (uint256); } // File contracts/access/OwnerManageable.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title OwnerManageable * @notice OwnerManageable contract */ contract OwnerManageable is Ownable, Pausable { /** * @notice Enter pause state */ function pause() external onlyOwner whenNotPaused { _pause(); } /** * @notice Exit pause state */ function unpause() external onlyOwner whenPaused { _unpause(); } /** * @notice Performs the token cleanup * @dev Use the "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" address for the native token * @param _tokenAddress The address of the token */ function cleanup(address _tokenAddress) external onlyOwner { if (_tokenAddress == /*Constants.*/NATIVE_TOKEN_ADDRESS) { /*TransferHelper.*/safeTransferNative(msg.sender, address(this).balance); } else { /*TransferHelper.*/safeTransfer( _tokenAddress, msg.sender, ITokenBalance(_tokenAddress).balanceOf(address(this)) ); } } /** * @notice Performs the token cleanup using the provided amount * @dev Use the "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" address for the native token * @param _tokenAddress The address of the token * @param _tokenAmount The amount of the token */ function cleanupWithAmount(address _tokenAddress, uint256 _tokenAmount) external onlyOwner { if (_tokenAddress == /*Constants.*/NATIVE_TOKEN_ADDRESS) { /*TransferHelper.*/safeTransferNative(msg.sender, _tokenAmount); } else { /*TransferHelper.*/safeTransfer(_tokenAddress, msg.sender, _tokenAmount); } } function _initOwner(address _owner) internal { if (_owner != _msgSender() && _owner != address(0)) { _transferOwnership(_owner); } } } // File contracts/crosschain/layerzero/interfaces/ILayerZeroEndpoint.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title ILayerZeroEndpoint * @notice LayerZero endpoint interface */ interface ILayerZeroEndpoint { /** * @notice Send a cross-chain message * @param _dstChainId The destination chain identifier * @param _destination Remote address concatenated with local address packed into 40 bytes * @param _payload The message content * @param _refundAddress Refund the additional amount to this address * @param _zroPaymentAddress The address of the ZRO token holder who would pay for the transaction * @param _adapterParam Parameters for the adapter service */ function send( uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParam ) external payable; /** * @notice Cross-chain message fee estimation * @param _dstChainId The destination chain identifier * @param _userApplication The application address on the source chain * @param _payload The message content * @param _payInZRO If false, the user application pays the protocol fee in the native token * @param _adapterParam Parameters for the adapter service * @return nativeFee The native token fee for the message * @return zroFee The ZRO token fee for the message */ function estimateFees( uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam ) external view returns (uint256 nativeFee, uint256 zroFee); } // File contracts/crosschain/layerzero/interfaces/ILayerZeroRelayer.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title ILayerZeroRelayer * @notice LayerZero relayer interface */ interface ILayerZeroRelayer { /** * @notice Destination config lookup * @param _chainId The chain identifier * @param _outboundProofType The type of the outbound proof * @return dstNativeAmtCap The native token amount cap on the destination chain * @return baseGas The base gas value * @return gasPerByte The gas value per byte */ function dstConfigLookup( uint16 _chainId, uint16 _outboundProofType ) external view returns (uint128 dstNativeAmtCap, uint64 baseGas, uint64 gasPerByte); } // File contracts/crosschain/layerzero/interfaces/ILayerZeroResumeReceive.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title ILayerZeroResumeReceive * @notice LayerZero queue unblocking interface */ interface ILayerZeroResumeReceive { /** * @notice Unblocks the LayerZero message queue * @param _srcChainId The source chain identifier * @param _srcAddress Remote address concatenated with local address packed into 40 bytes */ function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external; } // File contracts/helpers/AddressHelper.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @notice Emitted when the account is not a contract * @param account The account address */ error NonContractAddressError(address account); /** * @notice Function to check if the account is a contract * @return The account contract status flag */ function isContract(address _account) view returns (bool) { return _account.code.length > 0; } /** * @notice Function to require an account to be a contract */ function requireContract(address _account) view { if (!isContract(_account)) { revert NonContractAddressError(_account); } } /** * @notice Function to require an account to be a contract or a zero address */ function requireContractOrZeroAddress(address _account) view { if (_account != address(0)) { requireContract(_account); } } // File contracts/SystemVersionId.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title SystemVersionId * @notice Base contract providing the system version identifier */ abstract contract SystemVersionId { /** * @dev The system version identifier */ uint256 public constant SYSTEM_VERSION_ID = uint256(keccak256('Initial')); } // File contracts/gas-transfer/InterportLZGasTransfer.sol // Original license: SPDX_License_Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title InterportLZGasTransfer * @notice Gas transfer contract */ contract InterportLZGasTransfer is SystemVersionId, OwnerManageable { /** * @notice Gas transfer parameter data structure * @param lzChainId LayerZero-specific chain identifier * @param recipient The address of the gas transfer recipient * @param amount Gas transfer amount * @param settings Gas transfer settings */ struct GasTransferParameters { uint16 lzChainId; address recipient; uint256 amount; bytes settings; } /** * @dev The address of the cross-chain endpoint */ address public lzEndpoint; /** * @dev The address of the cross-chain relayer */ address public lzRelayer; uint16 private constant LZ_ADAPTER_PARAMETERS_VERSION = 2; bytes private constant LZ_PAYLOAD_NONE = ''; uint256 private minDstGas; uint256 private minReserve; /** * @notice Emitted when the cross-chain endpoint contract reference is set * @param endpoint The cross-chain endpoint contract address */ event SetEndpoint(address indexed endpoint); /** * @notice Emitted when the cross-chain relayer contract reference is set * @param relayer The cross-chain relayer contract address */ event SetRelayer(address indexed relayer); /** * @notice Emitted when the parameter validation results in an error */ error ValidationError(); /** * @notice Initializes the InterportLZGasTransfer contract * @param _lzEndpoint The cross-chain endpoint contract address * @param _lzRelayer The cross-chain relayer contract address * @param _validation The initial validation data * @param _owner The address of the initial owner of the contract */ constructor(address _lzEndpoint, address _lzRelayer, bytes memory _validation, address _owner) { _setEndpoint(_lzEndpoint); _setRelayer(_lzRelayer); _setValidation(_validation); _initOwner(_owner); } /** * @notice The standard "receive" function */ receive() external payable {} /** * @notice Performs a gas transfer action * @param _parameters Gas transfer parameters */ function gasTransfer( GasTransferParameters calldata _parameters ) external payable whenNotPaused { (uint256 lzValue, address dstApp, bytes memory lzAdapterParameters) = _getEndpointData( _parameters, true ); ILayerZeroEndpoint(lzEndpoint).send{ value: lzValue }( _parameters.lzChainId, abi.encodePacked(dstApp, address(this)), LZ_PAYLOAD_NONE, payable(this), address(0), lzAdapterParameters ); } /** * @notice Receives cross-chain messages * @dev The function is called by the cross-chain endpoint */ function lzReceive(uint16, bytes calldata, uint64, bytes calldata) external {} /** * @notice Unblocks the cross-chain message queue * @param _lzSourceChainId The source chain identifier (LayerZero-specific) * @param _sourceApp The source chain app address */ function resumeReceive(uint16 _lzSourceChainId, address _sourceApp) external { ILayerZeroResumeReceive(lzEndpoint).forceResumeReceive( _lzSourceChainId, abi.encodePacked(_sourceApp, address(this)) ); } /** * @notice Sets the cross-chain endpoint contract reference * @param _lzEndpoint The cross-chain endpoint contract address */ function setEndpoint(address _lzEndpoint) external onlyOwner { _setEndpoint(_lzEndpoint); } /** * @notice Sets the cross-chain relayer contract reference * @param _lzRelayer The cross-chain relayer contract address */ function setRelayer(address _lzRelayer) external onlyOwner { _setRelayer(_lzRelayer); } /** * @notice Sets the validation data * @param _validation The validation data */ function setValidation(bytes memory _validation) external onlyOwner { _setValidation(_validation); } /** * @notice Source chain tx value estimation * @param _parameters Gas transfer parameters * @return lzValue The source chain tx value */ function estimateSourceValue( GasTransferParameters calldata _parameters ) external view returns (uint256 lzValue) { (lzValue, , ) = _getEndpointData(_parameters, false); } /** * @notice The native token amount cap on the destination chains * @param _lzChainIds The destination chain identifier array (LayerZero-specific) * @return The native token amount cap on the destination chains */ function destinationAmountCap( uint16[] calldata _lzChainIds ) external view returns (uint128[] memory) { uint128[] memory result = new uint128[](_lzChainIds.length); uint16 lzChainId; uint16 outboundProofType; uint128 cap; address sendLibrary = SendLibraryProvider(lzEndpoint).getSendLibraryAddress(address(this)); for (uint256 index; index < _lzChainIds.length; index++) { lzChainId = _lzChainIds[index]; outboundProofType = AppConfigProvider(sendLibrary) .getAppConfig(lzChainId, address(this)) .outboundProofType; (cap, , ) = ILayerZeroRelayer(lzRelayer).dstConfigLookup(lzChainId, outboundProofType); result[index] = cap; } return result; } function _setEndpoint(address _lzEndpoint) private { /*AddressHelper.*/requireContract(_lzEndpoint); lzEndpoint = _lzEndpoint; emit SetEndpoint(_lzEndpoint); } function _setRelayer(address _lzRelayer) private { /*AddressHelper.*/requireContract(_lzRelayer); lzRelayer = _lzRelayer; emit SetRelayer(_lzRelayer); } function _setValidation(bytes memory _validation) private { (minDstGas, minReserve) = abi.decode(_validation, (uint256, uint256)); } function _getEndpointData( GasTransferParameters calldata _parameters, bool _validate ) private view returns (uint256 lzValue, address dstApp, bytes memory lzAdapterParameters) { uint256 dstGas; (dstApp, dstGas, lzAdapterParameters) = _decodeParameters(_parameters); (lzValue, ) = ILayerZeroEndpoint(lzEndpoint).estimateFees( _parameters.lzChainId, address(this), LZ_PAYLOAD_NONE, false, lzAdapterParameters ); if (_validate && (dstGas < minDstGas || lzValue + minReserve > msg.value)) { revert ValidationError(); } } function _decodeParameters( GasTransferParameters calldata _parameters ) private view returns (address dstApp, uint256 dstGas, bytes memory lzAdapterParameters) { (dstApp, dstGas) = abi.decode(_parameters.settings, (address, uint256)); lzAdapterParameters = abi.encodePacked( LZ_ADAPTER_PARAMETERS_VERSION, dstGas, _parameters.amount, _parameters.recipient == address(0) ? msg.sender : _parameters.recipient ); } } interface SendLibraryProvider { function getSendLibraryAddress( address _userApplication ) external view returns (address sendLibraryAddress); } interface AppConfigProvider { struct ApplicationConfiguration { uint16 inboundProofLibraryVersion; uint64 inboundBlockConfirmations; address relayer; uint16 outboundProofType; uint64 outboundBlockConfirmations; address oracle; } function getAppConfig( uint16 _remoteChainId, address _userApplicationAddress ) external view returns (ApplicationConfiguration memory); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_lzEndpoint","type":"address"},{"internalType":"address","name":"_lzRelayer","type":"address"},{"internalType":"bytes","name":"_validation","type":"bytes"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NonContractAddressError","type":"error"},{"inputs":[],"name":"SafeTransferError","type":"error"},{"inputs":[],"name":"SafeTransferNativeError","type":"error"},{"inputs":[],"name":"ValidationError","type":"error"},{"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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"endpoint","type":"address"}],"name":"SetEndpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayer","type":"address"}],"name":"SetRelayer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"SYSTEM_VERSION_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"cleanup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"cleanupWithAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_lzChainIds","type":"uint16[]"}],"name":"destinationAmountCap","outputs":[{"internalType":"uint128[]","name":"","type":"uint128[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"lzChainId","type":"uint16"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"settings","type":"bytes"}],"internalType":"struct InterportLZGasTransfer.GasTransferParameters","name":"_parameters","type":"tuple"}],"name":"estimateSourceValue","outputs":[{"internalType":"uint256","name":"lzValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"lzChainId","type":"uint16"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"settings","type":"bytes"}],"internalType":"struct InterportLZGasTransfer.GasTransferParameters","name":"_parameters","type":"tuple"}],"name":"gasTransfer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lzEndpoint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lzRelayer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_lzSourceChainId","type":"uint16"},{"internalType":"address","name":"_sourceApp","type":"address"}],"name":"resumeReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lzEndpoint","type":"address"}],"name":"setEndpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lzRelayer","type":"address"}],"name":"setRelayer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_validation","type":"bytes"}],"name":"setValidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620019f2380380620019f283398101604081905262000034916200023c565b6200003f3362000082565b6000805460ff60a01b191690556200005784620000d2565b620000628362000127565b6200006d826200017c565b62000078816200019b565b505050506200036e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000dd81620001d1565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc8e81a4efc849969069ec6aae575cf7a6bc5f9d3abac59f4ed190a6f7e05fc6f90600090a250565b6200013281620001d1565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc90600090a250565b8080602001905181019062000192919062000349565b60045560035550565b6001600160a01b0381163314801590620001bd57506001600160a01b03811615155b15620001ce57620001ce8162000082565b50565b6001600160a01b0381163b620001ce57604051638c50d7cd60e01b81526001600160a01b038216600482015260240160405180910390fd5b80516001600160a01b03811681146200022157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156200025357600080fd5b6200025e8562000209565b935060206200026f81870162000209565b60408701519094506001600160401b03808211156200028d57600080fd5b818801915088601f830112620002a257600080fd5b815181811115620002b757620002b762000226565b604051601f8201601f19908116603f01168101908382118183101715620002e257620002e262000226565b816040528281528b86848701011115620002fb57600080fd5b600093505b828410156200031f578484018601518185018701529285019262000300565b60008684830101528097505050505050506200033e6060860162000209565b905092959194509250565b600080604083850312156200035d57600080fd5b505080516020909101519092909150565b611674806200037e6000396000f3fe6080604052600436106101175760003560e01c80637110e34d116100a0578063dbbb415511610064578063dbbb415514610317578063dfed8bd714610337578063efb7388014610357578063f2fde38b1461036a578063fbacefce1461038a57600080fd5b80637110e34d1461027b578063715018a61461029b5780638456cb59146102b05780638da5cb5b146102c5578063b353aaa7146102f757600080fd5b80633132bb31116100e75780633132bb31146101cf5780633f4ba83a146101ef5780635c975abb146102045780636548e9bc1461022e5780636a0b3ad41461024e57600080fd5b80621d356714610123578063093f0e2714610148578063286d05d21461018f5780632c16f926146101af57600080fd5b3661011e57005b600080fd5b34801561012f57600080fd5b5061014661013e366004610fbd565b505050505050565b005b34801561015457600080fd5b5061017c7f22ad9585a395edc8067b50da4778cafbb7fa2c4bbd7619fad6aeba403857fd7481565b6040519081526020015b60405180910390f35b34801561019b57600080fd5b5061017c6101aa366004611054565b6103aa565b3480156101bb57600080fd5b506101466101ca3660046110ab565b6103c0565b3480156101db57600080fd5b506101466101ea3660046110ed565b610406565b3480156101fb57600080fd5b5061014661041a565b34801561021057600080fd5b50600054600160a01b900460ff166040519015158152602001610186565b34801561023a57600080fd5b5061014661024936600461119e565b610434565b34801561025a57600080fd5b5061026e6102693660046111bb565b610445565b6040516101869190611230565b34801561028757600080fd5b5061014661029636600461127d565b61067b565b3480156102a757600080fd5b5061014661070c565b3480156102bc57600080fd5b5061014661071e565b3480156102d157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b34801561030357600080fd5b506001546102df906001600160a01b031681565b34801561032357600080fd5b5061014661033236600461119e565b610736565b34801561034357600080fd5b506002546102df906001600160a01b031681565b610146610365366004611054565b610747565b34801561037657600080fd5b5061014661038536600461119e565b610820565b34801561039657600080fd5b506101466103a536600461119e565b61089b565b60006103b7826000610947565b50909392505050565b6103c8610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038316016103fb576103f73382610a97565b5050565b6103f7823383610b2a565b61040e610a3d565b61041781610c14565b50565b610422610a3d565b61042a610c31565b610432610c81565b565b61043c610a3d565b61041781610cd6565b606060008267ffffffffffffffff811115610462576104626110d7565b60405190808252806020026020018201604052801561048b578160200160208202803683370190505b50600154604051639c729da160e01b81523060048201529192506000918291829182916001600160a01b031690639c729da190602401602060405180830381865afa1580156104de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050291906112b6565b905060005b8781101561066c57888882818110610521576105216112d3565b905060200201602081019061053691906112e9565b604051635233111160e11b815261ffff821660048201523060248201529095506001600160a01b0383169063a46622229060440160c060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190611306565b60600151600254604051630462c3ff60e31b815261ffff8089166004830152831660248201529195506001600160a01b0316906323161ff890604401606060405180830381865afa158015610604573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062891906113b1565b9050508093505082868281518110610642576106426112d3565b6001600160801b03909216602092830291909101909101528061066481611420565b915050610507565b50939450505050505b92915050565b600154604080516001600160601b0319606085811b8216602084015230901b1660348201528151808203602801815260488201928390526342d65a8d60e01b9092526001600160a01b03909216916342d65a8d916106de91869190604c01611489565b600060405180830381600087803b1580156106f857600080fd5b505af115801561013e573d6000803e3d6000fd5b610714610a3d565b6104326000610d29565b610726610a3d565b61072e610d79565b610432610dc6565b61073e610a3d565b61041781610e09565b61074f610d79565b600080600061075f846001610947565b60015492955090935091506001600160a01b031663c58031008461078660208801886112e9565b6040516001600160601b0319606088811b8216602084015230901b16603482015260480160408051601f19818403018152602083018252600080845291516001600160e01b031960e088901b1681526107e89493919230918a906004016114ae565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b505050505050505050565b610828610a3d565b6001600160a01b0381166108925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61041781610d29565b6108a3610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016108d2576104173347610a97565b6040516370a0823160e01b815230600482015261041790829033906001600160a01b038316906370a0823190602401602060405180830381865afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109429190611515565b610b2a565b6000806060600061095786610e5c565b600154929550935091506001600160a01b03166340a7bb1061097c60208901896112e9565b60408051602081018252600080825291516001600160e01b031960e086901b1681526109b09392309291899060040161152e565b6040805180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f09190611582565b509350848015610a175750600354811080610a1757503460045485610a1591906115a6565b115b15610a355760405163ae64f5e560e01b815260040160405180910390fd5b509250925092565b6000546001600160a01b031633146104325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610889565b604080516000808252602082019092526001600160a01b038416908390604051610ac191906115b9565b60006040518083038185875af1925050503d8060008114610afe576040519150601f19603f3d011682016040523d82523d6000602084013e610b03565b606091505b5050905080610b2557604051632e05b05360e21b815260040160405180910390fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610b8691906115b9565b6000604051808303816000865af19150503d8060008114610bc3576040519150601f19603f3d011682016040523d82523d6000602084013e610bc8565b606091505b50915091506000828015610bf4575081511580610bf4575081806020019051810190610bf491906115d5565b90508061013e57604051632fdb1b7f60e11b815260040160405180910390fd5b80806020019051810190610c289190611582565b60045560035550565b600054600160a01b900460ff166104325760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610889565b610c89610c31565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610cdf81610f1b565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600054600160a01b900460ff16156104325760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610889565b610dce610d79565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cb93390565b610e1281610f1b565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc8e81a4efc849969069ec6aae575cf7a6bc5f9d3abac59f4ed190a6f7e05fc6f90600090a250565b6000806060610e6d848201856115f7565b810190610e7a91906110ab565b909350915060028260408601803590600090610e999060208a0161119e565b6001600160a01b031614610ebc57610eb7604088016020890161119e565b610ebe565b335b604051602001610f03949392919060f09490941b6001600160f01b03191684526002840192909252602283015260601b6001600160601b031916604282015260560190565b60405160208183030381529060405290509193909250565b6001600160a01b0381163b61041757604051638c50d7cd60e01b81526001600160a01b0382166004820152602401610889565b61ffff8116811461041757600080fd5b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610fa057600080fd5b9250929050565b67ffffffffffffffff8116811461041757600080fd5b60008060008060008060808789031215610fd657600080fd5b8635610fe181610f4e565b9550602087013567ffffffffffffffff80821115610ffe57600080fd5b61100a8a838b01610f5e565b90975095506040890135915061101f82610fa7565b9093506060880135908082111561103557600080fd5b5061104289828a01610f5e565b979a9699509497509295939492505050565b60006020828403121561106657600080fd5b813567ffffffffffffffff81111561107d57600080fd5b82016080818503121561108f57600080fd5b9392505050565b6001600160a01b038116811461041757600080fd5b600080604083850312156110be57600080fd5b82356110c981611096565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156110ff57600080fd5b813567ffffffffffffffff8082111561111757600080fd5b818401915084601f83011261112b57600080fd5b81358181111561113d5761113d6110d7565b604051601f8201601f19908116603f01168101908382118183101715611165576111656110d7565b8160405282815287602084870101111561117e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156111b057600080fd5b813561108f81611096565b600080602083850312156111ce57600080fd5b823567ffffffffffffffff808211156111e657600080fd5b818501915085601f8301126111fa57600080fd5b81358181111561120957600080fd5b8660208260051b850101111561121e57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156112715783516001600160801b03168352928401929184019160010161124c565b50909695505050505050565b6000806040838503121561129057600080fd5b823561129b81610f4e565b915060208301356112ab81611096565b809150509250929050565b6000602082840312156112c857600080fd5b815161108f81611096565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112fb57600080fd5b813561108f81610f4e565b600060c0828403121561131857600080fd5b60405160c0810181811067ffffffffffffffff8211171561133b5761133b6110d7565b604052825161134981610f4e565b8152602083015161135981610fa7565b6020820152604083015161136c81611096565b6040820152606083015161137f81610f4e565b6060820152608083015161139281610fa7565b608082015260a08301516113a581611096565b60a08201529392505050565b6000806000606084860312156113c657600080fd5b83516001600160801b03811681146113dd57600080fd5b60208501519093506113ee81610fa7565b60408501519092506113ff81610fa7565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b6000600182016114325761143261140a565b5060010190565b60005b8381101561145457818101518382015260200161143c565b50506000910152565b60008151808452611475816020860160208601611439565b601f01601f19169290920160200192915050565b61ffff831681526040602082015260006114a6604083018461145d565b949350505050565b61ffff8716815260c0602082015260006114cb60c083018861145d565b82810360408401526114dd818861145d565b6001600160a01b0387811660608601528616608085015283810360a08501529050611508818561145d565b9998505050505050505050565b60006020828403121561152757600080fd5b5051919050565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061155c9083018661145d565b84151560608401528281036080840152611576818561145d565b98975050505050505050565b6000806040838503121561159557600080fd5b505080516020909101519092909150565b808201808211156106755761067561140a565b600082516115cb818460208701611439565b9190910192915050565b6000602082840312156115e757600080fd5b8151801515811461108f57600080fd5b6000808335601e1984360301811261160e57600080fd5b83018035915067ffffffffffffffff82111561162957600080fd5b602001915036819003821315610fa057600080fdfea26469706673582212203f689c94c63cff58d7c38caa963bdedcae9248112bdb776f056085adf7d8bf3764736f6c634300081300330000000000000000000000003a73033c0b1407574c76bdbac67f126f6b4a9aa900000000000000000000000015e51701f245f6d5bd0fee87bcaf55b0841451b3000000000000000000000000000000000000000000000000000000000000008000000000000000000000000072e28c7f34100afefc399fcc0ae041b8fe5841ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000009dc21687622c00
Deployed Bytecode
0x6080604052600436106101175760003560e01c80637110e34d116100a0578063dbbb415511610064578063dbbb415514610317578063dfed8bd714610337578063efb7388014610357578063f2fde38b1461036a578063fbacefce1461038a57600080fd5b80637110e34d1461027b578063715018a61461029b5780638456cb59146102b05780638da5cb5b146102c5578063b353aaa7146102f757600080fd5b80633132bb31116100e75780633132bb31146101cf5780633f4ba83a146101ef5780635c975abb146102045780636548e9bc1461022e5780636a0b3ad41461024e57600080fd5b80621d356714610123578063093f0e2714610148578063286d05d21461018f5780632c16f926146101af57600080fd5b3661011e57005b600080fd5b34801561012f57600080fd5b5061014661013e366004610fbd565b505050505050565b005b34801561015457600080fd5b5061017c7f22ad9585a395edc8067b50da4778cafbb7fa2c4bbd7619fad6aeba403857fd7481565b6040519081526020015b60405180910390f35b34801561019b57600080fd5b5061017c6101aa366004611054565b6103aa565b3480156101bb57600080fd5b506101466101ca3660046110ab565b6103c0565b3480156101db57600080fd5b506101466101ea3660046110ed565b610406565b3480156101fb57600080fd5b5061014661041a565b34801561021057600080fd5b50600054600160a01b900460ff166040519015158152602001610186565b34801561023a57600080fd5b5061014661024936600461119e565b610434565b34801561025a57600080fd5b5061026e6102693660046111bb565b610445565b6040516101869190611230565b34801561028757600080fd5b5061014661029636600461127d565b61067b565b3480156102a757600080fd5b5061014661070c565b3480156102bc57600080fd5b5061014661071e565b3480156102d157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b34801561030357600080fd5b506001546102df906001600160a01b031681565b34801561032357600080fd5b5061014661033236600461119e565b610736565b34801561034357600080fd5b506002546102df906001600160a01b031681565b610146610365366004611054565b610747565b34801561037657600080fd5b5061014661038536600461119e565b610820565b34801561039657600080fd5b506101466103a536600461119e565b61089b565b60006103b7826000610947565b50909392505050565b6103c8610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038316016103fb576103f73382610a97565b5050565b6103f7823383610b2a565b61040e610a3d565b61041781610c14565b50565b610422610a3d565b61042a610c31565b610432610c81565b565b61043c610a3d565b61041781610cd6565b606060008267ffffffffffffffff811115610462576104626110d7565b60405190808252806020026020018201604052801561048b578160200160208202803683370190505b50600154604051639c729da160e01b81523060048201529192506000918291829182916001600160a01b031690639c729da190602401602060405180830381865afa1580156104de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050291906112b6565b905060005b8781101561066c57888882818110610521576105216112d3565b905060200201602081019061053691906112e9565b604051635233111160e11b815261ffff821660048201523060248201529095506001600160a01b0383169063a46622229060440160c060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190611306565b60600151600254604051630462c3ff60e31b815261ffff8089166004830152831660248201529195506001600160a01b0316906323161ff890604401606060405180830381865afa158015610604573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062891906113b1565b9050508093505082868281518110610642576106426112d3565b6001600160801b03909216602092830291909101909101528061066481611420565b915050610507565b50939450505050505b92915050565b600154604080516001600160601b0319606085811b8216602084015230901b1660348201528151808203602801815260488201928390526342d65a8d60e01b9092526001600160a01b03909216916342d65a8d916106de91869190604c01611489565b600060405180830381600087803b1580156106f857600080fd5b505af115801561013e573d6000803e3d6000fd5b610714610a3d565b6104326000610d29565b610726610a3d565b61072e610d79565b610432610dc6565b61073e610a3d565b61041781610e09565b61074f610d79565b600080600061075f846001610947565b60015492955090935091506001600160a01b031663c58031008461078660208801886112e9565b6040516001600160601b0319606088811b8216602084015230901b16603482015260480160408051601f19818403018152602083018252600080845291516001600160e01b031960e088901b1681526107e89493919230918a906004016114ae565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b505050505050505050565b610828610a3d565b6001600160a01b0381166108925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61041781610d29565b6108a3610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016108d2576104173347610a97565b6040516370a0823160e01b815230600482015261041790829033906001600160a01b038316906370a0823190602401602060405180830381865afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109429190611515565b610b2a565b6000806060600061095786610e5c565b600154929550935091506001600160a01b03166340a7bb1061097c60208901896112e9565b60408051602081018252600080825291516001600160e01b031960e086901b1681526109b09392309291899060040161152e565b6040805180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f09190611582565b509350848015610a175750600354811080610a1757503460045485610a1591906115a6565b115b15610a355760405163ae64f5e560e01b815260040160405180910390fd5b509250925092565b6000546001600160a01b031633146104325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610889565b604080516000808252602082019092526001600160a01b038416908390604051610ac191906115b9565b60006040518083038185875af1925050503d8060008114610afe576040519150601f19603f3d011682016040523d82523d6000602084013e610b03565b606091505b5050905080610b2557604051632e05b05360e21b815260040160405180910390fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610b8691906115b9565b6000604051808303816000865af19150503d8060008114610bc3576040519150601f19603f3d011682016040523d82523d6000602084013e610bc8565b606091505b50915091506000828015610bf4575081511580610bf4575081806020019051810190610bf491906115d5565b90508061013e57604051632fdb1b7f60e11b815260040160405180910390fd5b80806020019051810190610c289190611582565b60045560035550565b600054600160a01b900460ff166104325760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610889565b610c89610c31565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610cdf81610f1b565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600054600160a01b900460ff16156104325760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610889565b610dce610d79565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cb93390565b610e1281610f1b565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc8e81a4efc849969069ec6aae575cf7a6bc5f9d3abac59f4ed190a6f7e05fc6f90600090a250565b6000806060610e6d848201856115f7565b810190610e7a91906110ab565b909350915060028260408601803590600090610e999060208a0161119e565b6001600160a01b031614610ebc57610eb7604088016020890161119e565b610ebe565b335b604051602001610f03949392919060f09490941b6001600160f01b03191684526002840192909252602283015260601b6001600160601b031916604282015260560190565b60405160208183030381529060405290509193909250565b6001600160a01b0381163b61041757604051638c50d7cd60e01b81526001600160a01b0382166004820152602401610889565b61ffff8116811461041757600080fd5b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610fa057600080fd5b9250929050565b67ffffffffffffffff8116811461041757600080fd5b60008060008060008060808789031215610fd657600080fd5b8635610fe181610f4e565b9550602087013567ffffffffffffffff80821115610ffe57600080fd5b61100a8a838b01610f5e565b90975095506040890135915061101f82610fa7565b9093506060880135908082111561103557600080fd5b5061104289828a01610f5e565b979a9699509497509295939492505050565b60006020828403121561106657600080fd5b813567ffffffffffffffff81111561107d57600080fd5b82016080818503121561108f57600080fd5b9392505050565b6001600160a01b038116811461041757600080fd5b600080604083850312156110be57600080fd5b82356110c981611096565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156110ff57600080fd5b813567ffffffffffffffff8082111561111757600080fd5b818401915084601f83011261112b57600080fd5b81358181111561113d5761113d6110d7565b604051601f8201601f19908116603f01168101908382118183101715611165576111656110d7565b8160405282815287602084870101111561117e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156111b057600080fd5b813561108f81611096565b600080602083850312156111ce57600080fd5b823567ffffffffffffffff808211156111e657600080fd5b818501915085601f8301126111fa57600080fd5b81358181111561120957600080fd5b8660208260051b850101111561121e57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156112715783516001600160801b03168352928401929184019160010161124c565b50909695505050505050565b6000806040838503121561129057600080fd5b823561129b81610f4e565b915060208301356112ab81611096565b809150509250929050565b6000602082840312156112c857600080fd5b815161108f81611096565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112fb57600080fd5b813561108f81610f4e565b600060c0828403121561131857600080fd5b60405160c0810181811067ffffffffffffffff8211171561133b5761133b6110d7565b604052825161134981610f4e565b8152602083015161135981610fa7565b6020820152604083015161136c81611096565b6040820152606083015161137f81610f4e565b6060820152608083015161139281610fa7565b608082015260a08301516113a581611096565b60a08201529392505050565b6000806000606084860312156113c657600080fd5b83516001600160801b03811681146113dd57600080fd5b60208501519093506113ee81610fa7565b60408501519092506113ff81610fa7565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b6000600182016114325761143261140a565b5060010190565b60005b8381101561145457818101518382015260200161143c565b50506000910152565b60008151808452611475816020860160208601611439565b601f01601f19169290920160200192915050565b61ffff831681526040602082015260006114a6604083018461145d565b949350505050565b61ffff8716815260c0602082015260006114cb60c083018861145d565b82810360408401526114dd818861145d565b6001600160a01b0387811660608601528616608085015283810360a08501529050611508818561145d565b9998505050505050505050565b60006020828403121561152757600080fd5b5051919050565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061155c9083018661145d565b84151560608401528281036080840152611576818561145d565b98975050505050505050565b6000806040838503121561159557600080fd5b505080516020909101519092909150565b808201808211156106755761067561140a565b600082516115cb818460208701611439565b9190910192915050565b6000602082840312156115e757600080fd5b8151801515811461108f57600080fd5b6000808335601e1984360301811261160e57600080fd5b83018035915067ffffffffffffffff82111561162957600080fd5b602001915036819003821315610fa057600080fdfea26469706673582212203f689c94c63cff58d7c38caa963bdedcae9248112bdb776f056085adf7d8bf3764736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003a73033c0b1407574c76bdbac67f126f6b4a9aa900000000000000000000000015e51701f245f6d5bd0fee87bcaf55b0841451b3000000000000000000000000000000000000000000000000000000000000008000000000000000000000000072e28c7f34100afefc399fcc0ae041b8fe5841ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000009dc21687622c00
-----Decoded View---------------
Arg [0] : _lzEndpoint (address): 0x3A73033C0b1407574C76BdBAc67f126f6b4a9AA9
Arg [1] : _lzRelayer (address): 0x15e51701F245F6D5bd0FEE87bCAf55B0841451B3
Arg [2] : _validation (bytes): 0x0000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000009dc21687622c00
Arg [3] : _owner (address): 0x72E28c7F34100AfefC399fcc0AE041B8fe5841AE
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000003a73033c0b1407574c76bdbac67f126f6b4a9aa9
Arg [1] : 00000000000000000000000015e51701f245f6d5bd0fee87bcaf55b0841451b3
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 00000000000000000000000072e28c7f34100afefc399fcc0ae041b8fe5841ae
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [5] : 0000000000000000000000000000000000000000000000000000000000001b58
Arg [6] : 000000000000000000000000000000000000000000000000009dc21687622c00
Deployed Bytecode Sourcemap
17622:7485:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20581:78;;;;;;;;;;-1:-1:-1;20581:78:0;;;;;:::i;:::-;;;;;;;;;;17300:73;;;;;;;;;;-1:-1:-1;17300:73:0;17352:20;17300:73;;;;;1763:25:1;;;1751:2;1736:18;17300:73:0;;;;;;;;22053:200;;;;;;;;;;-1:-1:-1;22053:200:0;;;;;:::i;:::-;;:::i;12179:361::-;;;;;;;;;;-1:-1:-1;12179:361:0;;;;;:::i;:::-;;:::i;21763:114::-;;;;;;;;;;-1:-1:-1;21763:114:0;;;;;:::i;:::-;;:::i;11142:78::-;;;;;;;;;;;;;:::i;5549:86::-;;;;;;;;;;-1:-1:-1;5596:4:0;5620:7;-1:-1:-1;;;5620:7:0;;;;5549:86;;3883:14:1;;3876:22;3858:41;;3846:2;3831:18;5549:86:0;3718:187:1;21548:101:0;;;;;;;;;;-1:-1:-1;21548:101:0;;;;;:::i;:::-;;:::i;22506:834::-;;;;;;;;;;-1:-1:-1;22506:834:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20876:250::-;;;;;;;;;;-1:-1:-1;20876:250:0;;;;;:::i;:::-;;:::i;3004:103::-;;;;;;;;;;;;;:::i;11006:77::-;;;;;;;;;;;;;:::i;2356:87::-;;;;;;;;;;-1:-1:-1;2402:7:0;2429:6;-1:-1:-1;;;;;2429:6:0;2356:87;;;-1:-1:-1;;;;;6014:32:1;;;5996:51;;5984:2;5969:18;2356:87:0;5850:203:1;18206:25:0;;;;;;;;;;-1:-1:-1;18206:25:0;;;;-1:-1:-1;;;;;18206:25:0;;;21286:105;;;;;;;;;;-1:-1:-1;21286:105:0;;;;;:::i;:::-;;:::i;18310:24::-;;;;;;;;;;-1:-1:-1;18310:24:0;;;;-1:-1:-1;;;;;18310:24:0;;;19888:557;;;;;;:::i;:::-;;:::i;3262:201::-;;;;;;;;;;-1:-1:-1;3262:201:0;;;;;:::i;:::-;;:::i;11438:445::-;;;;;;;;;;-1:-1:-1;11438:445:0;;;;;:::i;:::-;;:::i;22053:200::-;22165:15;22209:36;22226:11;22239:5;22209:16;:36::i;:::-;-1:-1:-1;22193:52:0;;22053:200;-1:-1:-1;;;22053:200:0:o;12179:361::-;2242:13;:11;:13::i;:::-;-1:-1:-1;;;;;;;12285:51:0;::::1;::::0;12281:252:::1;;12372:44;12391:10;12403:12;12372:18;:44::i;:::-;12179:361:::0;;:::o;12281:252::-:1;12468:53;12481:13;12496:10;12508:12;12468;:53::i;21763:114::-:0;2242:13;:11;:13::i;:::-;21842:27:::1;21857:11;21842:14;:27::i;:::-;21763:114:::0;:::o;11142:78::-;2242:13;:11;:13::i;:::-;5413:16:::1;:14;:16::i;:::-;11202:10:::2;:8;:10::i;:::-;11142:78::o:0;21548:101::-;2242:13;:11;:13::i;:::-;21618:23:::1;21630:10;21618:11;:23::i;22506:834::-:0;22606:16;22635:23;22675:11;22661:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22661:33:0;-1:-1:-1;22835:10:0;;22815:68;;-1:-1:-1;;;22815:68:0;;22877:4;22815:68;;;5996:51:1;22635:59:0;;-1:-1:-1;22707:16:0;;;;;;;;-1:-1:-1;;;;;22835:10:0;;22815:53;;5969:18:1;;22815:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22793:90;;22901:13;22896:411;22916:26;;;22896:411;;;22980:11;;22992:5;22980:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23033:87;;-1:-1:-1;;;23033:87:0;;6898:6:1;6886:19;;23033:87:0;;;6868:38:1;23114:4:0;6922:18:1;;;6915:60;22968:30:0;;-1:-1:-1;;;;;;23033:61:0;;;;;6841:18:1;;23033:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:123;;;23203:9;;23185:74;;-1:-1:-1;;;23185:74:0;;8359:6:1;8392:15;;;23185:74:0;;;8374:34:1;8444:15;;8424:18;;;8417:43;23033:123:0;;-1:-1:-1;;;;;;23203:9:0;;23185:44;;8322:18:1;;23185:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23173:86;;;;;;;23292:3;23276:6;23283:5;23276:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23276:19:0;;;:13;;;;;;;;;;;:19;22944:7;;;;:::i;:::-;;;;22896:411;;;-1:-1:-1;23326:6:0;;-1:-1:-1;;;;;22506:834:0;;;;;:::o;20876:250::-;20988:10;;21064:43;;;-1:-1:-1;;;;;;9544:2:1;9540:15;;;9536:24;;21064:43:0;;;9524:37:1;21101:4:0;9595:15:1;;9591:24;9577:12;;;9570:46;21064:43:0;;;;;;;;;9632:12:1;;;21064:43:0;;;;-1:-1:-1;;;20964:154:0;;;-1:-1:-1;;;;;20988:10:0;;;;20964:54;;:154;;21033:16;;21064:43;20964:154;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3004:103;2242:13;:11;:13::i;:::-;3069:30:::1;3096:1;3069:18;:30::i;11006:77::-:0;2242:13;:11;:13::i;:::-;5154:19:::1;:17;:19::i;:::-;11067:8:::2;:6;:8::i;21286:105::-:0;2242:13;:11;:13::i;:::-;21358:25:::1;21371:11;21358:12;:25::i;19888:557::-:0;5154:19;:17;:19::i;:::-;20012:15:::1;20029:14:::0;20045:32:::1;20081:72;20112:11;20138:4;20081:16;:72::i;:::-;20185:10;::::0;20011:142;;-1:-1:-1;20011:142:0;;-1:-1:-1;20011:142:0;-1:-1:-1;;;;;;20185:10:0::1;20166:35;20011:142:::0;20234:21:::1;;::::0;::::1;:11:::0;:21:::1;:::i;:::-;20270:39;::::0;-1:-1:-1;;;;;;9544:2:1;9540:15;;;9536:24;;20270:39:0::1;::::0;::::1;9524:37:1::0;20303:4:0::1;9595:15:1::0;;9591:24;9577:12;;;9570:46;9632:12;;20270:39:0::1;::::0;;-1:-1:-1;;20270:39:0;;::::1;::::0;;;::::1;20324:15:::0;::::1;::::0;;-1:-1:-1;20324:15:0;;;20166:271;;-1:-1:-1;;;;;;20166:271:0::1;::::0;;;;;;::::1;::::0;;20270:39;;20362:4:::1;::::0;20407:19;;20166:271:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;20000:445;;;19888:557:::0;:::o;3262:201::-;2242:13;:11;:13::i;:::-;-1:-1:-1;;;;;3351:22:0;::::1;3343:73;;;::::0;-1:-1:-1;;;3343:73:0;;11533:2:1;3343:73:0::1;::::0;::::1;11515:21:1::0;11572:2;11552:18;;;11545:30;11611:34;11591:18;;;11584:62;-1:-1:-1;;;11662:18:1;;;11655:36;11708:19;;3343:73:0::1;;;;;;;;;3427:28;3446:8;3427:18;:28::i;11438:445::-:0;2242:13;:11;:13::i;:::-;-1:-1:-1;;;;;;;11512:51:0;::::1;::::0;11508:368:::1;;11599:53;11618:10;11630:21;11599:18;:53::i;11508:368::-;11796:53;::::0;-1:-1:-1;;;11796:53:0;;11843:4:::1;11796:53;::::0;::::1;5996:51:1::0;11704:160:0::1;::::0;11735:13;;11767:10:::1;::::0;-1:-1:-1;;;;;11796:38:0;::::1;::::0;::::1;::::0;5969:18:1;;11796:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11704:12;:160::i;23901:683::-:0;24034:15;24051:14;24067:32;24112:14;24179:30;24197:11;24179:17;:30::i;:::-;24255:10;;24139:70;;-1:-1:-1;24139:70:0;-1:-1:-1;24139:70:0;-1:-1:-1;;;;;;24255:10:0;24236:43;24294:21;;;;:11;:21;:::i;:::-;24358:15;;;;;;;;-1:-1:-1;24358:15:0;;;24236:202;;-1:-1:-1;;;;;;24236:202:0;;;;;;;;;;24338:4;;24358:15;24408:19;;24236:202;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24222:216:0;-1:-1:-1;24455:9:0;:69;;;;;24478:9;;24469:6;:18;:54;;;;24514:9;24501:10;;24491:7;:20;;;;:::i;:::-;:32;24469:54;24451:126;;;24548:17;;-1:-1:-1;;;24548:17:0;;;;;;;;;;;24451:126;24101:483;23901:683;;;;;:::o;2521:132::-;2402:7;2429:6;-1:-1:-1;;;;;2429:6:0;932:10;2585:23;2577:68;;;;-1:-1:-1;;;2577:68:0;;13154:2:1;2577:68:0;;;13136:21:1;;;13173:18;;;13166:30;13232:34;13212:18;;;13205:62;13284:18;;2577:68:0;12952:356:1;10005:199:0;10114:12;;;10070;10114;;;;;;;;;-1:-1:-1;;;;;10088:8:0;;;10105:6;;10088:39;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10069:58;;;10141:7;10136:65;;10168:25;;-1:-1:-1;;;10168:25:0;;;;;;;;;;;10136:65;10062:142;10005:199;;:::o;8705:409::-;8904:47;;;-1:-1:-1;;;;;13797:32:1;;;8904:47:0;;;13779:51:1;13846:18;;;;13839:34;;;8904:47:0;;;;;;;;;;13752:18:1;;;;8904:47:0;;;;;;;-1:-1:-1;;;;;8904:47:0;-1:-1:-1;;;8904:47:0;;;8882:76;;-1:-1:-1;;;;8882:11:0;;;;:76;;8904:47;8882:76;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8846:112;;;;8967:14;8984:7;:57;;;;-1:-1:-1;8996:11:0;;:16;;:44;;;9027:4;9016:24;;;;;;;;;;;;:::i;:::-;8967:74;;9055:9;9050:61;;9084:19;;-1:-1:-1;;;9084:19:0;;;;;;;;;;;23747:146;23853:11;23842:43;;;;;;;;;;;;:::i;:::-;23828:10;23816:69;23817:9;23816:69;-1:-1:-1;23747:146:0:o;5893:108::-;5596:4;5620:7;-1:-1:-1;;;5620:7:0;;;;5952:41;;;;-1:-1:-1;;;5952:41:0;;14368:2:1;5952:41:0;;;14350:21:1;14407:2;14387:18;;;14380:30;-1:-1:-1;;;14426:18:1;;;14419:50;14486:18;;5952:41:0;14166:344:1;6404:120:0;5413:16;:14;:16::i;:::-;6473:5:::1;6463:15:::0;;-1:-1:-1;;;;6463:15:0::1;::::0;;6494:22:::1;932:10:::0;6503:12:::1;6494:22;::::0;-1:-1:-1;;;;;6014:32:1;;;5996:51;;5984:2;5969:18;6494:22:0::1;;;;;;;6404:120::o:0;23551:188::-;23629:27;23645:10;23629:15;:27::i;:::-;23669:9;:22;;-1:-1:-1;;;;;;23669:22:0;-1:-1:-1;;;;;23669:22:0;;;;;;;;23709;;;;-1:-1:-1;;23709:22:0;23551:188;:::o;3623:191::-;3697:16;3716:6;;-1:-1:-1;;;;;3733:17:0;;;-1:-1:-1;;;;;;3733:17:0;;;;;;3766:40;;3716:6;;;;;;;3766:40;;3697:16;3766:40;3686:128;3623:191;:::o;5708:108::-;5596:4;5620:7;-1:-1:-1;;;5620:7:0;;;;5778:9;5770:38;;;;-1:-1:-1;;;5770:38:0;;14717:2:1;5770:38:0;;;14699:21:1;14756:2;14736:18;;;14729:30;-1:-1:-1;;;14775:18:1;;;14768:46;14831:18;;5770:38:0;14515:340:1;6145:118:0;5154:19;:17;:19::i;:::-;6205:7:::1;:14:::0;;-1:-1:-1;;;;6205:14:0::1;-1:-1:-1::0;;;6205:14:0::1;::::0;;6235:20:::1;6242:12;932:10:::0;;852:98;23348:195;23428:28;23444:11;23428:15;:28::i;:::-;23469:10;:24;;-1:-1:-1;;;;;;23469:24:0;-1:-1:-1;;;;;23469:24:0;;;;;;;;23511;;;;-1:-1:-1;;23511:24:0;23348:195;:::o;24592:512::-;24701:14;;24733:32;24808:20;;;;:11;:20;:::i;:::-;24797:52;;;;;;;:::i;:::-;24778:71;;-1:-1:-1;24778:71:0;-1:-1:-1;18399:1:0;24778:71;24980:18;;;;;;25046:1;;25013:21;;;;;;:::i;:::-;-1:-1:-1;;;;;25013:35:0;;:72;;25064:21;;;;;;;;:::i;:::-;25013:72;;;25051:10;25013:72;24884:212;;;;;;;;;;15963:3:1;15941:16;;;;-1:-1:-1;;;;;;15937:38:1;15925:51;;16001:1;15992:11;;15985:27;;;;16037:2;16028:12;;16021:28;16087:2;16083:15;-1:-1:-1;;;;;;16079:53:1;16074:2;16065:12;;16058:75;16158:2;16149:12;;15714:453;24884:212:0;;;;;;;;;;;;;24862:234;;24592:512;;;;;:::o;16579:144::-;-1:-1:-1;;;;;16477:20:0;;;16634:86;;16679:33;;-1:-1:-1;;;16679:33:0;;-1:-1:-1;;;;;6014:32:1;;16679:33:0;;;5996:51:1;5969:18;;16679:33:0;5850:203:1;14:117;99:6;92:5;88:18;81:5;78:29;68:57;;121:1;118;111:12;136:347;187:8;197:6;251:3;244:4;236:6;232:17;228:27;218:55;;269:1;266;259:12;218:55;-1:-1:-1;292:20:1;;335:18;324:30;;321:50;;;367:1;364;357:12;321:50;404:4;396:6;392:17;380:29;;456:3;449:4;440:6;432;428:19;424:30;421:39;418:59;;;473:1;470;463:12;418:59;136:347;;;;;:::o;488:129::-;573:18;566:5;562:30;555:5;552:41;542:69;;607:1;604;597:12;622:990;728:6;736;744;752;760;768;821:3;809:9;800:7;796:23;792:33;789:53;;;838:1;835;828:12;789:53;877:9;864:23;896:30;920:5;896:30;:::i;:::-;945:5;-1:-1:-1;1001:2:1;986:18;;973:32;1024:18;1054:14;;;1051:34;;;1081:1;1078;1071:12;1051:34;1120:58;1170:7;1161:6;1150:9;1146:22;1120:58;:::i;:::-;1197:8;;-1:-1:-1;1094:84:1;-1:-1:-1;1284:2:1;1269:18;;1256:32;;-1:-1:-1;1297:32:1;1256;1297;:::i;:::-;1348:7;;-1:-1:-1;1408:2:1;1393:18;;1380:32;;1424:16;;;1421:36;;;1453:1;1450;1443:12;1421:36;;1492:60;1544:7;1533:8;1522:9;1518:24;1492:60;:::i;:::-;622:990;;;;-1:-1:-1;622:990:1;;-1:-1:-1;622:990:1;;1571:8;;622:990;-1:-1:-1;;;622:990:1:o;1799:400::-;1898:6;1951:2;1939:9;1930:7;1926:23;1922:32;1919:52;;;1967:1;1964;1957:12;1919:52;2007:9;1994:23;2040:18;2032:6;2029:30;2026:50;;;2072:1;2069;2062:12;2026:50;2095:22;;2151:3;2133:16;;;2129:26;2126:46;;;2168:1;2165;2158:12;2126:46;2191:2;1799:400;-1:-1:-1;;;1799:400:1:o;2204:131::-;-1:-1:-1;;;;;2279:31:1;;2269:42;;2259:70;;2325:1;2322;2315:12;2340:315;2408:6;2416;2469:2;2457:9;2448:7;2444:23;2440:32;2437:52;;;2485:1;2482;2475:12;2437:52;2524:9;2511:23;2543:31;2568:5;2543:31;:::i;:::-;2593:5;2645:2;2630:18;;;;2617:32;;-1:-1:-1;;;2340:315:1:o;2660:127::-;2721:10;2716:3;2712:20;2709:1;2702:31;2752:4;2749:1;2742:15;2776:4;2773:1;2766:15;2792:921;2860:6;2913:2;2901:9;2892:7;2888:23;2884:32;2881:52;;;2929:1;2926;2919:12;2881:52;2969:9;2956:23;2998:18;3039:2;3031:6;3028:14;3025:34;;;3055:1;3052;3045:12;3025:34;3093:6;3082:9;3078:22;3068:32;;3138:7;3131:4;3127:2;3123:13;3119:27;3109:55;;3160:1;3157;3150:12;3109:55;3196:2;3183:16;3218:2;3214;3211:10;3208:36;;;3224:18;;:::i;:::-;3299:2;3293:9;3267:2;3353:13;;-1:-1:-1;;3349:22:1;;;3373:2;3345:31;3341:40;3329:53;;;3397:18;;;3417:22;;;3394:46;3391:72;;;3443:18;;:::i;:::-;3483:10;3479:2;3472:22;3518:2;3510:6;3503:18;3558:7;3553:2;3548;3544;3540:11;3536:20;3533:33;3530:53;;;3579:1;3576;3569:12;3530:53;3635:2;3630;3626;3622:11;3617:2;3609:6;3605:15;3592:46;3680:1;3658:15;;;3675:2;3654:24;3647:35;;;;-1:-1:-1;3662:6:1;2792:921;-1:-1:-1;;;;;2792:921:1:o;3910:247::-;3969:6;4022:2;4010:9;4001:7;3997:23;3993:32;3990:52;;;4038:1;4035;4028:12;3990:52;4077:9;4064:23;4096:31;4121:5;4096:31;:::i;4162:614::-;4247:6;4255;4308:2;4296:9;4287:7;4283:23;4279:32;4276:52;;;4324:1;4321;4314:12;4276:52;4364:9;4351:23;4393:18;4434:2;4426:6;4423:14;4420:34;;;4450:1;4447;4440:12;4420:34;4488:6;4477:9;4473:22;4463:32;;4533:7;4526:4;4522:2;4518:13;4514:27;4504:55;;4555:1;4552;4545:12;4504:55;4595:2;4582:16;4621:2;4613:6;4610:14;4607:34;;;4637:1;4634;4627:12;4607:34;4690:7;4685:2;4675:6;4672:1;4668:14;4664:2;4660:23;4656:32;4653:45;4650:65;;;4711:1;4708;4701:12;4650:65;4742:2;4734:11;;;;;4764:6;;-1:-1:-1;4162:614:1;;-1:-1:-1;;;;4162:614:1:o;4781:673::-;4952:2;5004:21;;;5074:13;;4977:18;;;5096:22;;;4923:4;;4952:2;5175:15;;;;5149:2;5134:18;;;4923:4;5218:210;5232:6;5229:1;5226:13;5218:210;;;5297:13;;-1:-1:-1;;;;;5293:54:1;5281:67;;5403:15;;;;5368:12;;;;5254:1;5247:9;5218:210;;;-1:-1:-1;5445:3:1;;4781:673;-1:-1:-1;;;;;;4781:673:1:o;5459:386::-;5526:6;5534;5587:2;5575:9;5566:7;5562:23;5558:32;5555:52;;;5603:1;5600;5593:12;5555:52;5642:9;5629:23;5661:30;5685:5;5661:30;:::i;:::-;5710:5;-1:-1:-1;5767:2:1;5752:18;;5739:32;5780:33;5739:32;5780:33;:::i;:::-;5832:7;5822:17;;;5459:386;;;;;:::o;6058:251::-;6128:6;6181:2;6169:9;6160:7;6156:23;6152:32;6149:52;;;6197:1;6194;6187:12;6149:52;6229:9;6223:16;6248:31;6273:5;6248:31;:::i;6314:127::-;6375:10;6370:3;6366:20;6363:1;6356:31;6406:4;6403:1;6396:15;6430:4;6427:1;6420:15;6446:245;6504:6;6557:2;6545:9;6536:7;6532:23;6528:32;6525:52;;;6573:1;6570;6563:12;6525:52;6612:9;6599:23;6631:30;6655:5;6631:30;:::i;6986:1188::-;7098:6;7151:3;7139:9;7130:7;7126:23;7122:33;7119:53;;;7168:1;7165;7158:12;7119:53;7201:2;7195:9;7243:3;7235:6;7231:16;7313:6;7301:10;7298:22;7277:18;7265:10;7262:34;7259:62;7256:88;;;7324:18;;:::i;:::-;7360:2;7353:22;7397:16;;7422:30;7397:16;7422:30;:::i;:::-;7461:21;;7527:2;7512:18;;7506:25;7540:32;7506:25;7540:32;:::i;:::-;7600:2;7588:15;;7581:32;7658:2;7643:18;;7637:25;7671:33;7637:25;7671:33;:::i;:::-;7732:2;7720:15;;7713:32;7790:2;7775:18;;7769:25;7803:32;7769:25;7803:32;:::i;:::-;7863:2;7851:15;;7844:32;7921:3;7906:19;;7900:26;7935:32;7900:26;7935:32;:::i;:::-;7995:3;7983:16;;7976:33;8054:3;8039:19;;8033:26;8068:33;8033:26;8068:33;:::i;:::-;8129:3;8117:16;;8110:33;8121:6;6986:1188;-1:-1:-1;;;6986:1188:1:o;8471:569::-;8557:6;8565;8573;8626:2;8614:9;8605:7;8601:23;8597:32;8594:52;;;8642:1;8639;8632:12;8594:52;8674:9;8668:16;-1:-1:-1;;;;;8717:5:1;8713:46;8706:5;8703:57;8693:85;;8774:1;8771;8764:12;8693:85;8847:2;8832:18;;8826:25;8797:5;;-1:-1:-1;8860:32:1;8826:25;8860:32;:::i;:::-;8963:2;8948:18;;8942:25;8911:7;;-1:-1:-1;8976:32:1;8942:25;8976:32;:::i;:::-;9027:7;9017:17;;;8471:569;;;;;:::o;9045:127::-;9106:10;9101:3;9097:20;9094:1;9087:31;9137:4;9134:1;9127:15;9161:4;9158:1;9151:15;9177:135;9216:3;9237:17;;;9234:43;;9257:18;;:::i;:::-;-1:-1:-1;9304:1:1;9293:13;;9177:135::o;9655:250::-;9740:1;9750:113;9764:6;9761:1;9758:13;9750:113;;;9840:11;;;9834:18;9821:11;;;9814:39;9786:2;9779:10;9750:113;;;-1:-1:-1;;9897:1:1;9879:16;;9872:27;9655:250::o;9910:270::-;9951:3;9989:5;9983:12;10016:6;10011:3;10004:19;10032:76;10101:6;10094:4;10089:3;10085:14;10078:4;10071:5;10067:16;10032:76;:::i;:::-;10162:2;10141:15;-1:-1:-1;;10137:29:1;10128:39;;;;10169:4;10124:50;;9910:270;-1:-1:-1;;9910:270:1:o;10185:299::-;10370:6;10362;10358:19;10347:9;10340:38;10414:2;10409;10398:9;10394:18;10387:30;10321:4;10434:44;10474:2;10463:9;10459:18;10451:6;10434:44;:::i;:::-;10426:52;10185:299;-1:-1:-1;;;;10185:299:1:o;10489:837::-;10838:6;10830;10826:19;10815:9;10808:38;10882:3;10877:2;10866:9;10862:18;10855:31;10789:4;10909:45;10949:3;10938:9;10934:19;10926:6;10909:45;:::i;:::-;11002:9;10994:6;10990:22;10985:2;10974:9;10970:18;10963:50;11036:32;11061:6;11053;11036:32;:::i;:::-;-1:-1:-1;;;;;11142:15:1;;;11137:2;11122:18;;11115:43;11195:15;;11189:3;11174:19;;11167:44;11248:22;;;11095:3;11227:19;;11220:51;11022:46;-1:-1:-1;11288:32:1;11022:46;11305:6;11288:32;:::i;:::-;11280:40;10489:837;-1:-1:-1;;;;;;;;;10489:837:1:o;11738:184::-;11808:6;11861:2;11849:9;11840:7;11836:23;11832:32;11829:52;;;11877:1;11874;11867:12;11829:52;-1:-1:-1;11900:16:1;;11738:184;-1:-1:-1;11738:184:1:o;11927:640::-;12208:6;12196:19;;12178:38;;-1:-1:-1;;;;;12252:32:1;;12247:2;12232:18;;12225:60;12272:3;12316:2;12301:18;;12294:31;;;-1:-1:-1;;12348:45:1;;12373:19;;12365:6;12348:45;:::i;:::-;12443:6;12436:14;12429:22;12424:2;12413:9;12409:18;12402:50;12501:9;12493:6;12489:22;12483:3;12472:9;12468:19;12461:51;12529:32;12554:6;12546;12529:32;:::i;:::-;12521:40;11927:640;-1:-1:-1;;;;;;;;11927:640:1:o;12572:245::-;12651:6;12659;12712:2;12700:9;12691:7;12687:23;12683:32;12680:52;;;12728:1;12725;12718:12;12680:52;-1:-1:-1;;12751:16:1;;12807:2;12792:18;;;12786:25;12751:16;;12786:25;;-1:-1:-1;12572:245:1:o;12822:125::-;12887:9;;;12908:10;;;12905:36;;;12921:18;;:::i;13313:287::-;13442:3;13480:6;13474:13;13496:66;13555:6;13550:3;13543:4;13535:6;13531:17;13496:66;:::i;:::-;13578:16;;;;;13313:287;-1:-1:-1;;13313:287:1:o;13884:277::-;13951:6;14004:2;13992:9;13983:7;13979:23;13975:32;13972:52;;;14020:1;14017;14010:12;13972:52;14052:9;14046:16;14105:5;14098:13;14091:21;14084:5;14081:32;14071:60;;14127:1;14124;14117:12;14860:521;14937:4;14943:6;15003:11;14990:25;15097:2;15093:7;15082:8;15066:14;15062:29;15058:43;15038:18;15034:68;15024:96;;15116:1;15113;15106:12;15024:96;15143:33;;15195:20;;;-1:-1:-1;15238:18:1;15227:30;;15224:50;;;15270:1;15267;15260:12;15224:50;15303:4;15291:17;;-1:-1:-1;15334:14:1;15330:27;;;15320:38;;15317:58;;;15371:1;15368;15361:12
Swarm Source
ipfs://3f689c94c63cff58d7c38caa963bdedcae9248112bdb776f056085adf7d8bf37
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.