Overview
ETH Balance
0.0004375 ETH
Eth Value
$1.52 (@ $3,474.51/ETH)More Info
Private Name Tags
ContractCreator
Latest 14 from a total of 14 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Share | 18038969 | 481 days ago | IN | 0 ETH | 0.00081158 | ||||
Sell Shares | 18037888 | 481 days ago | IN | 0 ETH | 0.00147322 | ||||
Buy Shares | 18037789 | 481 days ago | IN | 0.000275 ETH | 0.00163386 | ||||
Claim Share | 18037775 | 481 days ago | IN | 0 ETH | 0.00113587 | ||||
Buy Shares | 18035170 | 482 days ago | IN | 0.00006875 ETH | 0.00333177 | ||||
Buy Shares | 18034947 | 482 days ago | IN | 0.00006875 ETH | 0.00295264 | ||||
Buy Shares | 18034933 | 482 days ago | IN | 0.00006875 ETH | 0.00164664 | ||||
Buy Shares | 18034922 | 482 days ago | IN | 0.00006875 ETH | 0.00275774 | ||||
Sell Shares | 18034917 | 482 days ago | IN | 0 ETH | 0.00134593 | ||||
Buy Shares | 18034910 | 482 days ago | IN | 0.00006875 ETH | 0.0030926 | ||||
Buy Shares | 18034903 | 482 days ago | IN | 0.00006875 ETH | 0.00342756 | ||||
Buy Shares | 18034898 | 482 days ago | IN | 0.00006875 ETH | 0.00278451 | ||||
Buy Shares | 18030481 | 482 days ago | IN | 0.00006875 ETH | 0.00209008 | ||||
Set Fee Destinat... | 18030178 | 482 days ago | IN | 0 ETH | 0.00088204 |
Latest 24 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
18037888 | 481 days ago | 0.0000125 ETH | ||||
18037888 | 481 days ago | 0.0000125 ETH | ||||
18037888 | 481 days ago | 0.000225 ETH | ||||
18037789 | 481 days ago | 0.0000125 ETH | ||||
18037789 | 481 days ago | 0.0000125 ETH | ||||
18035170 | 482 days ago | 0.00000312 ETH | ||||
18035170 | 482 days ago | 0.00000312 ETH | ||||
18034947 | 482 days ago | 0.00000312 ETH | ||||
18034947 | 482 days ago | 0.00000312 ETH | ||||
18034933 | 482 days ago | 0.00000312 ETH | ||||
18034933 | 482 days ago | 0.00000312 ETH | ||||
18034922 | 482 days ago | 0.00000312 ETH | ||||
18034922 | 482 days ago | 0.00000312 ETH | ||||
18034917 | 482 days ago | 0.00000312 ETH | ||||
18034917 | 482 days ago | 0.00000312 ETH | ||||
18034917 | 482 days ago | 0.00005625 ETH | ||||
18034910 | 482 days ago | 0.00000312 ETH | ||||
18034910 | 482 days ago | 0.00000312 ETH | ||||
18034903 | 482 days ago | 0.00000312 ETH | ||||
18034903 | 482 days ago | 0.00000312 ETH | ||||
18034898 | 482 days ago | 0.00000312 ETH | ||||
18034898 | 482 days ago | 0.00000312 ETH | ||||
18030481 | 482 days ago | 0.00000312 ETH | ||||
18030481 | 482 days ago | 0.00000312 ETH |
Loading...
Loading
Contract Name:
FriendShares_io
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-31 */ /** *Submitted for verification at basescan.org on 2023-08-31 */ // File: contracts/Context.sol // 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: contracts/Ownable.sol // 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: contracts/FriendtechShares.sol pragma solidity >=0.8.2 <0.9.0; // TODO: Events, final pricing model, contract FriendShares_io is Ownable { address public protocolFeeDestination; uint256 public protocolFeePercent = 50000000000000000; uint256 public subjectFeePercent = 50000000000000000; mapping(address => uint256) public subjectFeePercentMapping; mapping(address => uint256) public protocolFeePercentMapping; uint256 public maxFeePercent = 100000000000000000; event Trade(address trader, address subject, bool isBuy, uint256 shareAmount, uint256 ethAmount, uint256 protocolEthAmount, uint256 subjectEthAmount, uint256 supply); // SharesSubject => (Holder => Balance) mapping(address => mapping(address => uint256)) public sharesBalance; // SharesSubject => Supply mapping(address => uint256) public sharesSupply; function setFeeDestination(address _feeDestination) public onlyOwner { protocolFeeDestination = _feeDestination; } function setProtocolFeePercent(uint256 _feePercent) public onlyOwner { protocolFeePercent = _feePercent; } function setSubjectFeePercent(uint256 _feePercent) public onlyOwner { subjectFeePercent = _feePercent; } function getPrice(uint256 supply, uint256 amount) public pure returns (uint256) { uint256 sum1 = supply == 0 ? 0 : (supply - 1) * supply * (2 * (supply - 1) + 1) / 6; uint256 sum2 = (supply == 0 && amount == 1) ? 0 : (supply - 1 + amount) * (supply + amount) * (2 * (supply - 1 + amount) + 1) / 6; return (sum2 - sum1) * 1 ether / 16000; } function getBuyPrice(address sharesSubject, uint256 amount) public view returns (uint256) { uint256 adjustedSupply = (sharesSupply[sharesSubject] == 0) ? 1 : sharesSupply[sharesSubject]; return getPrice(adjustedSupply, amount); } function getSellPrice(address sharesSubject, uint256 amount) public view returns (uint256) { return getPrice(sharesSupply[sharesSubject] - amount, amount); } function getBuyPriceAfterFee(address sharesSubject, uint256 amount) public view returns (uint256) { uint256 price = getBuyPrice(sharesSubject, amount); uint256 protocolFeeCalc = protocolFeePercentMapping[sharesSubject] == 0 ? protocolFeePercent : protocolFeePercentMapping[sharesSubject]; uint256 protocolFee = price * protocolFeeCalc / 1 ether; uint256 subjectFeeCalc = subjectFeePercentMapping[sharesSubject] == 0 ? subjectFeePercent : subjectFeePercentMapping[sharesSubject]; uint256 subjectFee = price * subjectFeeCalc / 1 ether; return price + protocolFee + subjectFee; } function getSellPriceAfterFee(address sharesSubject, uint256 amount) public view returns (uint256) { uint256 price = getSellPrice(sharesSubject, amount); uint256 protocolFeeCalc = protocolFeePercentMapping[sharesSubject] == 0 ? protocolFeePercent : protocolFeePercentMapping[sharesSubject]; uint256 protocolFee = price * protocolFeeCalc / 1 ether; uint256 subjectFeeCalc = subjectFeePercentMapping[sharesSubject] == 0 ? subjectFeePercent : subjectFeePercentMapping[sharesSubject]; uint256 subjectFee = price * subjectFeeCalc / 1 ether; return price - protocolFee - subjectFee; } function buyShares(address sharesSubject, uint256 amount) public payable { uint256 supply = sharesSupply[sharesSubject]; if (supply == 0) { // Reserve the first share for the sharesSubject sharesBalance[sharesSubject][sharesSubject] = 1; sharesSupply[sharesSubject] = 1; supply = 1; } uint256 price = getBuyPrice(sharesSubject, amount); uint256 protocolFeeCalc = protocolFeePercentMapping[sharesSubject] == 0 ? protocolFeePercent : protocolFeePercentMapping[sharesSubject]; uint256 protocolFee = price * protocolFeeCalc / 1 ether; uint256 subjectFeeCalc = subjectFeePercentMapping[sharesSubject] == 0 ? subjectFeePercent : subjectFeePercentMapping[sharesSubject]; uint256 subjectFee = price * subjectFeeCalc / 1 ether; require(msg.value >= price + protocolFee + subjectFee, "Insufficient payment"); sharesBalance[sharesSubject][msg.sender] += amount; sharesSupply[sharesSubject] += amount; emit Trade(msg.sender, sharesSubject, true, amount, price, protocolFee, subjectFee, supply + amount); (bool success1, ) = protocolFeeDestination.call{value: protocolFee}(""); (bool success2, ) = sharesSubject.call{value: subjectFee}(""); require(success1 && success2, "Unable to send funds"); } function sellShares(address sharesSubject, uint256 amount) public payable { uint256 supply = sharesSupply[sharesSubject]; require(supply > amount, "Cannot sell the last share"); uint256 price = getPrice(supply - amount, amount); uint256 protocolFeeCalc = protocolFeePercentMapping[sharesSubject] == 0 ? protocolFeePercent : protocolFeePercentMapping[sharesSubject]; uint256 protocolFee = price * protocolFeeCalc / 1 ether; uint256 subjectFeeCalc = subjectFeePercentMapping[sharesSubject] == 0 ? subjectFeePercent : subjectFeePercentMapping[sharesSubject]; uint256 subjectFee = price * subjectFeeCalc / 1 ether; require(sharesBalance[sharesSubject][msg.sender] >= amount, "Insufficient shares"); sharesBalance[sharesSubject][msg.sender] = sharesBalance[sharesSubject][msg.sender] - amount; sharesSupply[sharesSubject] = supply - amount; emit Trade(msg.sender, sharesSubject, false, amount, price, protocolFee, subjectFee, supply - amount); (bool success1, ) = msg.sender.call{value: price - protocolFee - subjectFee}(""); (bool success2, ) = protocolFeeDestination.call{value: protocolFee}(""); (bool success3, ) = sharesSubject.call{value: subjectFee}(""); require(success1 && success2 && success3, "Unable to send funds"); } function setFeePercentForSubject(uint256 _feePercent) public { require(_feePercent <= maxFeePercent, "Fee percent cannot be greater than the maximum allowed"); subjectFeePercentMapping[msg.sender] = _feePercent; } function setcustomprotocolFeePercent(uint256 _feePercent, address sharesSubject) public onlyOwner { require(_feePercent <= maxFeePercent, "Fee percent cannot be greater than the maximum allowed"); protocolFeePercentMapping[sharesSubject] = _feePercent; } function setMaxFeePercent(uint256 _newMaxFeePercent) public onlyOwner { maxFeePercent = _newMaxFeePercent; } function claimShare() public { uint256 supply = sharesSupply[msg.sender]; require(supply == 0, "First share already claimed"); sharesBalance[msg.sender][msg.sender] = 1; sharesSupply[msg.sender] = 1; supply = 1; emit Trade(msg.sender, msg.sender, true, 1, 0, 0, 0, supply); } }
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":false,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"address","name":"subject","type":"address"},{"indexed":false,"internalType":"bool","name":"isBuy","type":"bool"},{"indexed":false,"internalType":"uint256","name":"shareAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"protocolEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"subjectEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"Trade","type":"event"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyShares","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeeDestination","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protocolFeePercentMapping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellShares","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeDestination","type":"address"}],"name":"setFeeDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setFeePercentForSubject","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxFeePercent","type":"uint256"}],"name":"setMaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setProtocolFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setSubjectFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"},{"internalType":"address","name":"sharesSubject","type":"address"}],"name":"setcustomprotocolFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"sharesBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sharesSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"subjectFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"subjectFeePercentMapping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405266b1a2bc2ec5000060025566b1a2bc2ec5000060035567016345785d8a000060065534801561003257600080fd5b5061003c33610041565b610091565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611470806100a06000396000f3fe6080604052600436106101665760003560e01c8063715018a6116100d1578063b51d05341161008a578063f2fde38b11610064578063f2fde38b1461041a578063f518fbdd1461043a578063f9931be01461045a578063fbe532341461048757600080fd5b8063b51d0534146103db578063d6e6eb9f146103ee578063d830a05b1461040457600080fd5b8063715018a61461031b5780637219839d14610330578063787305aa1461035d5780638da5cb5b1461037d5780639ae717811461039b578063a4983421146103bb57600080fd5b80634ce7957c116101235780634ce7957c1461025957806351e22ec1146102915780635a8a764e146102b35780635cf4ee91146102d3578063666da64f146102f35780636945b1231461030857600080fd5b8063020235ff1461016b5780630f026f6d146101b65780632267a89c146101d657806324dc441d146101f657806333d18bcd1461020c5780634635256e14610239575b600080fd5b34801561017757600080fd5b506101a3610186366004611255565b600760209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b3480156101c257600080fd5b506101a36101d1366004611288565b6104a7565b3480156101e257600080fd5b506101a36101f1366004611288565b6105a3565b34801561020257600080fd5b506101a360035481565b34801561021857600080fd5b506101a36102273660046112b2565b60046020526000908152604090205481565b34801561024557600080fd5b506101a3610254366004611288565b610691565b34801561026557600080fd5b50600154610279906001600160a01b031681565b6040516001600160a01b0390911681526020016101ad565b34801561029d57600080fd5b506102b16102ac3660046112cd565b6106e6565b005b3480156102bf57600080fd5b506102b16102ce3660046112cd565b610723565b3480156102df57600080fd5b506101a36102ee3660046112e6565b610730565b3480156102ff57600080fd5b506102b161084c565b6102b1610316366004611288565b610919565b34801561032757600080fd5b506102b1610c5a565b34801561033c57600080fd5b506101a361034b3660046112b2565b60056020526000908152604090205481565b34801561036957600080fd5b506102b1610378366004611308565b610c6e565b34801561038957600080fd5b506000546001600160a01b0316610279565b3480156103a757600080fd5b506101a36103b6366004611288565b610cb2565b3480156103c757600080fd5b506102b16103d63660046112cd565b610ce7565b6102b16103e9366004611288565b610cf4565b3480156103fa57600080fd5b506101a360025481565b34801561041057600080fd5b506101a360065481565b34801561042657600080fd5b506102b16104353660046112b2565b6110df565b34801561044657600080fd5b506102b16104553660046112cd565b611158565b34801561046657600080fd5b506101a36104753660046112b2565b60086020526000908152604090205481565b34801561049357600080fd5b506102b16104a23660046112b2565b611165565b6000806104b48484610691565b6001600160a01b03851660009081526005602052604081205491925090156104f4576001600160a01b0385166000908152600560205260409020546104f8565b6002545b90506000670de0b6b3a764000061050f8385611341565b6105199190611358565b6001600160a01b0387166000908152600460205260408120549192509015610559576001600160a01b03871660009081526004602052604090205461055d565b6003545b90506000670de0b6b3a76400006105748387611341565b61057e9190611358565b90508061058b848761137a565b610595919061137a565b955050505050505b92915050565b6000806105b08484610cb2565b6001600160a01b03851660009081526005602052604081205491925090156105f0576001600160a01b0385166000908152600560205260409020546105f4565b6002545b90506000670de0b6b3a764000061060b8385611341565b6106159190611358565b6001600160a01b0387166000908152600460205260408120549192509015610655576001600160a01b038716600090815260046020526040902054610659565b6003545b90506000670de0b6b3a76400006106708387611341565b61067a9190611358565b905080610687848761138d565b610595919061138d565b6001600160a01b0382166000908152600860205260408120548190156106cf576001600160a01b0384166000908152600860205260409020546106d2565b60015b90506106de8184610730565b949350505050565b6006548111156107115760405162461bcd60e51b8152600401610708906113a0565b60405180910390fd5b33600090815260046020526040902055565b61072b61118f565b600355565b600080831561078b57600661074660018661138d565b610751906002611341565b61075c90600161137a565b8561076860018261138d565b6107729190611341565b61077c9190611341565b6107869190611358565b61078e565b60005b90506000841580156107a05750836001145b610815576006846107b260018861138d565b6107bc919061137a565b6107c7906002611341565b6107d290600161137a565b6107dc868861137a565b866107e860018a61138d565b6107f2919061137a565b6107fc9190611341565b6108069190611341565b6108109190611358565b610818565b60005b9050613e80610827838361138d565b61083990670de0b6b3a7640000611341565b6108439190611358565b95945050505050565b3360009081526008602052604090205480156108aa5760405162461bcd60e51b815260206004820152601b60248201527f466972737420736861726520616c726561647920636c61696d656400000000006044820152606401610708565b50336000818152600760209081526040808320825280832060019081905560089092528083208290555190927f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c39261090e92829186918291908190819084906113f6565b60405180910390a150565b6001600160a01b0382166000908152600860205260408120549081900361096d57506001600160a01b0382166000908152600760209081526040808320825280832060019081905560089092529091208190555b60006109798484610691565b6001600160a01b03851660009081526005602052604081205491925090156109b9576001600160a01b0385166000908152600560205260409020546109bd565b6002545b90506000670de0b6b3a76400006109d48385611341565b6109de9190611358565b6001600160a01b0387166000908152600460205260408120549192509015610a1e576001600160a01b038716600090815260046020526040902054610a22565b6003545b90506000670de0b6b3a7640000610a398387611341565b610a439190611358565b905080610a50848761137a565b610a5a919061137a565b341015610aa05760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610708565b6001600160a01b038816600090815260076020908152604080832033845290915281208054899290610ad390849061137a565b90915550506001600160a01b03881660009081526008602052604081208054899290610b0090849061137a565b909155507f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c39050338960018a898887610b39848f61137a565b604051610b4d9897969594939291906113f6565b60405180910390a16001546040516000916001600160a01b03169085908381818185875af1925050503d8060008114610ba2576040519150601f19603f3d011682016040523d82523d6000602084013e610ba7565b606091505b505090506000896001600160a01b03168360405160006040518083038185875af1925050503d8060008114610bf8576040519150601f19603f3d011682016040523d82523d6000602084013e610bfd565b606091505b50509050818015610c0b5750805b610c4e5760405162461bcd60e51b8152602060048201526014602482015273556e61626c6520746f2073656e642066756e647360601b6044820152606401610708565b50505050505050505050565b610c6261118f565b610c6c60006111e9565b565b610c7661118f565b600654821115610c985760405162461bcd60e51b8152600401610708906113a0565b6001600160a01b0316600090815260056020526040902055565b6001600160a01b038216600090815260086020526040812054610ce090610cda90849061138d565b83610730565b9392505050565b610cef61118f565b600255565b6001600160a01b038216600090815260086020526040902054818111610d5c5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073656c6c20746865206c6173742073686172650000000000006044820152606401610708565b6000610d71610d6b848461138d565b84610730565b6001600160a01b0385166000908152600560205260408120549192509015610db1576001600160a01b038516600090815260056020526040902054610db5565b6002545b90506000670de0b6b3a7640000610dcc8385611341565b610dd69190611358565b6001600160a01b0387166000908152600460205260408120549192509015610e16576001600160a01b038716600090815260046020526040902054610e1a565b6003545b90506000670de0b6b3a7640000610e318387611341565b610e3b9190611358565b6001600160a01b0389166000908152600760209081526040808320338452909152902054909150871115610ea75760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742073686172657360681b6044820152606401610708565b6001600160a01b0388166000908152600760209081526040808320338452909152902054610ed690889061138d565b6001600160a01b0389166000908152600760209081526040808320338452909152902055610f04878761138d565b6001600160a01b0389166000908152600860205260408120919091557f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c39033908a908a898887610f54848f61138d565b604051610f689897969594939291906113f6565b60405180910390a160003382610f7e868961138d565b610f88919061138d565b604051600081818185875af1925050503d8060008114610fc4576040519150601f19603f3d011682016040523d82523d6000602084013e610fc9565b606091505b50506001546040519192506000916001600160a01b039091169086908381818185875af1925050503d806000811461101d576040519150601f19603f3d011682016040523d82523d6000602084013e611022565b606091505b5050905060008a6001600160a01b03168460405160006040518083038185875af1925050503d8060008114611073576040519150601f19603f3d011682016040523d82523d6000602084013e611078565b606091505b505090508280156110865750815b801561108f5750805b6110d25760405162461bcd60e51b8152602060048201526014602482015273556e61626c6520746f2073656e642066756e647360601b6044820152606401610708565b5050505050505050505050565b6110e761118f565b6001600160a01b03811661114c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610708565b611155816111e9565b50565b61116061118f565b600655565b61116d61118f565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c6c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610708565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461125057600080fd5b919050565b6000806040838503121561126857600080fd5b61127183611239565b915061127f60208401611239565b90509250929050565b6000806040838503121561129b57600080fd5b6112a483611239565b946020939093013593505050565b6000602082840312156112c457600080fd5b610ce082611239565b6000602082840312156112df57600080fd5b5035919050565b600080604083850312156112f957600080fd5b50508035926020909101359150565b6000806040838503121561131b57600080fd5b8235915061127f60208401611239565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761059d5761059d61132b565b60008261137557634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561059d5761059d61132b565b8181038181111561059d5761059d61132b565b60208082526036908201527f4665652070657263656e742063616e6e6f742062652067726561746572207468604082015275185b881d1a19481b585e1a5b5d5b48185b1b1bddd95960521b606082015260800190565b6001600160a01b03988916815296909716602087015293151560408601526060850192909252608084015260a083015260c082015260e0810191909152610100019056fea2646970667358221220f130a5b7c2b8e2a5f60b503bc9d9fc6e0b7c35adcfcb68107ea01b535a8188a064736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101665760003560e01c8063715018a6116100d1578063b51d05341161008a578063f2fde38b11610064578063f2fde38b1461041a578063f518fbdd1461043a578063f9931be01461045a578063fbe532341461048757600080fd5b8063b51d0534146103db578063d6e6eb9f146103ee578063d830a05b1461040457600080fd5b8063715018a61461031b5780637219839d14610330578063787305aa1461035d5780638da5cb5b1461037d5780639ae717811461039b578063a4983421146103bb57600080fd5b80634ce7957c116101235780634ce7957c1461025957806351e22ec1146102915780635a8a764e146102b35780635cf4ee91146102d3578063666da64f146102f35780636945b1231461030857600080fd5b8063020235ff1461016b5780630f026f6d146101b65780632267a89c146101d657806324dc441d146101f657806333d18bcd1461020c5780634635256e14610239575b600080fd5b34801561017757600080fd5b506101a3610186366004611255565b600760209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b3480156101c257600080fd5b506101a36101d1366004611288565b6104a7565b3480156101e257600080fd5b506101a36101f1366004611288565b6105a3565b34801561020257600080fd5b506101a360035481565b34801561021857600080fd5b506101a36102273660046112b2565b60046020526000908152604090205481565b34801561024557600080fd5b506101a3610254366004611288565b610691565b34801561026557600080fd5b50600154610279906001600160a01b031681565b6040516001600160a01b0390911681526020016101ad565b34801561029d57600080fd5b506102b16102ac3660046112cd565b6106e6565b005b3480156102bf57600080fd5b506102b16102ce3660046112cd565b610723565b3480156102df57600080fd5b506101a36102ee3660046112e6565b610730565b3480156102ff57600080fd5b506102b161084c565b6102b1610316366004611288565b610919565b34801561032757600080fd5b506102b1610c5a565b34801561033c57600080fd5b506101a361034b3660046112b2565b60056020526000908152604090205481565b34801561036957600080fd5b506102b1610378366004611308565b610c6e565b34801561038957600080fd5b506000546001600160a01b0316610279565b3480156103a757600080fd5b506101a36103b6366004611288565b610cb2565b3480156103c757600080fd5b506102b16103d63660046112cd565b610ce7565b6102b16103e9366004611288565b610cf4565b3480156103fa57600080fd5b506101a360025481565b34801561041057600080fd5b506101a360065481565b34801561042657600080fd5b506102b16104353660046112b2565b6110df565b34801561044657600080fd5b506102b16104553660046112cd565b611158565b34801561046657600080fd5b506101a36104753660046112b2565b60086020526000908152604090205481565b34801561049357600080fd5b506102b16104a23660046112b2565b611165565b6000806104b48484610691565b6001600160a01b03851660009081526005602052604081205491925090156104f4576001600160a01b0385166000908152600560205260409020546104f8565b6002545b90506000670de0b6b3a764000061050f8385611341565b6105199190611358565b6001600160a01b0387166000908152600460205260408120549192509015610559576001600160a01b03871660009081526004602052604090205461055d565b6003545b90506000670de0b6b3a76400006105748387611341565b61057e9190611358565b90508061058b848761137a565b610595919061137a565b955050505050505b92915050565b6000806105b08484610cb2565b6001600160a01b03851660009081526005602052604081205491925090156105f0576001600160a01b0385166000908152600560205260409020546105f4565b6002545b90506000670de0b6b3a764000061060b8385611341565b6106159190611358565b6001600160a01b0387166000908152600460205260408120549192509015610655576001600160a01b038716600090815260046020526040902054610659565b6003545b90506000670de0b6b3a76400006106708387611341565b61067a9190611358565b905080610687848761138d565b610595919061138d565b6001600160a01b0382166000908152600860205260408120548190156106cf576001600160a01b0384166000908152600860205260409020546106d2565b60015b90506106de8184610730565b949350505050565b6006548111156107115760405162461bcd60e51b8152600401610708906113a0565b60405180910390fd5b33600090815260046020526040902055565b61072b61118f565b600355565b600080831561078b57600661074660018661138d565b610751906002611341565b61075c90600161137a565b8561076860018261138d565b6107729190611341565b61077c9190611341565b6107869190611358565b61078e565b60005b90506000841580156107a05750836001145b610815576006846107b260018861138d565b6107bc919061137a565b6107c7906002611341565b6107d290600161137a565b6107dc868861137a565b866107e860018a61138d565b6107f2919061137a565b6107fc9190611341565b6108069190611341565b6108109190611358565b610818565b60005b9050613e80610827838361138d565b61083990670de0b6b3a7640000611341565b6108439190611358565b95945050505050565b3360009081526008602052604090205480156108aa5760405162461bcd60e51b815260206004820152601b60248201527f466972737420736861726520616c726561647920636c61696d656400000000006044820152606401610708565b50336000818152600760209081526040808320825280832060019081905560089092528083208290555190927f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c39261090e92829186918291908190819084906113f6565b60405180910390a150565b6001600160a01b0382166000908152600860205260408120549081900361096d57506001600160a01b0382166000908152600760209081526040808320825280832060019081905560089092529091208190555b60006109798484610691565b6001600160a01b03851660009081526005602052604081205491925090156109b9576001600160a01b0385166000908152600560205260409020546109bd565b6002545b90506000670de0b6b3a76400006109d48385611341565b6109de9190611358565b6001600160a01b0387166000908152600460205260408120549192509015610a1e576001600160a01b038716600090815260046020526040902054610a22565b6003545b90506000670de0b6b3a7640000610a398387611341565b610a439190611358565b905080610a50848761137a565b610a5a919061137a565b341015610aa05760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610708565b6001600160a01b038816600090815260076020908152604080832033845290915281208054899290610ad390849061137a565b90915550506001600160a01b03881660009081526008602052604081208054899290610b0090849061137a565b909155507f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c39050338960018a898887610b39848f61137a565b604051610b4d9897969594939291906113f6565b60405180910390a16001546040516000916001600160a01b03169085908381818185875af1925050503d8060008114610ba2576040519150601f19603f3d011682016040523d82523d6000602084013e610ba7565b606091505b505090506000896001600160a01b03168360405160006040518083038185875af1925050503d8060008114610bf8576040519150601f19603f3d011682016040523d82523d6000602084013e610bfd565b606091505b50509050818015610c0b5750805b610c4e5760405162461bcd60e51b8152602060048201526014602482015273556e61626c6520746f2073656e642066756e647360601b6044820152606401610708565b50505050505050505050565b610c6261118f565b610c6c60006111e9565b565b610c7661118f565b600654821115610c985760405162461bcd60e51b8152600401610708906113a0565b6001600160a01b0316600090815260056020526040902055565b6001600160a01b038216600090815260086020526040812054610ce090610cda90849061138d565b83610730565b9392505050565b610cef61118f565b600255565b6001600160a01b038216600090815260086020526040902054818111610d5c5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f742073656c6c20746865206c6173742073686172650000000000006044820152606401610708565b6000610d71610d6b848461138d565b84610730565b6001600160a01b0385166000908152600560205260408120549192509015610db1576001600160a01b038516600090815260056020526040902054610db5565b6002545b90506000670de0b6b3a7640000610dcc8385611341565b610dd69190611358565b6001600160a01b0387166000908152600460205260408120549192509015610e16576001600160a01b038716600090815260046020526040902054610e1a565b6003545b90506000670de0b6b3a7640000610e318387611341565b610e3b9190611358565b6001600160a01b0389166000908152600760209081526040808320338452909152902054909150871115610ea75760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742073686172657360681b6044820152606401610708565b6001600160a01b0388166000908152600760209081526040808320338452909152902054610ed690889061138d565b6001600160a01b0389166000908152600760209081526040808320338452909152902055610f04878761138d565b6001600160a01b0389166000908152600860205260408120919091557f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c39033908a908a898887610f54848f61138d565b604051610f689897969594939291906113f6565b60405180910390a160003382610f7e868961138d565b610f88919061138d565b604051600081818185875af1925050503d8060008114610fc4576040519150601f19603f3d011682016040523d82523d6000602084013e610fc9565b606091505b50506001546040519192506000916001600160a01b039091169086908381818185875af1925050503d806000811461101d576040519150601f19603f3d011682016040523d82523d6000602084013e611022565b606091505b5050905060008a6001600160a01b03168460405160006040518083038185875af1925050503d8060008114611073576040519150601f19603f3d011682016040523d82523d6000602084013e611078565b606091505b505090508280156110865750815b801561108f5750805b6110d25760405162461bcd60e51b8152602060048201526014602482015273556e61626c6520746f2073656e642066756e647360601b6044820152606401610708565b5050505050505050505050565b6110e761118f565b6001600160a01b03811661114c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610708565b611155816111e9565b50565b61116061118f565b600655565b61116d61118f565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c6c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610708565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461125057600080fd5b919050565b6000806040838503121561126857600080fd5b61127183611239565b915061127f60208401611239565b90509250929050565b6000806040838503121561129b57600080fd5b6112a483611239565b946020939093013593505050565b6000602082840312156112c457600080fd5b610ce082611239565b6000602082840312156112df57600080fd5b5035919050565b600080604083850312156112f957600080fd5b50508035926020909101359150565b6000806040838503121561131b57600080fd5b8235915061127f60208401611239565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761059d5761059d61132b565b60008261137557634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561059d5761059d61132b565b8181038181111561059d5761059d61132b565b60208082526036908201527f4665652070657263656e742063616e6e6f742062652067726561746572207468604082015275185b881d1a19481b585e1a5b5d5b48185b1b1bddd95960521b606082015260800190565b6001600160a01b03988916815296909716602087015293151560408601526060850192909252608084015260a083015260c082015260e0810191909152610100019056fea2646970667358221220f130a5b7c2b8e2a5f60b503bc9d9fc6e0b7c35adcfcb68107ea01b535a8188a064736f6c63430008110033
Deployed Bytecode Sourcemap
3749:6987:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4367:68;;;;;;;;;;-1:-1:-1;4367:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;603:25:1;;;591:2;576:18;4367:68:0;;;;;;;;5716:635;;;;;;;;;;-1:-1:-1;5716:635:0;;;;;:::i;:::-;;:::i;6359:636::-;;;;;;;;;;-1:-1:-1;6359:636:0;;;;;:::i;:::-;;:::i;3896:52::-;;;;;;;;;;;;;;;;3955:59;;;;;;;;;;-1:-1:-1;3955:59:0;;;;;:::i;:::-;;;;;;;;;;;;;;5289:244;;;;;;;;;;-1:-1:-1;5289:244:0;;;;;:::i;:::-;;:::i;3792:37::-;;;;;;;;;;-1:-1:-1;3792:37:0;;;;-1:-1:-1;;;;;3792:37:0;;;;;;-1:-1:-1;;;;;1253:32:1;;;1235:51;;1223:2;1208:18;3792:37:0;1089:203:1;9750:236:0;;;;;;;;;;-1:-1:-1;9750:236:0;;;;;:::i;:::-;;:::i;:::-;;4796:118;;;;;;;;;;-1:-1:-1;4796:118:0;;;;;:::i;:::-;;:::i;4922:359::-;;;;;;;;;;-1:-1:-1;4922:359:0;;;;;:::i;:::-;;:::i;10413:314::-;;;;;;;;;;;;;:::i;7004:1363::-;;;;;;:::i;:::-;;:::i;2806:103::-;;;;;;;;;;;;;:::i;4021:60::-;;;;;;;;;;-1:-1:-1;4021:60:0;;;;;:::i;:::-;;;;;;;;;;;;;;9994:277;;;;;;;;;;-1:-1:-1;9994:277:0;;;;;:::i;:::-;;:::i;2158:87::-;;;;;;;;;;-1:-1:-1;2204:7:0;2231:6;-1:-1:-1;;;;;2231:6:0;2158:87;;5541:167;;;;;;;;;;-1:-1:-1;5541:167:0;;;;;:::i;:::-;;:::i;4668:120::-;;;;;;;;;;-1:-1:-1;4668:120:0;;;;;:::i;:::-;;:::i;8377:1365::-;;;;;;:::i;:::-;;:::i;3836:53::-;;;;;;;;;;;;;;;;4088:49;;;;;;;;;;;;;;;;3064:201;;;;;;;;;;-1:-1:-1;3064:201:0;;;;;:::i;:::-;;:::i;10279:122::-;;;;;;;;;;-1:-1:-1;10279:122:0;;;;;:::i;:::-;;:::i;4476:47::-;;;;;;;;;;-1:-1:-1;4476:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;4532:128;;;;;;;;;;-1:-1:-1;4532:128:0;;;;;:::i;:::-;;:::i;5716:635::-;5805:7;5825:13;5841:34;5853:13;5868:6;5841:11;:34::i;:::-;-1:-1:-1;;;;;5912:40:0;;5886:23;5912:40;;;:25;:40;;;;;;5825:50;;-1:-1:-1;5886:23:0;5912:45;:109;;-1:-1:-1;;;;;5981:40:0;;;;;;:25;:40;;;;;;5912:109;;;5960:18;;5912:109;5886:135;-1:-1:-1;6032:19:0;6080:7;6054:23;5886:135;6054:5;:23;:::i;:::-;:33;;;;:::i;:::-;-1:-1:-1;;;;;6123:39:0;;6098:22;6123:39;;;:24;:39;;;;;;6032:55;;-1:-1:-1;6098:22:0;6123:44;:106;;-1:-1:-1;;;;;6190:39:0;;;;;;:24;:39;;;;;;6123:106;;;6170:17;;6123:106;6098:131;-1:-1:-1;6240:18:0;6286:7;6261:22;6098:131;6261:5;:22;:::i;:::-;:32;;;;:::i;:::-;6240:53;-1:-1:-1;6240:53:0;6311:19;6319:11;6311:5;:19;:::i;:::-;:32;;;;:::i;:::-;6304:39;;;;;;;5716:635;;;;;:::o;6359:636::-;6449:7;6469:13;6485:35;6498:13;6513:6;6485:12;:35::i;:::-;-1:-1:-1;;;;;6557:40:0;;6531:23;6557:40;;;:25;:40;;;;;;6469:51;;-1:-1:-1;6531:23:0;6557:45;:109;;-1:-1:-1;;;;;6626:40:0;;;;;;:25;:40;;;;;;6557:109;;;6605:18;;6557:109;6531:135;-1:-1:-1;6677:19:0;6725:7;6699:23;6531:135;6699:5;:23;:::i;:::-;:33;;;;:::i;:::-;-1:-1:-1;;;;;6768:39:0;;6743:22;6768:39;;;:24;:39;;;;;;6677:55;;-1:-1:-1;6743:22:0;6768:44;:106;;-1:-1:-1;;;;;6835:39:0;;;;;;:24;:39;;;;;;6768:106;;;6815:17;;6768:106;6743:131;-1:-1:-1;6885:18:0;6931:7;6906:22;6743:131;6906:5;:22;:::i;:::-;:32;;;;:::i;:::-;6885:53;-1:-1:-1;6885:53:0;6955:19;6963:11;6955:5;:19;:::i;:::-;:32;;;;:::i;5289:244::-;-1:-1:-1;;;;;5412:27:0;;5370:7;5412:27;;;:12;:27;;;;;;5370:7;;5412:32;5411:68;;-1:-1:-1;;;;;5452:27:0;;;;;;:12;:27;;;;;;5411:68;;;5448:1;5411:68;5386:93;;5493:32;5502:14;5518:6;5493:8;:32::i;:::-;5486:39;5289:244;-1:-1:-1;;;;5289:244:0:o;9750:236::-;9845:13;;9830:11;:28;;9822:95;;;;-1:-1:-1;;;9822:95:0;;;;;;;:::i;:::-;;;;;;;;;9953:10;9928:36;;;;:24;:36;;;;;:50;9750:236::o;4796:118::-;2044:13;:11;:13::i;:::-;4875:17:::1;:31:::0;4796:118::o;4922:359::-;4993:7;;5024:11;;:68;;5091:1;5072:10;5081:1;5072:6;:10;:::i;:::-;5067:16;;:1;:16;:::i;:::-;:20;;5086:1;5067:20;:::i;:::-;5057:6;5043:10;5052:1;5057:6;5043:10;:::i;:::-;5042:21;;;;:::i;:::-;:46;;;;:::i;:::-;:50;;;;:::i;:::-;5024:68;;;5038:1;5024:68;5009:83;-1:-1:-1;5099:12:0;5115:11;;:26;;;;;5130:6;5140:1;5130:11;5115:26;5114:114;;5227:1;5212:6;5199:10;5208:1;5199:6;:10;:::i;:::-;:19;;;;:::i;:::-;5194:25;;:1;:25;:::i;:::-;:29;;5222:1;5194:29;:::i;:::-;5174:15;5183:6;5174;:15;:::i;:::-;5163:6;5150:10;5159:1;5150:6;:10;:::i;:::-;:19;;;;:::i;:::-;5149:41;;;;:::i;:::-;:75;;;;:::i;:::-;:79;;;;:::i;:::-;5114:114;;;5145:1;5114:114;5099:129;-1:-1:-1;5268:5:0;5243:11;5250:4;5099:129;5243:11;:::i;:::-;5242:23;;5258:7;5242:23;:::i;:::-;:31;;;;:::i;:::-;5235:38;4922:359;-1:-1:-1;;;;;4922:359:0:o;10413:314::-;10479:10;10449:14;10466:24;;;:12;:24;;;;;;10505:11;;10497:51;;;;-1:-1:-1;;;10497:51:0;;3409:2:1;10497:51:0;;;3391:21:1;3448:2;3428:18;;;3421:30;3487:29;3467:18;;;3460:57;3534:18;;10497:51:0;3207:351:1;10497:51:0;-1:-1:-1;10569:10:0;10555:25;;;;:13;:25;;;;;;;;:37;;;;;10595:1;10555:41;;;;10603:12;:24;;;;;;:28;;;10664:55;10595:1;;10664:55;;;;10569:10;;10595:1;;;;10555:25;;;;;10595:1;;10664:55;:::i;:::-;;;;;;;;10442:285;10413:314::o;7004:1363::-;-1:-1:-1;;;;;7105:27:0;;7088:14;7105:27;;;:12;:27;;;;;;;7147:11;;;7143:211;;-1:-1:-1;;;;;;7230:28:0;;;;;;:13;:28;;;;;;;;:43;;;;;7276:1;7230:47;;;;7288:12;:27;;;;;;:31;;;7143:211;7364:13;7380:34;7392:13;7407:6;7380:11;:34::i;:::-;-1:-1:-1;;;;;7451:40:0;;7425:23;7451:40;;;:25;:40;;;;;;7364:50;;-1:-1:-1;7425:23:0;7451:45;:109;;-1:-1:-1;;;;;7520:40:0;;;;;;:25;:40;;;;;;7451:109;;;7499:18;;7451:109;7425:135;-1:-1:-1;7571:19:0;7619:7;7593:23;7425:135;7593:5;:23;:::i;:::-;:33;;;;:::i;:::-;-1:-1:-1;;;;;7662:39:0;;7637:22;7662:39;;;:24;:39;;;;;;7571:55;;-1:-1:-1;7637:22:0;7662:44;:106;;-1:-1:-1;;;;;7729:39:0;;;;;;:24;:39;;;;;;7662:106;;;7709:17;;7662:106;7637:131;-1:-1:-1;7779:18:0;7825:7;7800:22;7637:131;7800:5;:22;:::i;:::-;:32;;;;:::i;:::-;7779:53;-1:-1:-1;7779:53:0;7864:19;7872:11;7864:5;:19;:::i;:::-;:32;;;;:::i;:::-;7851:9;:45;;7843:78;;;;-1:-1:-1;;;7843:78:0;;4547:2:1;7843:78:0;;;4529:21:1;4586:2;4566:18;;;4559:30;-1:-1:-1;;;4605:18:1;;;4598:50;4665:18;;7843:78:0;4345:344:1;7843:78:0;-1:-1:-1;;;;;7932:28:0;;;;;;:13;:28;;;;;;;;7961:10;7932:40;;;;;;;:50;;7976:6;;7932:28;:50;;7976:6;;7932:50;:::i;:::-;;;;-1:-1:-1;;;;;;;7993:27:0;;;;;;:12;:27;;;;;:37;;8024:6;;7993:27;:37;;8024:6;;7993:37;:::i;:::-;;;;-1:-1:-1;8046:95:0;;-1:-1:-1;8052:10:0;8064:13;8079:4;8085:6;8093:5;8100:11;8113:10;8125:15;8085:6;8125;:15;:::i;:::-;8046:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;8172:22;;:51;;8153:13;;-1:-1:-1;;;;;8172:22:0;;8207:11;;8153:13;8172:51;8153:13;8172:51;8207:11;8172:22;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8152:71;;;8235:13;8254;-1:-1:-1;;;;;8254:18:0;8280:10;8254:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8234:61;;;8314:8;:20;;;;;8326:8;8314:20;8306:53;;;;-1:-1:-1;;;8306:53:0;;5856:2:1;8306:53:0;;;5838:21:1;5895:2;5875:18;;;5868:30;-1:-1:-1;;;5914:18:1;;;5907:50;5974:18;;8306:53:0;5654:344:1;8306:53:0;7077:1290;;;;;;;;7004:1363;;:::o;2806:103::-;2044:13;:11;:13::i;:::-;2871:30:::1;2898:1;2871:18;:30::i;:::-;2806:103::o:0;9994:277::-;2044:13;:11;:13::i;:::-;10126::::1;;10111:11;:28;;10103:95;;;;-1:-1:-1::0;;;10103:95:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10209:40:0::1;;::::0;;;:25:::1;:40;::::0;;;;:54;9994:277::o;5541:167::-;-1:-1:-1;;;;;5655:27:0;;5623:7;5655:27;;;:12;:27;;;;;;5646:54;;5655:36;;5685:6;;5655:36;:::i;:::-;5693:6;5646:8;:54::i;:::-;5639:61;5541:167;-1:-1:-1;;;5541:167:0:o;4668:120::-;2044:13;:11;:13::i;:::-;4748:18:::1;:32:::0;4668:120::o;8377:1365::-;-1:-1:-1;;;;;8479:27:0;;8462:14;8479:27;;;:12;:27;;;;;;8525:15;;;8517:54;;;;-1:-1:-1;;;8517:54:0;;6205:2:1;8517:54:0;;;6187:21:1;6244:2;6224:18;;;6217:30;6283:28;6263:18;;;6256:56;6329:18;;8517:54:0;6003:350:1;8517:54:0;8582:13;8598:33;8607:15;8616:6;8607;:15;:::i;:::-;8624:6;8598:8;:33::i;:::-;-1:-1:-1;;;;;8668:40:0;;8642:23;8668:40;;;:25;:40;;;;;;8582:49;;-1:-1:-1;8642:23:0;8668:45;:109;;-1:-1:-1;;;;;8737:40:0;;;;;;:25;:40;;;;;;8668:109;;;8716:18;;8668:109;8642:135;-1:-1:-1;8788:19:0;8836:7;8810:23;8642:135;8810:5;:23;:::i;:::-;:33;;;;:::i;:::-;-1:-1:-1;;;;;8879:39:0;;8854:22;8879:39;;;:24;:39;;;;;;8788:55;;-1:-1:-1;8854:22:0;8879:44;:106;;-1:-1:-1;;;;;8946:39:0;;;;;;:24;:39;;;;;;8879:106;;;8926:17;;8879:106;8854:131;-1:-1:-1;8996:18:0;9042:7;9017:22;8854:131;9017:5;:22;:::i;:::-;:32;;;;:::i;:::-;-1:-1:-1;;;;;9068:28:0;;;;;;:13;:28;;;;;;;;9097:10;9068:40;;;;;;;;8996:53;;-1:-1:-1;9068:50:0;-1:-1:-1;9068:50:0;9060:82;;;;-1:-1:-1;;;9060:82:0;;6560:2:1;9060:82:0;;;6542:21:1;6599:2;6579:18;;;6572:30;-1:-1:-1;;;6618:18:1;;;6611:49;6677:18;;9060:82:0;6358:343:1;9060:82:0;-1:-1:-1;;;;;9196:28:0;;;;;;:13;:28;;;;;;;;9225:10;9196:40;;;;;;;;:49;;9239:6;;9196:49;:::i;:::-;-1:-1:-1;;;;;9153:28:0;;;;;;:13;:28;;;;;;;;9182:10;9153:40;;;;;;;:92;9286:15;9295:6;9286;:15;:::i;:::-;-1:-1:-1;;;;;9256:27:0;;;;;;:12;:27;;;;;:45;;;;9317:96;;9323:10;;9269:13;;9357:6;9365:5;9372:11;9385:10;9397:15;9357:6;9397;:15;:::i;:::-;9317:96;;;;;;;;;;;;;:::i;:::-;;;;;;;;9425:13;9444:10;9489;9467:19;9475:11;9467:5;:19;:::i;:::-;:32;;;;:::i;:::-;9444:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9535:22:0;;:51;;9424:80;;-1:-1:-1;9516:13:0;;-1:-1:-1;;;;;9535:22:0;;;;9570:11;;9516:13;9535:51;9516:13;9535:51;9570:11;9535:22;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9515:71;;;9598:13;9617;-1:-1:-1;;;;;9617:18:0;9643:10;9617:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9597:61;;;9677:8;:20;;;;;9689:8;9677:20;:32;;;;;9701:8;9677:32;9669:65;;;;-1:-1:-1;;;9669:65:0;;5856:2:1;9669:65:0;;;5838:21:1;5895:2;5875:18;;;5868:30;-1:-1:-1;;;5914:18:1;;;5907:50;5974:18;;9669:65:0;5654:344:1;9669:65:0;8451:1291;;;;;;;;;8377:1365;;:::o;3064:201::-;2044:13;:11;:13::i;:::-;-1:-1:-1;;;;;3153:22:0;::::1;3145:73;;;::::0;-1:-1:-1;;;3145:73:0;;6908:2:1;3145:73:0::1;::::0;::::1;6890:21:1::0;6947:2;6927:18;;;6920:30;6986:34;6966:18;;;6959:62;-1:-1:-1;;;7037:18:1;;;7030:36;7083:19;;3145:73:0::1;6706:402:1::0;3145:73:0::1;3229:28;3248:8;3229:18;:28::i;:::-;3064:201:::0;:::o;10279:122::-;2044:13;:11;:13::i;:::-;10360::::1;:33:::0;10279:122::o;4532:128::-;2044:13;:11;:13::i;:::-;4612:22:::1;:40:::0;;-1:-1:-1;;;;;;4612:40:0::1;-1:-1:-1::0;;;;;4612:40:0;;;::::1;::::0;;;::::1;::::0;;4532:128::o;2323:132::-;2204:7;2231:6;-1:-1:-1;;;;;2231:6:0;810:10;2387:23;2379:68;;;;-1:-1:-1;;;2379:68:0;;7315:2:1;2379:68:0;;;7297:21:1;;;7334:18;;;7327:30;7393:34;7373:18;;;7366:62;7445:18;;2379:68:0;7113:356:1;3425:191:0;3499:16;3518:6;;-1:-1:-1;;;;;3535:17:0;;;-1:-1:-1;;;;;;3535:17:0;;;;;;3568:40;;3518:6;;;;;;;3568:40;;3499:16;3568:40;3488:128;3425:191;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:260::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;;408:38;442:2;431:9;427:18;408:38;:::i;:::-;398:48;;192:260;;;;;:::o;639:254::-;707:6;715;768:2;756:9;747:7;743:23;739:32;736:52;;;784:1;781;774:12;736:52;807:29;826:9;807:29;:::i;:::-;797:39;883:2;868:18;;;;855:32;;-1:-1:-1;;;639:254:1:o;898:186::-;957:6;1010:2;998:9;989:7;985:23;981:32;978:52;;;1026:1;1023;1016:12;978:52;1049:29;1068:9;1049:29;:::i;1297:180::-;1356:6;1409:2;1397:9;1388:7;1384:23;1380:32;1377:52;;;1425:1;1422;1415:12;1377:52;-1:-1:-1;1448:23:1;;1297:180;-1:-1:-1;1297:180:1:o;1482:248::-;1550:6;1558;1611:2;1599:9;1590:7;1586:23;1582:32;1579:52;;;1627:1;1624;1617:12;1579:52;-1:-1:-1;;1650:23:1;;;1720:2;1705:18;;;1692:32;;-1:-1:-1;1482:248:1:o;1735:254::-;1803:6;1811;1864:2;1852:9;1843:7;1839:23;1835:32;1832:52;;;1880:1;1877;1870:12;1832:52;1916:9;1903:23;1893:33;;1945:38;1979:2;1968:9;1964:18;1945:38;:::i;1994:127::-;2055:10;2050:3;2046:20;2043:1;2036:31;2086:4;2083:1;2076:15;2110:4;2107:1;2100:15;2126:168;2199:9;;;2230;;2247:15;;;2241:22;;2227:37;2217:71;;2268:18;;:::i;2299:217::-;2339:1;2365;2355:132;;2409:10;2404:3;2400:20;2397:1;2390:31;2444:4;2441:1;2434:15;2472:4;2469:1;2462:15;2355:132;-1:-1:-1;2501:9:1;;2299:217::o;2521:125::-;2586:9;;;2607:10;;;2604:36;;;2620:18;;:::i;2651:128::-;2718:9;;;2739:11;;;2736:37;;;2753:18;;:::i;2784:418::-;2986:2;2968:21;;;3025:2;3005:18;;;2998:30;3064:34;3059:2;3044:18;;3037:62;-1:-1:-1;;;3130:2:1;3115:18;;3108:52;3192:3;3177:19;;2784:418::o;3563:777::-;-1:-1:-1;;;;;3988:15:1;;;3970:34;;4040:15;;;;4035:2;4020:18;;4013:43;4099:14;;4092:22;4087:2;4072:18;;4065:50;4146:2;4131:18;;4124:34;;;;4189:3;4174:19;;4167:35;3950:3;4218:19;;4211:35;4277:3;4262:19;;4255:35;4321:3;4306:19;;4299:35;;;;3919:3;3904:19;;3563:777::o
Swarm Source
ipfs://f130a5b7c2b8e2a5f60b503bc9d9fc6e0b7c35adcfcb68107ea01b535a8188a0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,474.51 | 0.0004375 | $1.52 |
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.