Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 20 from a total of 20 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 14687060 | 821 days ago | IN | 0 ETH | 0.00146349 | ||||
Set Wrapped To U... | 14430396 | 861 days ago | IN | 0 ETH | 0.00152638 | ||||
Set Wrapped To P... | 14430394 | 861 days ago | IN | 0 ETH | 0.00163052 | ||||
Set Underlying T... | 14430387 | 861 days ago | IN | 0 ETH | 0.00146959 | ||||
Set Underlying T... | 14430328 | 861 days ago | IN | 0 ETH | 0.00083269 | ||||
Set Wrapped To U... | 14397859 | 866 days ago | IN | 0 ETH | 0.00148753 | ||||
Set Wrapped To P... | 14397859 | 866 days ago | IN | 0 ETH | 0.00147793 | ||||
Set Underlying T... | 14397811 | 866 days ago | IN | 0 ETH | 0.00200374 | ||||
Set Wrapped To U... | 14397794 | 866 days ago | IN | 0 ETH | 0.00150198 | ||||
Set Wrapped To P... | 14397791 | 866 days ago | IN | 0 ETH | 0.00153509 | ||||
Set Wrapped To U... | 14397783 | 866 days ago | IN | 0 ETH | 0.00168699 | ||||
Set Wrapped To P... | 14397781 | 866 days ago | IN | 0 ETH | 0.00148352 | ||||
Set Wrapped To U... | 14397776 | 866 days ago | IN | 0 ETH | 0.00174485 | ||||
Set Wrapped To P... | 14397776 | 866 days ago | IN | 0 ETH | 0.00173359 | ||||
Set Underlying T... | 14397776 | 866 days ago | IN | 0 ETH | 0.00177248 | ||||
Set Underlying T... | 14397763 | 866 days ago | IN | 0 ETH | 0.00181318 | ||||
Set Underlying T... | 14397754 | 866 days ago | IN | 0 ETH | 0.00179214 | ||||
Set Protocol To ... | 14397694 | 866 days ago | IN | 0 ETH | 0.00190166 | ||||
Set Protocol To ... | 14397691 | 866 days ago | IN | 0 ETH | 0.00194985 | ||||
0x60806040 | 14377598 | 869 days ago | IN | 0 ETH | 0.02018292 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LendingRegistry
Compiler Version
v0.7.1+commit.f4a555be
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-13 */ // File: Interfaces/ILendingLogic.sol pragma solidity ^0.7.1; interface ILendingLogic { /** @notice Get the APR based on underlying token. @param _token Address of the underlying token @return Interest with 18 decimals */ function getAPRFromUnderlying(address _token) external view returns(uint256); /** @notice Get the APR based on wrapped token. @param _token Address of the wrapped token @return Interest with 18 decimals */ function getAPRFromWrapped(address _token) external view returns(uint256); /** @notice Get the calls needed to lend. @param _underlying Address of the underlying token @param _amount Amount of the underlying token @return targets Addresses of the contracts to call @return data Calldata of the calls */ function lend(address _underlying, uint256 _amount, address _tokenHolder) external view returns(address[] memory targets, bytes[] memory data); /** @notice Get the calls needed to unlend @param _wrapped Address of the wrapped token @param _amount Amount of the underlying tokens @return targets Addresses of the contracts to call @return data Calldata of the calls */ function unlend(address _wrapped, uint256 _amount, address _tokenHolder) external view returns(address[] memory targets, bytes[] memory data); /** @notice Get the underlying wrapped exchange rate @param _wrapped Address of the wrapped token @return The exchange rate */ function exchangeRate(address _wrapped) external returns(uint256); /** @notice Get the underlying wrapped exchange rate in a view (non state changing) way @param _wrapped Address of the wrapped token @return The exchange rate */ function exchangeRateView(address _wrapped) external view returns(uint256); } // File: OpenZeppelin/Context.sol pragma solidity ^0.7.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 GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: OpenZeppelin/Ownable.sol pragma solidity ^0.7.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. */ 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: LendingRegistry.sol pragma experimental ABIEncoderV2; pragma solidity ^0.7.1; // TODO consider making this contract upgradeable contract LendingRegistry is Ownable { // Maps wrapped token to protocol mapping(address => bytes32) public wrappedToProtocol; // Maps wrapped token to underlying mapping(address => address) public wrappedToUnderlying; mapping(address => mapping(bytes32 => address)) public underlyingToProtocolWrapped; // Maps protocol to addresses containing lend and unlend logic mapping(bytes32 => address) public protocolToLogic; event WrappedToProtocolSet(address indexed wrapped, bytes32 indexed protocol); event WrappedToUnderlyingSet(address indexed wrapped, address indexed underlying); event ProtocolToLogicSet(bytes32 indexed protocol, address indexed logic); event UnderlyingToProtocolWrappedSet(address indexed underlying, bytes32 indexed protocol, address indexed wrapped); /** @notice Set which protocl a wrapped token belongs to @param _wrapped Address of the wrapped token @param _protocol Bytes32 key of the protocol */ function setWrappedToProtocol(address _wrapped, bytes32 _protocol) onlyOwner external { wrappedToProtocol[_wrapped] = _protocol; emit WrappedToProtocolSet(_wrapped, _protocol); } /** @notice Set what is the underlying for a wrapped token @param _wrapped Address of the wrapped token @param _underlying Address of the underlying token */ function setWrappedToUnderlying(address _wrapped, address _underlying) onlyOwner external { wrappedToUnderlying[_wrapped] = _underlying; emit WrappedToUnderlyingSet(_wrapped, _underlying); } /** @notice Set the logic contract for the protocol @param _protocol Bytes32 key of the protocol @param _logic Address of the lending logic contract for that protocol */ function setProtocolToLogic(bytes32 _protocol, address _logic) onlyOwner external { protocolToLogic[_protocol] = _logic; emit ProtocolToLogicSet(_protocol, _logic); } /** @notice Set the wrapped token for the underlying deposited in this protocol @param _underlying Address of the unerlying token @param _protocol Bytes32 key of the protocol @param _wrapped Address of the wrapped token */ function setUnderlyingToProtocolWrapped(address _underlying, bytes32 _protocol, address _wrapped) onlyOwner external { underlyingToProtocolWrapped[_underlying][_protocol] = _wrapped; emit UnderlyingToProtocolWrappedSet(_underlying, _protocol, _wrapped); } /** @notice Get tx data to lend the underlying amount in a specific protocol @param _underlying Address of the underlying token @param _amount Amount to lend @param _protocol Bytes32 key of the protocol @return targets Addresses of the contracts to call @return data Calldata for the calls */ function getLendTXData(address _underlying, uint256 _amount, address _tokenHolder, bytes32 _protocol) external view returns(address[] memory targets, bytes[] memory data) { ILendingLogic lendingLogic = ILendingLogic(protocolToLogic[_protocol]); require(address(lendingLogic) != address(0), "NO_LENDING_LOGIC_SET"); return lendingLogic.lend(_underlying, _amount, _tokenHolder); } /** @notice Get the tx data to unlend the wrapped amount @param _wrapped Address of the wrapped token @param _amount Amount of wrapped token to unlend @return targets Addresses of the contracts to call @return data Calldata for the calls */ function getUnlendTXData(address _wrapped, uint256 _amount, address _tokenHolder) external view returns(address[] memory targets, bytes[] memory data) { ILendingLogic lendingLogic = ILendingLogic(protocolToLogic[wrappedToProtocol[_wrapped]]); require(address(lendingLogic) != address(0), "NO_LENDING_LOGIC_SET"); return lendingLogic.unlend(_wrapped, _amount, _tokenHolder); } /** @notice Get the beste apr for the give protocols @dev returns default values if lending logic not found @param _underlying Address of the underlying token @param _protocols Array of protocols to include @return apr The APR @return protocol Protocol that provides the APR */ function getBestApr(address _underlying, bytes32[] memory _protocols) external view returns(uint256 apr, bytes32 protocol) { uint256 bestApr; bytes32 bestProtocol; for(uint256 i = 0; i < _protocols.length; i++) { bytes32 protocol = _protocols[i]; ILendingLogic lendingLogic = ILendingLogic(protocolToLogic[protocol]); require(address(lendingLogic) != address(0), "NO_LENDING_LOGIC_SET"); uint256 apr = lendingLogic.getAPRFromUnderlying(_underlying); if (apr > bestApr) { bestApr = apr; bestProtocol = protocol; } } return (bestApr, bestProtocol); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"bytes32","name":"protocol","type":"bytes32"},{"indexed":true,"internalType":"address","name":"logic","type":"address"}],"name":"ProtocolToLogicSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlying","type":"address"},{"indexed":true,"internalType":"bytes32","name":"protocol","type":"bytes32"},{"indexed":true,"internalType":"address","name":"wrapped","type":"address"}],"name":"UnderlyingToProtocolWrappedSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wrapped","type":"address"},{"indexed":true,"internalType":"bytes32","name":"protocol","type":"bytes32"}],"name":"WrappedToProtocolSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wrapped","type":"address"},{"indexed":true,"internalType":"address","name":"underlying","type":"address"}],"name":"WrappedToUnderlyingSet","type":"event"},{"inputs":[{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"bytes32[]","name":"_protocols","type":"bytes32[]"}],"name":"getBestApr","outputs":[{"internalType":"uint256","name":"apr","type":"uint256"},{"internalType":"bytes32","name":"protocol","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_tokenHolder","type":"address"},{"internalType":"bytes32","name":"_protocol","type":"bytes32"}],"name":"getLendTXData","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wrapped","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_tokenHolder","type":"address"}],"name":"getUnlendTXData","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"protocolToLogic","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_protocol","type":"bytes32"},{"internalType":"address","name":"_logic","type":"address"}],"name":"setProtocolToLogic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"bytes32","name":"_protocol","type":"bytes32"},{"internalType":"address","name":"_wrapped","type":"address"}],"name":"setUnderlyingToProtocolWrapped","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wrapped","type":"address"},{"internalType":"bytes32","name":"_protocol","type":"bytes32"}],"name":"setWrappedToProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wrapped","type":"address"},{"internalType":"address","name":"_underlying","type":"address"}],"name":"setWrappedToUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"underlyingToProtocolWrapped","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wrappedToProtocol","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wrappedToUnderlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b611bc5806100db6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063adedc86a1161008c578063d26809e111610066578063d26809e11461025e578063d7aceec71461027a578063f2fde38b146102aa578063f8b7f422146102c6576100ea565b8063adedc86a146101e1578063b7db91fc14610212578063bda82acc14610242576100ea565b806358d28ef7116100c857806358d28ef71461016c5780635f91dd811461019d578063715018a6146101b95780638da5cb5b146101c3576100ea565b806314457947146100ef578063196041181461010b57806355579d321461013c575b600080fd5b610109600480360381019061010491906113ce565b6102f6565b005b6101256004803603810190610120919061133e565b610479565b604051610133929190611927565b60405180910390f35b610156600480360381019061015191906112d9565b610607565b6040516101639190611823565b60405180910390f35b6101866004803603810190610181919061141d565b61063a565b604051610194929190611875565b60405180910390f35b6101b760048036038101906101b29190611392565b6107c3565b005b6101c16108e4565b005b6101cb610a37565b6040516101d89190611823565b60405180910390f35b6101fb60048036038101906101f6919061146c565b610a60565b604051610209929190611875565b60405180910390f35b61022c600480360381019061022791906112d9565b610bab565b60405161023991906118ac565b60405180910390f35b61025c60048036038101906102579190611564565b610bc3565b005b61027860048036038101906102739190611302565b610cf2565b005b610294600480360381019061028f9190611392565b610e63565b6040516102a19190611823565b60405180910390f35b6102c460048036038101906102bf91906112d9565b610ea5565b005b6102e060048036038101906102db919061153b565b611067565b6040516102ed9190611823565b60405180910390f35b6102fe61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461038b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038290611907565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff167ef16cac75566114cbfffaff7857b8fff8050ff0820a182eac3b236f0b62ac2b60405160405180910390a4505050565b60008060008060005b85518110156105f757600086828151811061049957fe5b6020026020010151905060006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561054b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610542906118e7565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166337bca10f8b6040518263ffffffff1660e01b81526004016105869190611823565b60206040518083038186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d691906115a0565b9050858111156105e7578095508294505b5050508080600101915050610482565b5081819350935050509250929050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606080600060046000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b906118e7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342bde0b88787876040518463ffffffff1660e01b81526004016107619392919061183e565b60006040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b691906114cf565b9250925050935093915050565b6107cb61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90611907565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff167f8d6c4851f1ff74632094f71fe39e4b0603cfd53a02524b0f56e077ec1a62464460405160405180910390a35050565b6108ec61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090611907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60608060006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b02906118e7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16637b1c44328888886040518463ffffffff1660e01b8152600401610b489392919061183e565b60006040518083038186803b158015610b6057600080fd5b505afa158015610b74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b9d91906114cf565b925092505094509492505050565b60016020528060005260406000206000915090505481565b610bcb61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90611907565b60405180910390fd5b806004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16827f05b94fa6d67a57a259499d28d3f8fd0eb8131cda46ea8c527ce24199839cb66460405160405180910390a35050565b610cfa61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90611907565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fcff55967603e193c0ecb65c41c4fa6f4032a9053d0fad30061ec89105cc7b5c260405160405180910390a35050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ead61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190611907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa1906118c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b6000813590506110b181611b4a565b92915050565b6000815190506110c681611b4a565b92915050565b600082601f8301126110dd57600080fd5b81516110f06110eb8261197d565b611950565b9150818183526020840193506020810190508385602084028201111561111557600080fd5b60005b83811015611145578161112b88826110b7565b845260208401935060208301925050600181019050611118565b5050505092915050565b600082601f83011261116057600080fd5b813561117361116e826119a5565b611950565b9150818183526020840193506020810190508385602084028201111561119857600080fd5b60005b838110156111c857816111ae8882611246565b84526020840193506020830192505060018101905061119b565b5050505092915050565b600082601f8301126111e357600080fd5b81516111f66111f1826119cd565b611950565b9150818183526020840193506020810190508360005b8381101561123c5781518601611222888261125b565b84526020840193506020830192505060018101905061120c565b5050505092915050565b60008135905061125581611b61565b92915050565b600082601f83011261126c57600080fd5b815161127f61127a826119f5565b611950565b9150808252602083016020830185838301111561129b57600080fd5b6112a6838284611b06565b50505092915050565b6000813590506112be81611b78565b92915050565b6000815190506112d381611b78565b92915050565b6000602082840312156112eb57600080fd5b60006112f9848285016110a2565b91505092915050565b6000806040838503121561131557600080fd5b6000611323858286016110a2565b9250506020611334858286016110a2565b9150509250929050565b6000806040838503121561135157600080fd5b600061135f858286016110a2565b925050602083013567ffffffffffffffff81111561137c57600080fd5b6113888582860161114f565b9150509250929050565b600080604083850312156113a557600080fd5b60006113b3858286016110a2565b92505060206113c485828601611246565b9150509250929050565b6000806000606084860312156113e357600080fd5b60006113f1868287016110a2565b935050602061140286828701611246565b9250506040611413868287016110a2565b9150509250925092565b60008060006060848603121561143257600080fd5b6000611440868287016110a2565b9350506020611451868287016112af565b9250506040611462868287016110a2565b9150509250925092565b6000806000806080858703121561148257600080fd5b6000611490878288016110a2565b94505060206114a1878288016112af565b93505060406114b2878288016110a2565b92505060606114c387828801611246565b91505092959194509250565b600080604083850312156114e257600080fd5b600083015167ffffffffffffffff8111156114fc57600080fd5b611508858286016110cc565b925050602083015167ffffffffffffffff81111561152557600080fd5b611531858286016111d2565b9150509250929050565b60006020828403121561154d57600080fd5b600061155b84828501611246565b91505092915050565b6000806040838503121561157757600080fd5b600061158585828601611246565b9250506020611596858286016110a2565b9150509250929050565b6000602082840312156115b257600080fd5b60006115c0848285016112c4565b91505092915050565b60006115d583836115f5565b60208301905092915050565b60006115ed83836116f5565b905092915050565b6115fe81611ac0565b82525050565b61160d81611ac0565b82525050565b600061161e82611a41565b6116288185611a7c565b935061163383611a21565b8060005b8381101561166457815161164b88826115c9565b975061165683611a62565b925050600181019050611637565b5085935050505092915050565b600061167c82611a4c565b6116868185611a8d565b93508360208202850161169885611a31565b8060005b858110156116d457848403895281516116b585826115e1565b94506116c083611a6f565b925060208a0199505060018101905061169c565b50829750879550505050505092915050565b6116ef81611ad2565b82525050565b600061170082611a57565b61170a8185611a9e565b935061171a818560208601611b06565b61172381611b39565b840191505092915050565b600061173b602683611aaf565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117a1601483611aaf565b91507f4e4f5f4c454e44494e475f4c4f4749435f5345540000000000000000000000006000830152602082019050919050565b60006117e1602083611aaf565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b61181d81611afc565b82525050565b60006020820190506118386000830184611604565b92915050565b60006060820190506118536000830186611604565b6118606020830185611814565b61186d6040830184611604565b949350505050565b6000604082019050818103600083015261188f8185611613565b905081810360208301526118a38184611671565b90509392505050565b60006020820190506118c160008301846116e6565b92915050565b600060208201905081810360008301526118e08161172e565b9050919050565b6000602082019050818103600083015261190081611794565b9050919050565b60006020820190508181036000830152611920816117d4565b9050919050565b600060408201905061193c6000830185611814565b61194960208301846116e6565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561197357600080fd5b8060405250919050565b600067ffffffffffffffff82111561199457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156119bc57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156119e457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115611a0c57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611acb82611adc565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611b24578082015181840152602081019050611b09565b83811115611b33576000848401525b50505050565b6000601f19601f8301169050919050565b611b5381611ac0565b8114611b5e57600080fd5b50565b611b6a81611ad2565b8114611b7557600080fd5b50565b611b8181611afc565b8114611b8c57600080fd5b5056fea2646970667358221220b7a86cfec1379bd8a2b0a50cb3e529d843003231489e40a800a979138403cff764736f6c63430007010033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063adedc86a1161008c578063d26809e111610066578063d26809e11461025e578063d7aceec71461027a578063f2fde38b146102aa578063f8b7f422146102c6576100ea565b8063adedc86a146101e1578063b7db91fc14610212578063bda82acc14610242576100ea565b806358d28ef7116100c857806358d28ef71461016c5780635f91dd811461019d578063715018a6146101b95780638da5cb5b146101c3576100ea565b806314457947146100ef578063196041181461010b57806355579d321461013c575b600080fd5b610109600480360381019061010491906113ce565b6102f6565b005b6101256004803603810190610120919061133e565b610479565b604051610133929190611927565b60405180910390f35b610156600480360381019061015191906112d9565b610607565b6040516101639190611823565b60405180910390f35b6101866004803603810190610181919061141d565b61063a565b604051610194929190611875565b60405180910390f35b6101b760048036038101906101b29190611392565b6107c3565b005b6101c16108e4565b005b6101cb610a37565b6040516101d89190611823565b60405180910390f35b6101fb60048036038101906101f6919061146c565b610a60565b604051610209929190611875565b60405180910390f35b61022c600480360381019061022791906112d9565b610bab565b60405161023991906118ac565b60405180910390f35b61025c60048036038101906102579190611564565b610bc3565b005b61027860048036038101906102739190611302565b610cf2565b005b610294600480360381019061028f9190611392565b610e63565b6040516102a19190611823565b60405180910390f35b6102c460048036038101906102bf91906112d9565b610ea5565b005b6102e060048036038101906102db919061153b565b611067565b6040516102ed9190611823565b60405180910390f35b6102fe61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461038b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038290611907565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff167ef16cac75566114cbfffaff7857b8fff8050ff0820a182eac3b236f0b62ac2b60405160405180910390a4505050565b60008060008060005b85518110156105f757600086828151811061049957fe5b6020026020010151905060006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561054b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610542906118e7565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166337bca10f8b6040518263ffffffff1660e01b81526004016105869190611823565b60206040518083038186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d691906115a0565b9050858111156105e7578095508294505b5050508080600101915050610482565b5081819350935050509250929050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606080600060046000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b906118e7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342bde0b88787876040518463ffffffff1660e01b81526004016107619392919061183e565b60006040518083038186803b15801561077957600080fd5b505afa15801561078d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b691906114cf565b9250925050935093915050565b6107cb61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90611907565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff167f8d6c4851f1ff74632094f71fe39e4b0603cfd53a02524b0f56e077ec1a62464460405160405180910390a35050565b6108ec61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090611907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60608060006004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b02906118e7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16637b1c44328888886040518463ffffffff1660e01b8152600401610b489392919061183e565b60006040518083038186803b158015610b6057600080fd5b505afa158015610b74573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b9d91906114cf565b925092505094509492505050565b60016020528060005260406000206000915090505481565b610bcb61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90611907565b60405180910390fd5b806004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16827f05b94fa6d67a57a259499d28d3f8fd0eb8131cda46ea8c527ce24199839cb66460405160405180910390a35050565b610cfa61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90611907565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fcff55967603e193c0ecb65c41c4fa6f4032a9053d0fad30061ec89105cc7b5c260405160405180910390a35050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ead61109a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190611907565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa1906118c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b6000813590506110b181611b4a565b92915050565b6000815190506110c681611b4a565b92915050565b600082601f8301126110dd57600080fd5b81516110f06110eb8261197d565b611950565b9150818183526020840193506020810190508385602084028201111561111557600080fd5b60005b83811015611145578161112b88826110b7565b845260208401935060208301925050600181019050611118565b5050505092915050565b600082601f83011261116057600080fd5b813561117361116e826119a5565b611950565b9150818183526020840193506020810190508385602084028201111561119857600080fd5b60005b838110156111c857816111ae8882611246565b84526020840193506020830192505060018101905061119b565b5050505092915050565b600082601f8301126111e357600080fd5b81516111f66111f1826119cd565b611950565b9150818183526020840193506020810190508360005b8381101561123c5781518601611222888261125b565b84526020840193506020830192505060018101905061120c565b5050505092915050565b60008135905061125581611b61565b92915050565b600082601f83011261126c57600080fd5b815161127f61127a826119f5565b611950565b9150808252602083016020830185838301111561129b57600080fd5b6112a6838284611b06565b50505092915050565b6000813590506112be81611b78565b92915050565b6000815190506112d381611b78565b92915050565b6000602082840312156112eb57600080fd5b60006112f9848285016110a2565b91505092915050565b6000806040838503121561131557600080fd5b6000611323858286016110a2565b9250506020611334858286016110a2565b9150509250929050565b6000806040838503121561135157600080fd5b600061135f858286016110a2565b925050602083013567ffffffffffffffff81111561137c57600080fd5b6113888582860161114f565b9150509250929050565b600080604083850312156113a557600080fd5b60006113b3858286016110a2565b92505060206113c485828601611246565b9150509250929050565b6000806000606084860312156113e357600080fd5b60006113f1868287016110a2565b935050602061140286828701611246565b9250506040611413868287016110a2565b9150509250925092565b60008060006060848603121561143257600080fd5b6000611440868287016110a2565b9350506020611451868287016112af565b9250506040611462868287016110a2565b9150509250925092565b6000806000806080858703121561148257600080fd5b6000611490878288016110a2565b94505060206114a1878288016112af565b93505060406114b2878288016110a2565b92505060606114c387828801611246565b91505092959194509250565b600080604083850312156114e257600080fd5b600083015167ffffffffffffffff8111156114fc57600080fd5b611508858286016110cc565b925050602083015167ffffffffffffffff81111561152557600080fd5b611531858286016111d2565b9150509250929050565b60006020828403121561154d57600080fd5b600061155b84828501611246565b91505092915050565b6000806040838503121561157757600080fd5b600061158585828601611246565b9250506020611596858286016110a2565b9150509250929050565b6000602082840312156115b257600080fd5b60006115c0848285016112c4565b91505092915050565b60006115d583836115f5565b60208301905092915050565b60006115ed83836116f5565b905092915050565b6115fe81611ac0565b82525050565b61160d81611ac0565b82525050565b600061161e82611a41565b6116288185611a7c565b935061163383611a21565b8060005b8381101561166457815161164b88826115c9565b975061165683611a62565b925050600181019050611637565b5085935050505092915050565b600061167c82611a4c565b6116868185611a8d565b93508360208202850161169885611a31565b8060005b858110156116d457848403895281516116b585826115e1565b94506116c083611a6f565b925060208a0199505060018101905061169c565b50829750879550505050505092915050565b6116ef81611ad2565b82525050565b600061170082611a57565b61170a8185611a9e565b935061171a818560208601611b06565b61172381611b39565b840191505092915050565b600061173b602683611aaf565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117a1601483611aaf565b91507f4e4f5f4c454e44494e475f4c4f4749435f5345540000000000000000000000006000830152602082019050919050565b60006117e1602083611aaf565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b61181d81611afc565b82525050565b60006020820190506118386000830184611604565b92915050565b60006060820190506118536000830186611604565b6118606020830185611814565b61186d6040830184611604565b949350505050565b6000604082019050818103600083015261188f8185611613565b905081810360208301526118a38184611671565b90509392505050565b60006020820190506118c160008301846116e6565b92915050565b600060208201905081810360008301526118e08161172e565b9050919050565b6000602082019050818103600083015261190081611794565b9050919050565b60006020820190508181036000830152611920816117d4565b9050919050565b600060408201905061193c6000830185611814565b61194960208301846116e6565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561197357600080fd5b8060405250919050565b600067ffffffffffffffff82111561199457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156119bc57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156119e457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115611a0c57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611acb82611adc565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611b24578082015181840152602081019050611b09565b83811115611b33576000848401525b50505050565b6000601f19601f8301169050919050565b611b5381611ac0565b8114611b5e57600080fd5b50565b611b6a81611ad2565b8114611b7557600080fd5b50565b611b8181611afc565b8114611b8c57600080fd5b5056fea2646970667358221220b7a86cfec1379bd8a2b0a50cb3e529d843003231489e40a800a979138403cff764736f6c63430007010033
Deployed Bytecode Sourcemap
5359:5163:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7685:278;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9803:716;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5543:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9044:409;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6387:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4656:148;;;:::i;:::-;;4014:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8328:412;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5443:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7219:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6791:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5606:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4959:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5765:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7685:278;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7867:8:::1;7813:27;:40;7841:11;7813:40;;;;;;;;;;;;;;;:51;7854:9;7813:51;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;7946:8;7891:64;;7935:9;7922:11;7891:64;;;;;;;;;;;;7685:278:::0;;;:::o;9803:716::-;9895:11;9908:16;9937:15;9963:20;10000:9;9996:473;10019:10;:17;10015:1;:21;9996:473;;;10058:16;10077:10;10088:1;10077:13;;;;;;;;;;;;;;10058:32;;10105:26;10148:15;:25;10164:8;10148:25;;;;;;;;;;;;;;;;;;;;;10105:69;;10230:1;10197:35;;10205:12;10197:35;;;;10189:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10274:11;10288:12;:33;;;10322:11;10288:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10274:60;;10359:7;10353:3;:13;10349:109;;;10397:3;10387:13;;10434:8;10419:23;;10349:109;9996:473;;;10038:3;;;;;;;9996:473;;;;10489:7;10498:12;10481:30;;;;;;9803:716;;;;;:::o;5543:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;9044:409::-;9148:24;9174:19;9206:26;9249:15;:44;9265:17;:27;9283:8;9265:27;;;;;;;;;;;;;;;;9249:44;;;;;;;;;;;;;;;;;;;;;9206:88;;9346:1;9313:35;;9321:12;9313:35;;;;9305:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9393:12;:19;;;9413:8;9423:7;9432:12;9393:52;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9386:59;;;;;9044:409;;;;;;:::o;6387:201::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6514:9:::1;6484:17;:27;6502:8;6484:27;;;;;;;;;;;;;;;:39;;;;6570:9;6560:8;6539:41;;;;;;;;;;;;6387:201:::0;;:::o;4656:148::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4763:1:::1;4726:40;;4747:6;::::0;::::1;;;;;;;;4726:40;;;;;;;;;;;;4794:1;4777:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4656:148::o:0;4014:79::-;4052:7;4079:6;;;;;;;;;;;4072:13;;4014:79;:::o;8328:412::-;8452:24;8478:19;8510:26;8553:15;:26;8569:9;8553:26;;;;;;;;;;;;;;;;;;;;;8510:70;;8632:1;8599:35;;8607:12;8599:35;;;;8591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8679:12;:17;;;8697:11;8710:7;8719:12;8679:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8672:60;;;;;8328:412;;;;;;;:::o;5443:52::-;;;;;;;;;;;;;;;;;:::o;7219:189::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7341:6:::1;7312:15;:26;7328:9;7312:26;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;7393:6;7363:37;;7382:9;7363:37;;;;;;;;;;7219:189:::0;;:::o;6791:213::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6924:11:::1;6892:19;:29;6912:8;6892:29;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;6984:11;6951:45;;6974:8;6951:45;;;;;;;;;;;;6791:213:::0;;:::o;5606:82::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4959:244::-;4236:12;:10;:12::i;:::-;4226:22;;:6;;;;;;;;;;:22;;;4218:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5068:1:::1;5048:22;;:8;:22;;;;5040:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5158:8;5129:38;;5150:6;::::0;::::1;;;;;;;;5129:38;;;;;;;;;;;;5187:8;5178:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4959:244:::0;:::o;5765:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;2595:106::-;2648:15;2683:10;2676:17;;2595:106;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:134::-;;226:6;220:13;211:22;;238:33;265:5;238:33;:::i;:::-;205:71;;;;:::o;301:722::-;;429:3;422:4;414:6;410:17;406:27;396:2;;447:1;444;437:12;396:2;477:6;471:13;499:80;514:64;571:6;514:64;:::i;:::-;499:80;:::i;:::-;490:89;;596:5;621:6;614:5;607:21;651:4;643:6;639:17;629:27;;673:4;668:3;664:14;657:21;;726:6;773:3;765:4;757:6;753:17;748:3;744:27;741:36;738:2;;;790:1;787;780:12;738:2;815:1;800:217;825:6;822:1;819:13;800:217;;;883:3;905:48;949:3;937:10;905:48;:::i;:::-;900:3;893:61;977:4;972:3;968:14;961:21;;1005:4;1000:3;996:14;989:21;;857:160;847:1;844;840:9;835:14;;800:217;;;804:14;389:634;;;;;;;:::o;1049:707::-;;1166:3;1159:4;1151:6;1147:17;1143:27;1133:2;;1184:1;1181;1174:12;1133:2;1221:6;1208:20;1243:80;1258:64;1315:6;1258:64;:::i;:::-;1243:80;:::i;:::-;1234:89;;1340:5;1365:6;1358:5;1351:21;1395:4;1387:6;1383:17;1373:27;;1417:4;1412:3;1408:14;1401:21;;1470:6;1517:3;1509:4;1501:6;1497:17;1492:3;1488:27;1485:36;1482:2;;;1534:1;1531;1524:12;1482:2;1559:1;1544:206;1569:6;1566:1;1563:13;1544:206;;;1627:3;1649:37;1682:3;1670:10;1649:37;:::i;:::-;1644:3;1637:50;1710:4;1705:3;1701:14;1694:21;;1738:4;1733:3;1729:14;1722:21;;1601:149;1591:1;1588;1584:9;1579:14;;1544:206;;;1548:14;1126:630;;;;;;;:::o;1780:713::-;;1917:3;1910:4;1902:6;1898:17;1894:27;1884:2;;1935:1;1932;1925:12;1884:2;1965:6;1959:13;1987:89;2002:73;2068:6;2002:73;:::i;:::-;1987:89;:::i;:::-;1978:98;;2093:5;2118:6;2111:5;2104:21;2148:4;2140:6;2136:17;2126:27;;2170:4;2165:3;2161:14;2154:21;;2223:6;2256:1;2241:246;2266:6;2263:1;2260:13;2241:246;;;2342:3;2336:10;2328:6;2324:23;2366:57;2419:3;2407:10;2366:57;:::i;:::-;2361:3;2354:70;2447:4;2442:3;2438:14;2431:21;;2475:4;2470:3;2466:14;2459:21;;2298:189;2288:1;2285;2281:9;2276:14;;2241:246;;;2245:14;1877:616;;;;;;;:::o;2501:130::-;;2581:6;2568:20;2559:29;;2593:33;2620:5;2593:33;:::i;:::-;2553:78;;;;:::o;2639:442::-;;2751:3;2744:4;2736:6;2732:17;2728:27;2718:2;;2769:1;2766;2759:12;2718:2;2799:6;2793:13;2821:64;2836:48;2877:6;2836:48;:::i;:::-;2821:64;:::i;:::-;2812:73;;2905:6;2898:5;2891:21;2941:4;2933:6;2929:17;2974:4;2967:5;2963:16;3009:3;3000:6;2995:3;2991:16;2988:25;2985:2;;;3026:1;3023;3016:12;2985:2;3036:39;3068:6;3063:3;3058;3036:39;:::i;:::-;2711:370;;;;;;;:::o;3089:130::-;;3169:6;3156:20;3147:29;;3181:33;3208:5;3181:33;:::i;:::-;3141:78;;;;:::o;3226:134::-;;3310:6;3304:13;3295:22;;3322:33;3349:5;3322:33;:::i;:::-;3289:71;;;;:::o;3367:241::-;;3471:2;3459:9;3450:7;3446:23;3442:32;3439:2;;;3487:1;3484;3477:12;3439:2;3522:1;3539:53;3584:7;3575:6;3564:9;3560:22;3539:53;:::i;:::-;3529:63;;3501:97;3433:175;;;;:::o;3615:366::-;;;3736:2;3724:9;3715:7;3711:23;3707:32;3704:2;;;3752:1;3749;3742:12;3704:2;3787:1;3804:53;3849:7;3840:6;3829:9;3825:22;3804:53;:::i;:::-;3794:63;;3766:97;3894:2;3912:53;3957:7;3948:6;3937:9;3933:22;3912:53;:::i;:::-;3902:63;;3873:98;3698:283;;;;;:::o;3988:502::-;;;4134:2;4122:9;4113:7;4109:23;4105:32;4102:2;;;4150:1;4147;4140:12;4102:2;4185:1;4202:53;4247:7;4238:6;4227:9;4223:22;4202:53;:::i;:::-;4192:63;;4164:97;4320:2;4309:9;4305:18;4292:32;4344:18;4336:6;4333:30;4330:2;;;4376:1;4373;4366:12;4330:2;4396:78;4466:7;4457:6;4446:9;4442:22;4396:78;:::i;:::-;4386:88;;4271:209;4096:394;;;;;:::o;4497:366::-;;;4618:2;4606:9;4597:7;4593:23;4589:32;4586:2;;;4634:1;4631;4624:12;4586:2;4669:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4648:97;4776:2;4794:53;4839:7;4830:6;4819:9;4815:22;4794:53;:::i;:::-;4784:63;;4755:98;4580:283;;;;;:::o;4870:491::-;;;;5008:2;4996:9;4987:7;4983:23;4979:32;4976:2;;;5024:1;5021;5014:12;4976:2;5059:1;5076:53;5121:7;5112:6;5101:9;5097:22;5076:53;:::i;:::-;5066:63;;5038:97;5166:2;5184:53;5229:7;5220:6;5209:9;5205:22;5184:53;:::i;:::-;5174:63;;5145:98;5274:2;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5253:98;4970:391;;;;;:::o;5368:491::-;;;;5506:2;5494:9;5485:7;5481:23;5477:32;5474:2;;;5522:1;5519;5512:12;5474:2;5557:1;5574:53;5619:7;5610:6;5599:9;5595:22;5574:53;:::i;:::-;5564:63;;5536:97;5664:2;5682:53;5727:7;5718:6;5707:9;5703:22;5682:53;:::i;:::-;5672:63;;5643:98;5772:2;5790:53;5835:7;5826:6;5815:9;5811:22;5790:53;:::i;:::-;5780:63;;5751:98;5468:391;;;;;:::o;5866:617::-;;;;;6021:3;6009:9;6000:7;5996:23;5992:33;5989:2;;;6038:1;6035;6028:12;5989:2;6073:1;6090:53;6135:7;6126:6;6115:9;6111:22;6090:53;:::i;:::-;6080:63;;6052:97;6180:2;6198:53;6243:7;6234:6;6223:9;6219:22;6198:53;:::i;:::-;6188:63;;6159:98;6288:2;6306:53;6351:7;6342:6;6331:9;6327:22;6306:53;:::i;:::-;6296:63;;6267:98;6396:2;6414:53;6459:7;6450:6;6439:9;6435:22;6414:53;:::i;:::-;6404:63;;6375:98;5983:500;;;;;;;:::o;6490:675::-;;;6681:2;6669:9;6660:7;6656:23;6652:32;6649:2;;;6697:1;6694;6687:12;6649:2;6753:1;6742:9;6738:17;6732:24;6776:18;6768:6;6765:30;6762:2;;;6808:1;6805;6798:12;6762:2;6828:89;6909:7;6900:6;6889:9;6885:22;6828:89;:::i;:::-;6818:99;;6711:212;6975:2;6964:9;6960:18;6954:25;6999:18;6991:6;6988:30;6985:2;;;7031:1;7028;7021:12;6985:2;7051:98;7141:7;7132:6;7121:9;7117:22;7051:98;:::i;:::-;7041:108;;6933:222;6643:522;;;;;:::o;7172:241::-;;7276:2;7264:9;7255:7;7251:23;7247:32;7244:2;;;7292:1;7289;7282:12;7244:2;7327:1;7344:53;7389:7;7380:6;7369:9;7365:22;7344:53;:::i;:::-;7334:63;;7306:97;7238:175;;;;:::o;7420:366::-;;;7541:2;7529:9;7520:7;7516:23;7512:32;7509:2;;;7557:1;7554;7547:12;7509:2;7592:1;7609:53;7654:7;7645:6;7634:9;7630:22;7609:53;:::i;:::-;7599:63;;7571:97;7699:2;7717:53;7762:7;7753:6;7742:9;7738:22;7717:53;:::i;:::-;7707:63;;7678:98;7503:283;;;;;:::o;7793:263::-;;7908:2;7896:9;7887:7;7883:23;7879:32;7876:2;;;7924:1;7921;7914:12;7876:2;7959:1;7976:64;8032:7;8023:6;8012:9;8008:22;7976:64;:::i;:::-;7966:74;;7938:108;7870:186;;;;:::o;8064:173::-;;8151:46;8193:3;8185:6;8151:46;:::i;:::-;8226:4;8221:3;8217:14;8203:28;;8144:93;;;;:::o;8246:189::-;;8365:64;8425:3;8417:6;8365:64;:::i;:::-;8351:78;;8344:91;;;;:::o;8443:103::-;8516:24;8534:5;8516:24;:::i;:::-;8511:3;8504:37;8498:48;;:::o;8553:113::-;8636:24;8654:5;8636:24;:::i;:::-;8631:3;8624:37;8618:48;;:::o;8704:690::-;;8849:54;8897:5;8849:54;:::i;:::-;8916:86;8995:6;8990:3;8916:86;:::i;:::-;8909:93;;9023:56;9073:5;9023:56;:::i;:::-;9099:7;9127:1;9112:260;9137:6;9134:1;9131:13;9112:260;;;9204:6;9198:13;9225:63;9284:3;9269:13;9225:63;:::i;:::-;9218:70;;9305:60;9358:6;9305:60;:::i;:::-;9295:70;;9169:203;9159:1;9156;9152:9;9147:14;;9112:260;;;9116:14;9385:3;9378:10;;8828:566;;;;;;;:::o;9429:920::-;;9592:63;9649:5;9592:63;:::i;:::-;9668:95;9756:6;9751:3;9668:95;:::i;:::-;9661:102;;9786:3;9828:4;9820:6;9816:17;9811:3;9807:27;9855:65;9914:5;9855:65;:::i;:::-;9940:7;9968:1;9953:357;9978:6;9975:1;9972:13;9953:357;;;10040:9;10034:4;10030:20;10025:3;10018:33;10085:6;10079:13;10107:82;10184:4;10169:13;10107:82;:::i;:::-;10099:90;;10206:69;10268:6;10206:69;:::i;:::-;10196:79;;10298:4;10293:3;10289:14;10282:21;;10010:300;10000:1;9997;9993:9;9988:14;;9953:357;;;9957:14;10323:4;10316:11;;10340:3;10333:10;;9571:778;;;;;;;;;:::o;10357:113::-;10440:24;10458:5;10440:24;:::i;:::-;10435:3;10428:37;10422:48;;:::o;10477:323::-;;10577:38;10609:5;10577:38;:::i;:::-;10627:60;10680:6;10675:3;10627:60;:::i;:::-;10620:67;;10692:52;10737:6;10732:3;10725:4;10718:5;10714:16;10692:52;:::i;:::-;10765:29;10787:6;10765:29;:::i;:::-;10760:3;10756:39;10749:46;;10557:243;;;;;:::o;10808:375::-;;10968:67;11032:2;11027:3;10968:67;:::i;:::-;10961:74;;11068:34;11064:1;11059:3;11055:11;11048:55;11137:8;11132:2;11127:3;11123:12;11116:30;11174:2;11169:3;11165:12;11158:19;;10954:229;;;:::o;11192:320::-;;11352:67;11416:2;11411:3;11352:67;:::i;:::-;11345:74;;11452:22;11448:1;11443:3;11439:11;11432:43;11503:2;11498:3;11494:12;11487:19;;11338:174;;;:::o;11521:332::-;;11681:67;11745:2;11740:3;11681:67;:::i;:::-;11674:74;;11781:34;11777:1;11772:3;11768:11;11761:55;11844:2;11839:3;11835:12;11828:19;;11667:186;;;:::o;11861:113::-;11944:24;11962:5;11944:24;:::i;:::-;11939:3;11932:37;11926:48;;:::o;11981:222::-;;12108:2;12097:9;12093:18;12085:26;;12122:71;12190:1;12179:9;12175:17;12166:6;12122:71;:::i;:::-;12079:124;;;;:::o;12210:444::-;;12393:2;12382:9;12378:18;12370:26;;12407:71;12475:1;12464:9;12460:17;12451:6;12407:71;:::i;:::-;12489:72;12557:2;12546:9;12542:18;12533:6;12489:72;:::i;:::-;12572;12640:2;12629:9;12625:18;12616:6;12572:72;:::i;:::-;12364:290;;;;;;:::o;12661:665::-;;12934:2;12923:9;12919:18;12911:26;;12984:9;12978:4;12974:20;12970:1;12959:9;12955:17;12948:47;13009:108;13112:4;13103:6;13009:108;:::i;:::-;13001:116;;13165:9;13159:4;13155:20;13150:2;13139:9;13135:18;13128:48;13190:126;13311:4;13302:6;13190:126;:::i;:::-;13182:134;;12905:421;;;;;:::o;13333:222::-;;13460:2;13449:9;13445:18;13437:26;;13474:71;13542:1;13531:9;13527:17;13518:6;13474:71;:::i;:::-;13431:124;;;;:::o;13562:416::-;;13762:2;13751:9;13747:18;13739:26;;13812:9;13806:4;13802:20;13798:1;13787:9;13783:17;13776:47;13837:131;13963:4;13837:131;:::i;:::-;13829:139;;13733:245;;;:::o;13985:416::-;;14185:2;14174:9;14170:18;14162:26;;14235:9;14229:4;14225:20;14221:1;14210:9;14206:17;14199:47;14260:131;14386:4;14260:131;:::i;:::-;14252:139;;14156:245;;;:::o;14408:416::-;;14608:2;14597:9;14593:18;14585:26;;14658:9;14652:4;14648:20;14644:1;14633:9;14629:17;14622:47;14683:131;14809:4;14683:131;:::i;:::-;14675:139;;14579:245;;;:::o;14831:333::-;;14986:2;14975:9;14971:18;14963:26;;15000:71;15068:1;15057:9;15053:17;15044:6;15000:71;:::i;:::-;15082:72;15150:2;15139:9;15135:18;15126:6;15082:72;:::i;:::-;14957:207;;;;;:::o;15171:256::-;;15233:2;15227:9;15217:19;;15271:4;15263:6;15259:17;15370:6;15358:10;15355:22;15334:18;15322:10;15319:34;15316:62;15313:2;;;15391:1;15388;15381:12;15313:2;15411:10;15407:2;15400:22;15211:216;;;;:::o;15434:304::-;;15593:18;15585:6;15582:30;15579:2;;;15625:1;15622;15615:12;15579:2;15660:4;15652:6;15648:17;15640:25;;15723:4;15717;15713:15;15705:23;;15516:222;;;:::o;15745:304::-;;15904:18;15896:6;15893:30;15890:2;;;15936:1;15933;15926:12;15890:2;15971:4;15963:6;15959:17;15951:25;;16034:4;16028;16024:15;16016:23;;15827:222;;;:::o;16056:313::-;;16224:18;16216:6;16213:30;16210:2;;;16256:1;16253;16246:12;16210:2;16291:4;16283:6;16279:17;16271:25;;16354:4;16348;16344:15;16336:23;;16147:222;;;:::o;16376:321::-;;16519:18;16511:6;16508:30;16505:2;;;16551:1;16548;16541:12;16505:2;16618:4;16614:9;16607:4;16599:6;16595:17;16591:33;16583:41;;16682:4;16676;16672:15;16664:23;;16442:255;;;:::o;16704:151::-;;16790:3;16782:11;;16828:4;16823:3;16819:14;16811:22;;16776:79;;;:::o;16862:160::-;;16957:3;16949:11;;16995:4;16990:3;16986:14;16978:22;;16943:79;;;:::o;17029:137::-;;17138:5;17132:12;17122:22;;17103:63;;;:::o;17173:146::-;;17291:5;17285:12;17275:22;;17256:63;;;:::o;17326:121::-;;17419:5;17413:12;17403:22;;17384:63;;;:::o;17454:108::-;;17552:4;17547:3;17543:14;17535:22;;17529:33;;;:::o;17569:117::-;;17676:4;17671:3;17667:14;17659:22;;17653:33;;;:::o;17694:178::-;;17824:6;17819:3;17812:19;17861:4;17856:3;17852:14;17837:29;;17805:67;;;;:::o;17881:187::-;;18020:6;18015:3;18008:19;18057:4;18052:3;18048:14;18033:29;;18001:67;;;;:::o;18077:152::-;;18181:6;18176:3;18169:19;18218:4;18213:3;18209:14;18194:29;;18162:67;;;;:::o;18238:163::-;;18353:6;18348:3;18341:19;18390:4;18385:3;18381:14;18366:29;;18334:67;;;;:::o;18409:91::-;;18471:24;18489:5;18471:24;:::i;:::-;18460:35;;18454:46;;;:::o;18507:72::-;;18569:5;18558:16;;18552:27;;;:::o;18586:121::-;;18659:42;18652:5;18648:54;18637:65;;18631:76;;;:::o;18714:72::-;;18776:5;18765:16;;18759:27;;;:::o;18794:268::-;18859:1;18866:101;18880:6;18877:1;18874:13;18866:101;;;18956:1;18951:3;18947:11;18941:18;18937:1;18932:3;18928:11;18921:39;18902:2;18899:1;18895:10;18890:15;;18866:101;;;18982:6;18979:1;18976:13;18973:2;;;19047:1;19038:6;19033:3;19029:16;19022:27;18973:2;18843:219;;;;:::o;19070:97::-;;19158:2;19154:7;19149:2;19142:5;19138:14;19134:28;19124:38;;19118:49;;;:::o;19175:117::-;19244:24;19262:5;19244:24;:::i;:::-;19237:5;19234:35;19224:2;;19283:1;19280;19273:12;19224:2;19218:74;:::o;19299:117::-;19368:24;19386:5;19368:24;:::i;:::-;19361:5;19358:35;19348:2;;19407:1;19404;19397:12;19348:2;19342:74;:::o;19423:117::-;19492:24;19510:5;19492:24;:::i;:::-;19485:5;19482:35;19472:2;;19531:1;19528;19521:12;19472:2;19466:74;:::o
Swarm Source
ipfs://b7a86cfec1379bd8a2b0a50cb3e529d843003231489e40a800a979138403cff7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.