Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
AssetManagementContract
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-11-13
*/
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
/**
* @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.
*
* The initial owner is set to the address provided by the deployer. 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;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @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 {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling 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 {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_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);
}
}
pragma solidity ^0.8.0;
contract AssetManagementContract is Ownable {
event InvestmentMade(address indexed asset, uint256 amount);
event ProfitClaimed(address indexed holder, uint256 amount);
event InvestmentStrategyExecuted(string strategyName);
event FedTokenAddressSet(address indexed fedTokenAddress);
struct Investment {
address asset;
uint256 amount;
uint256 yield;
}
Investment[] public investments;
mapping(address => uint256) public profits;
mapping(string => bool) public strategyExecuted;
mapping(address => uint256) public lastClaimedProfitIndex;
IERC20 public fedToken;
address public pendingFedTokenAddress;
uint256 public totalProfitsDistributed;
constructor() Ownable(msg.sender) {
}
function setFedTokenAddress(address _newFedTokenAddress) public onlyOwner {
require(_newFedTokenAddress != address(fedToken), "New address is the same as the current one");
pendingFedTokenAddress = _newFedTokenAddress;
emit FedTokenAddressSet(_newFedTokenAddress);
}
function confirmFedTokenAddress() public onlyOwner {
require(pendingFedTokenAddress != address(0), "Pending address is not set");
fedToken = IERC20(pendingFedTokenAddress);
pendingFedTokenAddress = address(0);
}
function investInAsset(address _asset, uint256 _amount, uint256 _yield) public onlyOwner {
investments.push(Investment(_asset, _amount, _yield));
emit InvestmentMade(_asset, _amount);
}
function simulateInvestmentGrowth() public onlyOwner {
for (uint256 i = 0; i < investments.length; i++) {
uint256 profit = investments[i].amount * investments[i].yield / 10000;
profits[investments[i].asset] += profit;
}
}
function executeStrategy(string memory _strategyName) public onlyOwner {
strategyExecuted[_strategyName] = true;
emit InvestmentStrategyExecuted(_strategyName);
}
function distributeProfits() public onlyOwner {
uint256 totalProfit = 0;
for (uint256 i = 0; i < investments.length; i++) {
totalProfit += profits[investments[i].asset];
profits[investments[i].asset] = 0;
}
totalProfitsDistributed += totalProfit;
}
function claimProfits() public {
uint256 holderBalance = fedToken.balanceOf(msg.sender);
require(holderBalance > 0, "No tokens held");
uint256 claimableProfit = getClaimableProfit(msg.sender);
require(claimableProfit > 0, "No profits to claim");
lastClaimedProfitIndex[msg.sender] = totalProfitsDistributed;
require(fedToken.transfer(msg.sender, claimableProfit), "Profit transfer failed");
emit ProfitClaimed(msg.sender, claimableProfit);
}
function getClaimableProfit(address _holder) public view returns (uint256) {
uint256 holderBalance = fedToken.balanceOf(_holder);
uint256 totalSupply = fedToken.totalSupply();
uint256 holderShare = totalProfitsDistributed * holderBalance / totalSupply;
uint256 lastClaimed = lastClaimedProfitIndex[_holder];
return holderShare > lastClaimed ? holderShare - lastClaimed : 0;
}
function getTotalInvestments() public view returns (uint256) {
return investments.length;
}
function getTotalProfit() public view returns (uint256) {
uint256 totalProfit = 0;
for (uint256 i = 0; i < investments.length; i++) {
totalProfit += profits[investments[i].asset];
}
return totalProfit;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fedTokenAddress","type":"address"}],"name":"FedTokenAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InvestmentMade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"strategyName","type":"string"}],"name":"InvestmentStrategyExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProfitClaimed","type":"event"},{"inputs":[],"name":"claimProfits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"confirmFedTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeProfits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_strategyName","type":"string"}],"name":"executeStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fedToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getClaimableProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalInvestments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_yield","type":"uint256"}],"name":"investInAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"investments","outputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"yield","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimedProfitIndex","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":"pendingFedTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"profits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newFedTokenAddress","type":"address"}],"name":"setFedTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"simulateInvestmentGrowth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"strategyExecuted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalProfitsDistributed","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
608060405234801562000010575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000085575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200007c9190620001a1565b60405180910390fd5b62000096816200009d60201b60201c565b50620001bc565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000189826200015e565b9050919050565b6200019b816200017d565b82525050565b5f602082019050620001b65f83018462000190565b92915050565b611b9280620001ca5f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c80639df51b89116100ab578063cc85f0801161006f578063cc85f080146102be578063f2fde38b146102ee578063f71f397d1461030a578063f9a026aa14610326578063fd345c8a146103445761012a565b80639df51b891461023c578063a173044b14610246578063a9a4cbcc14610264578063b1d2483614610282578063c1f88f23146102a05761012a565b80634b905766116100f25780634b905766146101be578063715018a6146101ee57806377d60397146101f85780637f6f059e146102145780638da5cb5b1461021e5761012a565b8063164500b81461012e5780631fee5ccd1461013857806324ef66c61461014257806334e29f1b14610172578063434ae2ea1461018e575b5f80fd5b610136610376565b005b61014061049a565b005b61015c6004803603810190610157919061125c565b6105f0565b604051610169919061129f565b60405180910390f35b61018c6004803603810190610187919061125c565b610605565b005b6101a860048036038101906101a3919061125c565b610722565b6040516101b5919061129f565b60405180910390f35b6101d860048036038101906101d391906113f4565b6108d2565b6040516101e59190611455565b60405180910390f35b6101f6610907565b005b610212600480360381019061020d91906113f4565b61091a565b005b61021c610992565b005b610226610acc565b604051610233919061147d565b60405180910390f35b610244610af3565b005b61024e610d90565b60405161025b919061147d565b60405180910390f35b61026c610db5565b604051610279919061129f565b60405180910390f35b61028a610e70565b60405161029791906114f1565b60405180910390f35b6102a8610e95565b6040516102b5919061129f565b60405180910390f35b6102d860048036038101906102d3919061125c565b610e9b565b6040516102e5919061129f565b60405180910390f35b6103086004803603810190610303919061125c565b610eb0565b005b610324600480360381019061031f9190611534565b610f34565b005b61032e611042565b60405161033b919061129f565b60405180910390f35b61035e60048036038101906103599190611584565b61104e565b60405161036d939291906115af565b60405180910390f35b61037e6110a2565b5f5b600180549050811015610497575f612710600183815481106103a5576103a46115e4565b5b905f5260205f20906003020160020154600184815481106103c9576103c86115e4565b5b905f5260205f209060030201600101546103e3919061163e565b6103ed91906116ac565b90508060025f60018581548110610407576104066115e4565b5b905f5260205f2090600302015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461047c91906116dc565b9250508190555050808061048f9061170f565b915050610380565b50565b6104a26110a2565b5f805b6001805490508110156105d45760025f600183815481106104c9576104c86115e4565b5b905f5260205f2090600302015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261053c91906116dc565b91505f60025f60018481548110610556576105556115e4565b5b905f5260205f2090600302015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080806105cc9061170f565b9150506104a5565b508060075f8282546105e691906116dc565b9250508190555050565b6004602052805f5260405f205f915090505481565b61060d6110a2565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361069c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610693906117d6565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91f613244e51a08fa109f89fdf158cda7e6370dbc63f484ceeb8812dbda9124760405160405180910390a250565b5f8060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161077e919061147d565b602060405180830381865afa158015610799573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bd9190611808565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084e9190611808565b90505f8183600754610860919061163e565b61086a91906116ac565b90505f60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508082116108ba575f6108c7565b80826108c69190611833565b5b945050505050919050565b6003818051602081018201805184825260208301602085012081835280955050505050505f915054906101000a900460ff1681565b61090f6110a2565b6109185f611129565b565b6109226110a2565b600160038260405161093491906118d2565b90815260200160405180910390205f6101000a81548160ff0219169083151502179055507fd14ec7cf28fa0d58d856dc79299901bc507ffede1bbad5fb67f9ff872503d2d9816040516109879190611920565b60405180910390a150565b61099a6110a2565b5f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a209061198a565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610b4e919061147d565b602060405180830381865afa158015610b69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611808565b90505f8111610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc8906119f2565b60405180910390fd5b5f610bdb33610722565b90505f8111610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690611a5a565b60405180910390fd5b60075460045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610cbf929190611a78565b6020604051808303815f875af1158015610cdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff9190611ac9565b610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590611b3e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f6a2cbfd0a4e37b7dace5dec7cf930020420c1aa4ca495bbf4972d9fd614ecc3b82604051610d84919061129f565b60405180910390a25050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f90505f5b600180549050811015610e685760025f60018381548110610de057610ddf6115e4565b5b905f5260205f2090600302015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482610e5391906116dc565b91508080610e609061170f565b915050610dbc565b508091505090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6002602052805f5260405f205f915090505481565b610eb86110a2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f28575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f1f919061147d565b60405180910390fd5b610f3181611129565b50565b610f3c6110a2565b600160405180606001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015550508273ffffffffffffffffffffffffffffffffffffffff167f07146ef3ff2146eaf34fa4d392d4c56663333b682654b3123bf270f9ec529f3183604051611035919061129f565b60405180910390a2505050565b5f600180549050905090565b6001818154811061105d575f80fd5b905f5260205f2090600302015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b6110aa6111ea565b73ffffffffffffffffffffffffffffffffffffffff166110c8610acc565b73ffffffffffffffffffffffffffffffffffffffff1614611127576110eb6111ea565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161111e919061147d565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61122b82611202565b9050919050565b61123b81611221565b8114611245575f80fd5b50565b5f8135905061125681611232565b92915050565b5f60208284031215611271576112706111fa565b5b5f61127e84828501611248565b91505092915050565b5f819050919050565b61129981611287565b82525050565b5f6020820190506112b25f830184611290565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611306826112c0565b810181811067ffffffffffffffff82111715611325576113246112d0565b5b80604052505050565b5f6113376111f1565b905061134382826112fd565b919050565b5f67ffffffffffffffff821115611362576113616112d0565b5b61136b826112c0565b9050602081019050919050565b828183375f83830152505050565b5f61139861139384611348565b61132e565b9050828152602081018484840111156113b4576113b36112bc565b5b6113bf848285611378565b509392505050565b5f82601f8301126113db576113da6112b8565b5b81356113eb848260208601611386565b91505092915050565b5f60208284031215611409576114086111fa565b5b5f82013567ffffffffffffffff811115611426576114256111fe565b5b611432848285016113c7565b91505092915050565b5f8115159050919050565b61144f8161143b565b82525050565b5f6020820190506114685f830184611446565b92915050565b61147781611221565b82525050565b5f6020820190506114905f83018461146e565b92915050565b5f819050919050565b5f6114b96114b46114af84611202565b611496565b611202565b9050919050565b5f6114ca8261149f565b9050919050565b5f6114db826114c0565b9050919050565b6114eb816114d1565b82525050565b5f6020820190506115045f8301846114e2565b92915050565b61151381611287565b811461151d575f80fd5b50565b5f8135905061152e8161150a565b92915050565b5f805f6060848603121561154b5761154a6111fa565b5b5f61155886828701611248565b935050602061156986828701611520565b925050604061157a86828701611520565b9150509250925092565b5f60208284031215611599576115986111fa565b5b5f6115a684828501611520565b91505092915050565b5f6060820190506115c25f83018661146e565b6115cf6020830185611290565b6115dc6040830184611290565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61164882611287565b915061165383611287565b925082820261166181611287565b9150828204841483151761167857611677611611565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6116b682611287565b91506116c183611287565b9250826116d1576116d061167f565b5b828204905092915050565b5f6116e682611287565b91506116f183611287565b925082820190508082111561170957611708611611565b5b92915050565b5f61171982611287565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361174b5761174a611611565b5b600182019050919050565b5f82825260208201905092915050565b7f4e65772061646472657373206973207468652073616d652061732074686520635f8201527f757272656e74206f6e6500000000000000000000000000000000000000000000602082015250565b5f6117c0602a83611756565b91506117cb82611766565b604082019050919050565b5f6020820190508181035f8301526117ed816117b4565b9050919050565b5f815190506118028161150a565b92915050565b5f6020828403121561181d5761181c6111fa565b5b5f61182a848285016117f4565b91505092915050565b5f61183d82611287565b915061184883611287565b92508282039050818111156118605761185f611611565b5b92915050565b5f81519050919050565b5f81905092915050565b5f5b8381101561189757808201518184015260208101905061187c565b5f8484015250505050565b5f6118ac82611866565b6118b68185611870565b93506118c681856020860161187a565b80840191505092915050565b5f6118dd82846118a2565b915081905092915050565b5f6118f282611866565b6118fc8185611756565b935061190c81856020860161187a565b611915816112c0565b840191505092915050565b5f6020820190508181035f83015261193881846118e8565b905092915050565b7f50656e64696e672061646472657373206973206e6f74207365740000000000005f82015250565b5f611974601a83611756565b915061197f82611940565b602082019050919050565b5f6020820190508181035f8301526119a181611968565b9050919050565b7f4e6f20746f6b656e732068656c640000000000000000000000000000000000005f82015250565b5f6119dc600e83611756565b91506119e7826119a8565b602082019050919050565b5f6020820190508181035f830152611a09816119d0565b9050919050565b7f4e6f2070726f6669747320746f20636c61696d000000000000000000000000005f82015250565b5f611a44601383611756565b9150611a4f82611a10565b602082019050919050565b5f6020820190508181035f830152611a7181611a38565b9050919050565b5f604082019050611a8b5f83018561146e565b611a986020830184611290565b9392505050565b611aa88161143b565b8114611ab2575f80fd5b50565b5f81519050611ac381611a9f565b92915050565b5f60208284031215611ade57611add6111fa565b5b5f611aeb84828501611ab5565b91505092915050565b7f50726f666974207472616e73666572206661696c6564000000000000000000005f82015250565b5f611b28601683611756565b9150611b3382611af4565b602082019050919050565b5f6020820190508181035f830152611b5581611b1c565b905091905056fea264697066735822122071285b6088851525f3b70648d4525c2121ddcdc944568b8ce79a24c63c6eb87964736f6c63430008140033
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061012a575f3560e01c80639df51b89116100ab578063cc85f0801161006f578063cc85f080146102be578063f2fde38b146102ee578063f71f397d1461030a578063f9a026aa14610326578063fd345c8a146103445761012a565b80639df51b891461023c578063a173044b14610246578063a9a4cbcc14610264578063b1d2483614610282578063c1f88f23146102a05761012a565b80634b905766116100f25780634b905766146101be578063715018a6146101ee57806377d60397146101f85780637f6f059e146102145780638da5cb5b1461021e5761012a565b8063164500b81461012e5780631fee5ccd1461013857806324ef66c61461014257806334e29f1b14610172578063434ae2ea1461018e575b5f80fd5b610136610376565b005b61014061049a565b005b61015c6004803603810190610157919061125c565b6105f0565b604051610169919061129f565b60405180910390f35b61018c6004803603810190610187919061125c565b610605565b005b6101a860048036038101906101a3919061125c565b610722565b6040516101b5919061129f565b60405180910390f35b6101d860048036038101906101d391906113f4565b6108d2565b6040516101e59190611455565b60405180910390f35b6101f6610907565b005b610212600480360381019061020d91906113f4565b61091a565b005b61021c610992565b005b610226610acc565b604051610233919061147d565b60405180910390f35b610244610af3565b005b61024e610d90565b60405161025b919061147d565b60405180910390f35b61026c610db5565b604051610279919061129f565b60405180910390f35b61028a610e70565b60405161029791906114f1565b60405180910390f35b6102a8610e95565b6040516102b5919061129f565b60405180910390f35b6102d860048036038101906102d3919061125c565b610e9b565b6040516102e5919061129f565b60405180910390f35b6103086004803603810190610303919061125c565b610eb0565b005b610324600480360381019061031f9190611534565b610f34565b005b61032e611042565b60405161033b919061129f565b60405180910390f35b61035e60048036038101906103599190611584565b61104e565b60405161036d939291906115af565b60405180910390f35b61037e6110a2565b5f5b600180549050811015610497575f612710600183815481106103a5576103a46115e4565b5b905f5260205f20906003020160020154600184815481106103c9576103c86115e4565b5b905f5260205f209060030201600101546103e3919061163e565b6103ed91906116ac565b90508060025f60018581548110610407576104066115e4565b5b905f5260205f2090600302015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461047c91906116dc565b9250508190555050808061048f9061170f565b915050610380565b50565b6104a26110a2565b5f805b6001805490508110156105d45760025f600183815481106104c9576104c86115e4565b5b905f5260205f2090600302015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261053c91906116dc565b91505f60025f60018481548110610556576105556115e4565b5b905f5260205f2090600302015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080806105cc9061170f565b9150506104a5565b508060075f8282546105e691906116dc565b9250508190555050565b6004602052805f5260405f205f915090505481565b61060d6110a2565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361069c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610693906117d6565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f91f613244e51a08fa109f89fdf158cda7e6370dbc63f484ceeb8812dbda9124760405160405180910390a250565b5f8060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b815260040161077e919061147d565b602060405180830381865afa158015610799573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bd9190611808565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561082a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084e9190611808565b90505f8183600754610860919061163e565b61086a91906116ac565b90505f60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508082116108ba575f6108c7565b80826108c69190611833565b5b945050505050919050565b6003818051602081018201805184825260208301602085012081835280955050505050505f915054906101000a900460ff1681565b61090f6110a2565b6109185f611129565b565b6109226110a2565b600160038260405161093491906118d2565b90815260200160405180910390205f6101000a81548160ff0219169083151502179055507fd14ec7cf28fa0d58d856dc79299901bc507ffede1bbad5fb67f9ff872503d2d9816040516109879190611920565b60405180910390a150565b61099a6110a2565b5f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a209061198a565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610b4e919061147d565b602060405180830381865afa158015610b69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611808565b90505f8111610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc8906119f2565b60405180910390fd5b5f610bdb33610722565b90505f8111610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690611a5a565b60405180910390fd5b60075460045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610cbf929190611a78565b6020604051808303815f875af1158015610cdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cff9190611ac9565b610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590611b3e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f6a2cbfd0a4e37b7dace5dec7cf930020420c1aa4ca495bbf4972d9fd614ecc3b82604051610d84919061129f565b60405180910390a25050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f90505f5b600180549050811015610e685760025f60018381548110610de057610ddf6115e4565b5b905f5260205f2090600302015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482610e5391906116dc565b91508080610e609061170f565b915050610dbc565b508091505090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6002602052805f5260405f205f915090505481565b610eb86110a2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f28575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f1f919061147d565b60405180910390fd5b610f3181611129565b50565b610f3c6110a2565b600160405180606001604052808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015550508273ffffffffffffffffffffffffffffffffffffffff167f07146ef3ff2146eaf34fa4d392d4c56663333b682654b3123bf270f9ec529f3183604051611035919061129f565b60405180910390a2505050565b5f600180549050905090565b6001818154811061105d575f80fd5b905f5260205f2090600302015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b6110aa6111ea565b73ffffffffffffffffffffffffffffffffffffffff166110c8610acc565b73ffffffffffffffffffffffffffffffffffffffff1614611127576110eb6111ea565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161111e919061147d565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61122b82611202565b9050919050565b61123b81611221565b8114611245575f80fd5b50565b5f8135905061125681611232565b92915050565b5f60208284031215611271576112706111fa565b5b5f61127e84828501611248565b91505092915050565b5f819050919050565b61129981611287565b82525050565b5f6020820190506112b25f830184611290565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611306826112c0565b810181811067ffffffffffffffff82111715611325576113246112d0565b5b80604052505050565b5f6113376111f1565b905061134382826112fd565b919050565b5f67ffffffffffffffff821115611362576113616112d0565b5b61136b826112c0565b9050602081019050919050565b828183375f83830152505050565b5f61139861139384611348565b61132e565b9050828152602081018484840111156113b4576113b36112bc565b5b6113bf848285611378565b509392505050565b5f82601f8301126113db576113da6112b8565b5b81356113eb848260208601611386565b91505092915050565b5f60208284031215611409576114086111fa565b5b5f82013567ffffffffffffffff811115611426576114256111fe565b5b611432848285016113c7565b91505092915050565b5f8115159050919050565b61144f8161143b565b82525050565b5f6020820190506114685f830184611446565b92915050565b61147781611221565b82525050565b5f6020820190506114905f83018461146e565b92915050565b5f819050919050565b5f6114b96114b46114af84611202565b611496565b611202565b9050919050565b5f6114ca8261149f565b9050919050565b5f6114db826114c0565b9050919050565b6114eb816114d1565b82525050565b5f6020820190506115045f8301846114e2565b92915050565b61151381611287565b811461151d575f80fd5b50565b5f8135905061152e8161150a565b92915050565b5f805f6060848603121561154b5761154a6111fa565b5b5f61155886828701611248565b935050602061156986828701611520565b925050604061157a86828701611520565b9150509250925092565b5f60208284031215611599576115986111fa565b5b5f6115a684828501611520565b91505092915050565b5f6060820190506115c25f83018661146e565b6115cf6020830185611290565b6115dc6040830184611290565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61164882611287565b915061165383611287565b925082820261166181611287565b9150828204841483151761167857611677611611565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6116b682611287565b91506116c183611287565b9250826116d1576116d061167f565b5b828204905092915050565b5f6116e682611287565b91506116f183611287565b925082820190508082111561170957611708611611565b5b92915050565b5f61171982611287565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361174b5761174a611611565b5b600182019050919050565b5f82825260208201905092915050565b7f4e65772061646472657373206973207468652073616d652061732074686520635f8201527f757272656e74206f6e6500000000000000000000000000000000000000000000602082015250565b5f6117c0602a83611756565b91506117cb82611766565b604082019050919050565b5f6020820190508181035f8301526117ed816117b4565b9050919050565b5f815190506118028161150a565b92915050565b5f6020828403121561181d5761181c6111fa565b5b5f61182a848285016117f4565b91505092915050565b5f61183d82611287565b915061184883611287565b92508282039050818111156118605761185f611611565b5b92915050565b5f81519050919050565b5f81905092915050565b5f5b8381101561189757808201518184015260208101905061187c565b5f8484015250505050565b5f6118ac82611866565b6118b68185611870565b93506118c681856020860161187a565b80840191505092915050565b5f6118dd82846118a2565b915081905092915050565b5f6118f282611866565b6118fc8185611756565b935061190c81856020860161187a565b611915816112c0565b840191505092915050565b5f6020820190508181035f83015261193881846118e8565b905092915050565b7f50656e64696e672061646472657373206973206e6f74207365740000000000005f82015250565b5f611974601a83611756565b915061197f82611940565b602082019050919050565b5f6020820190508181035f8301526119a181611968565b9050919050565b7f4e6f20746f6b656e732068656c640000000000000000000000000000000000005f82015250565b5f6119dc600e83611756565b91506119e7826119a8565b602082019050919050565b5f6020820190508181035f830152611a09816119d0565b9050919050565b7f4e6f2070726f6669747320746f20636c61696d000000000000000000000000005f82015250565b5f611a44601383611756565b9150611a4f82611a10565b602082019050919050565b5f6020820190508181035f830152611a7181611a38565b9050919050565b5f604082019050611a8b5f83018561146e565b611a986020830184611290565b9392505050565b611aa88161143b565b8114611ab2575f80fd5b50565b5f81519050611ac381611a9f565b92915050565b5f60208284031215611ade57611add6111fa565b5b5f611aeb84828501611ab5565b91505092915050565b7f50726f666974207472616e73666572206661696c6564000000000000000000005f82015250565b5f611b28601683611756565b9150611b3382611af4565b602082019050919050565b5f6020820190508181035f830152611b5581611b1c565b905091905056fea264697066735822122071285b6088851525f3b70648d4525c2121ddcdc944568b8ce79a24c63c6eb87964736f6c63430008140033
Deployed Bytecode Sourcemap
7046:3693:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8622:270;;;:::i;:::-;;9093:315;;;:::i;:::-;;7603:57;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7849:298;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9933:425;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7549:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:103;;;:::i;:::-;;8900:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8155:243;;;:::i;:::-;;5498:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9416:509;;;:::i;:::-;;7698:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10479:257;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7669:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7742:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7500:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6431:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8406:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10366:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7462:31;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8622:270;5384:13;:11;:13::i;:::-;8691:9:::1;8686:199;8710:11;:18;;;;8706:1;:22;8686:199;;;8750:14;8814:5;8791:11;8803:1;8791:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:20;;;8767:11;8779:1;8767:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;:44;;;;:::i;:::-;:52;;;;:::i;:::-;8750:69;;8867:6;8834:7;:29;8842:11;8854:1;8842:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:20;;;;;;;;;;;;8834:29;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;8735:150;8730:3;;;;;:::i;:::-;;;;8686:199;;;;8622:270::o:0;9093:315::-;5384:13;:11;:13::i;:::-;9150:19:::1;9189:9:::0;9184:168:::1;9208:11;:18;;;;9204:1;:22;9184:168;;;9263:7;:29;9271:11;9283:1;9271:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:20;;;;;;;;;;;;9263:29;;;;;;;;;;;;;;;;9248:44;;;;;:::i;:::-;;;9339:1;9307:7;:29;9315:11;9327:1;9315:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:20;;;;;;;;;;;;9307:29;;;;;;;;;;;;;;;:33;;;;9228:3;;;;;:::i;:::-;;;;9184:168;;;;9389:11;9362:23;;:38;;;;;;;:::i;:::-;;;;;;;;9139:269;9093:315::o:0;7603:57::-;;;;;;;;;;;;;;;;;:::o;7849:298::-;5384:13;:11;:13::i;:::-;7973:8:::1;;;;;;;;;;;7942:40;;:19;:40;;::::0;7934:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8065:19;8040:22;;:44;;;;;;;;;;;;;;;;;;8119:19;8100:39;;;;;;;;;;;;7849:298:::0;:::o;9933:425::-;9999:7;10019:21;10043:8;;;;;;;;;;;:18;;;10062:7;10043:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10019:51;;10081:19;10103:8;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10081:44;;10136:19;10200:11;10184:13;10158:23;;:39;;;;:::i;:::-;:53;;;;:::i;:::-;10136:75;;10222:19;10244:22;:31;10267:7;10244:31;;;;;;;;;;;;;;;;10222:53;;10307:11;10293;:25;:57;;10349:1;10293:57;;;10335:11;10321;:25;;;;:::i;:::-;10293:57;10286:64;;;;;;9933:425;;;:::o;7549:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6173:103::-;5384:13;:11;:13::i;:::-;6238:30:::1;6265:1;6238:18;:30::i;:::-;6173:103::o:0;8900:185::-;5384:13;:11;:13::i;:::-;9016:4:::1;8982:16;8999:13;8982:31;;;;;;:::i;:::-;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;9036:41;9063:13;9036:41;;;;;;:::i;:::-;;;;;;;;8900:185:::0;:::o;8155:243::-;5384:13;:11;:13::i;:::-;8259:1:::1;8225:36;;:22;;;;;;;;;;;:36;;::::0;8217:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8321:22;;;;;;;;;;;8303:8;;:41;;;;;;;;;;;;;;;;;;8388:1;8355:22;;:35;;;;;;;;;;;;;;;;;;8155:243::o:0;5498:87::-;5544:7;5571:6;;;;;;;;;;;5564:13;;5498:87;:::o;9416:509::-;9458:21;9482:8;;;;;;;;;;;:18;;;9501:10;9482:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9458:54;;9547:1;9531:13;:17;9523:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;9578:23;9604:30;9623:10;9604:18;:30::i;:::-;9578:56;;9671:1;9653:15;:19;9645:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9744:23;;9707:22;:34;9730:10;9707:34;;;;;;;;;;;;;;;:60;;;;9786:8;;;;;;;;;;;:17;;;9804:10;9816:15;9786:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9778:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;9889:10;9875:42;;;9901:15;9875:42;;;;;;:::i;:::-;;;;;;;;9447:478;;9416:509::o;7698:37::-;;;;;;;;;;;;;:::o;10479:257::-;10526:7;10546:19;10568:1;10546:23;;10585:9;10580:120;10604:11;:18;;;;10600:1;:22;10580:120;;;10659:7;:29;10667:11;10679:1;10667:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:20;;;;;;;;;;;;10659:29;;;;;;;;;;;;;;;;10644:44;;;;;:::i;:::-;;;10624:3;;;;;:::i;:::-;;;;10580:120;;;;10717:11;10710:18;;;10479:257;:::o;7669:22::-;;;;;;;;;;;;;:::o;7742:38::-;;;;:::o;7500:42::-;;;;;;;;;;;;;;;;;:::o;6431:220::-;5384:13;:11;:13::i;:::-;6536:1:::1;6516:22;;:8;:22;;::::0;6512:93:::1;;6590:1;6562:31;;;;;;;;;;;:::i;:::-;;;;;;;;6512:93;6615:28;6634:8;6615:18;:28::i;:::-;6431:220:::0;:::o;8406:208::-;5384:13;:11;:13::i;:::-;8506:11:::1;8523:35;;;;;;;;8534:6;8523:35;;;;;;8542:7;8523:35;;;;8551:6;8523:35;;::::0;8506:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8590:6;8575:31;;;8598:7;8575:31;;;;;;:::i;:::-;;;;;;;;8406:208:::0;;;:::o;10366:105::-;10418:7;10445:11;:18;;;;10438:25;;10366:105;:::o;7462:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5663:166::-;5734:12;:10;:12::i;:::-;5723:23;;:7;:5;:7::i;:::-;:23;;;5719:103;;5797:12;:10;:12::i;:::-;5770:40;;;;;;;;;;;:::i;:::-;;;;;;;;5719:103;5663:166::o;6811:191::-;6885:16;6904:6;;;;;;;;;;;6885:25;;6930:8;6921:6;;:17;;;;;;;;;;;;;;;;;;6985:8;6954:40;;6975:8;6954:40;;;;;;;;;;;;6874:128;6811:191;:::o;3614:98::-;3667:7;3694:10;3687:17;;3614:98;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:117::-;1720:1;1717;1710:12;1734:117;1843:1;1840;1833:12;1857:102;1898:6;1949:2;1945:7;1940:2;1933:5;1929:14;1925:28;1915:38;;1857:102;;;:::o;1965:180::-;2013:77;2010:1;2003:88;2110:4;2107:1;2100:15;2134:4;2131:1;2124:15;2151:281;2234:27;2256:4;2234:27;:::i;:::-;2226:6;2222:40;2364:6;2352:10;2349:22;2328:18;2316:10;2313:34;2310:62;2307:88;;;2375:18;;:::i;:::-;2307:88;2415:10;2411:2;2404:22;2194:238;2151:281;;:::o;2438:129::-;2472:6;2499:20;;:::i;:::-;2489:30;;2528:33;2556:4;2548:6;2528:33;:::i;:::-;2438:129;;;:::o;2573:308::-;2635:4;2725:18;2717:6;2714:30;2711:56;;;2747:18;;:::i;:::-;2711:56;2785:29;2807:6;2785:29;:::i;:::-;2777:37;;2869:4;2863;2859:15;2851:23;;2573:308;;;:::o;2887:146::-;2984:6;2979:3;2974;2961:30;3025:1;3016:6;3011:3;3007:16;3000:27;2887:146;;;:::o;3039:425::-;3117:5;3142:66;3158:49;3200:6;3158:49;:::i;:::-;3142:66;:::i;:::-;3133:75;;3231:6;3224:5;3217:21;3269:4;3262:5;3258:16;3307:3;3298:6;3293:3;3289:16;3286:25;3283:112;;;3314:79;;:::i;:::-;3283:112;3404:54;3451:6;3446:3;3441;3404:54;:::i;:::-;3123:341;3039:425;;;;;:::o;3484:340::-;3540:5;3589:3;3582:4;3574:6;3570:17;3566:27;3556:122;;3597:79;;:::i;:::-;3556:122;3714:6;3701:20;3739:79;3814:3;3806:6;3799:4;3791:6;3787:17;3739:79;:::i;:::-;3730:88;;3546:278;3484:340;;;;:::o;3830:509::-;3899:6;3948:2;3936:9;3927:7;3923:23;3919:32;3916:119;;;3954:79;;:::i;:::-;3916:119;4102:1;4091:9;4087:17;4074:31;4132:18;4124:6;4121:30;4118:117;;;4154:79;;:::i;:::-;4118:117;4259:63;4314:7;4305:6;4294:9;4290:22;4259:63;:::i;:::-;4249:73;;4045:287;3830:509;;;;:::o;4345:90::-;4379:7;4422:5;4415:13;4408:21;4397:32;;4345:90;;;:::o;4441:109::-;4522:21;4537:5;4522:21;:::i;:::-;4517:3;4510:34;4441:109;;:::o;4556:210::-;4643:4;4681:2;4670:9;4666:18;4658:26;;4694:65;4756:1;4745:9;4741:17;4732:6;4694:65;:::i;:::-;4556:210;;;;:::o;4772:118::-;4859:24;4877:5;4859:24;:::i;:::-;4854:3;4847:37;4772:118;;:::o;4896:222::-;4989:4;5027:2;5016:9;5012:18;5004:26;;5040:71;5108:1;5097:9;5093:17;5084:6;5040:71;:::i;:::-;4896:222;;;;:::o;5124:60::-;5152:3;5173:5;5166:12;;5124:60;;;:::o;5190:142::-;5240:9;5273:53;5291:34;5300:24;5318:5;5300:24;:::i;:::-;5291:34;:::i;:::-;5273:53;:::i;:::-;5260:66;;5190:142;;;:::o;5338:126::-;5388:9;5421:37;5452:5;5421:37;:::i;:::-;5408:50;;5338:126;;;:::o;5470:139::-;5533:9;5566:37;5597:5;5566:37;:::i;:::-;5553:50;;5470:139;;;:::o;5615:157::-;5715:50;5759:5;5715:50;:::i;:::-;5710:3;5703:63;5615:157;;:::o;5778:248::-;5884:4;5922:2;5911:9;5907:18;5899:26;;5935:84;6016:1;6005:9;6001:17;5992:6;5935:84;:::i;:::-;5778:248;;;;:::o;6032:122::-;6105:24;6123:5;6105:24;:::i;:::-;6098:5;6095:35;6085:63;;6144:1;6141;6134:12;6085:63;6032:122;:::o;6160:139::-;6206:5;6244:6;6231:20;6222:29;;6260:33;6287:5;6260:33;:::i;:::-;6160:139;;;;:::o;6305:619::-;6382:6;6390;6398;6447:2;6435:9;6426:7;6422:23;6418:32;6415:119;;;6453:79;;:::i;:::-;6415:119;6573:1;6598:53;6643:7;6634:6;6623:9;6619:22;6598:53;:::i;:::-;6588:63;;6544:117;6700:2;6726:53;6771:7;6762:6;6751:9;6747:22;6726:53;:::i;:::-;6716:63;;6671:118;6828:2;6854:53;6899:7;6890:6;6879:9;6875:22;6854:53;:::i;:::-;6844:63;;6799:118;6305:619;;;;;:::o;6930:329::-;6989:6;7038:2;7026:9;7017:7;7013:23;7009:32;7006:119;;;7044:79;;:::i;:::-;7006:119;7164:1;7189:53;7234:7;7225:6;7214:9;7210:22;7189:53;:::i;:::-;7179:63;;7135:117;6930:329;;;;:::o;7265:442::-;7414:4;7452:2;7441:9;7437:18;7429:26;;7465:71;7533:1;7522:9;7518:17;7509:6;7465:71;:::i;:::-;7546:72;7614:2;7603:9;7599:18;7590:6;7546:72;:::i;:::-;7628;7696:2;7685:9;7681:18;7672:6;7628:72;:::i;:::-;7265:442;;;;;;:::o;7713:180::-;7761:77;7758:1;7751:88;7858:4;7855:1;7848:15;7882:4;7879:1;7872:15;7899:180;7947:77;7944:1;7937:88;8044:4;8041:1;8034:15;8068:4;8065:1;8058:15;8085:410;8125:7;8148:20;8166:1;8148:20;:::i;:::-;8143:25;;8182:20;8200:1;8182:20;:::i;:::-;8177:25;;8237:1;8234;8230:9;8259:30;8277:11;8259:30;:::i;:::-;8248:41;;8438:1;8429:7;8425:15;8422:1;8419:22;8399:1;8392:9;8372:83;8349:139;;8468:18;;:::i;:::-;8349:139;8133:362;8085:410;;;;:::o;8501:180::-;8549:77;8546:1;8539:88;8646:4;8643:1;8636:15;8670:4;8667:1;8660:15;8687:185;8727:1;8744:20;8762:1;8744:20;:::i;:::-;8739:25;;8778:20;8796:1;8778:20;:::i;:::-;8773:25;;8817:1;8807:35;;8822:18;;:::i;:::-;8807:35;8864:1;8861;8857:9;8852:14;;8687:185;;;;:::o;8878:191::-;8918:3;8937:20;8955:1;8937:20;:::i;:::-;8932:25;;8971:20;8989:1;8971:20;:::i;:::-;8966:25;;9014:1;9011;9007:9;9000:16;;9035:3;9032:1;9029:10;9026:36;;;9042:18;;:::i;:::-;9026:36;8878:191;;;;:::o;9075:233::-;9114:3;9137:24;9155:5;9137:24;:::i;:::-;9128:33;;9183:66;9176:5;9173:77;9170:103;;9253:18;;:::i;:::-;9170:103;9300:1;9293:5;9289:13;9282:20;;9075:233;;;:::o;9314:169::-;9398:11;9432:6;9427:3;9420:19;9472:4;9467:3;9463:14;9448:29;;9314:169;;;;:::o;9489:229::-;9629:34;9625:1;9617:6;9613:14;9606:58;9698:12;9693:2;9685:6;9681:15;9674:37;9489:229;:::o;9724:366::-;9866:3;9887:67;9951:2;9946:3;9887:67;:::i;:::-;9880:74;;9963:93;10052:3;9963:93;:::i;:::-;10081:2;10076:3;10072:12;10065:19;;9724:366;;;:::o;10096:419::-;10262:4;10300:2;10289:9;10285:18;10277:26;;10349:9;10343:4;10339:20;10335:1;10324:9;10320:17;10313:47;10377:131;10503:4;10377:131;:::i;:::-;10369:139;;10096:419;;;:::o;10521:143::-;10578:5;10609:6;10603:13;10594:22;;10625:33;10652:5;10625:33;:::i;:::-;10521:143;;;;:::o;10670:351::-;10740:6;10789:2;10777:9;10768:7;10764:23;10760:32;10757:119;;;10795:79;;:::i;:::-;10757:119;10915:1;10940:64;10996:7;10987:6;10976:9;10972:22;10940:64;:::i;:::-;10930:74;;10886:128;10670:351;;;;:::o;11027:194::-;11067:4;11087:20;11105:1;11087:20;:::i;:::-;11082:25;;11121:20;11139:1;11121:20;:::i;:::-;11116:25;;11165:1;11162;11158:9;11150:17;;11189:1;11183:4;11180:11;11177:37;;;11194:18;;:::i;:::-;11177:37;11027:194;;;;:::o;11227:99::-;11279:6;11313:5;11307:12;11297:22;;11227:99;;;:::o;11332:148::-;11434:11;11471:3;11456:18;;11332:148;;;;:::o;11486:246::-;11567:1;11577:113;11591:6;11588:1;11585:13;11577:113;;;11676:1;11671:3;11667:11;11661:18;11657:1;11652:3;11648:11;11641:39;11613:2;11610:1;11606:10;11601:15;;11577:113;;;11724:1;11715:6;11710:3;11706:16;11699:27;11548:184;11486:246;;;:::o;11738:390::-;11844:3;11872:39;11905:5;11872:39;:::i;:::-;11927:89;12009:6;12004:3;11927:89;:::i;:::-;11920:96;;12025:65;12083:6;12078:3;12071:4;12064:5;12060:16;12025:65;:::i;:::-;12115:6;12110:3;12106:16;12099:23;;11848:280;11738:390;;;;:::o;12134:275::-;12266:3;12288:95;12379:3;12370:6;12288:95;:::i;:::-;12281:102;;12400:3;12393:10;;12134:275;;;;:::o;12415:377::-;12503:3;12531:39;12564:5;12531:39;:::i;:::-;12586:71;12650:6;12645:3;12586:71;:::i;:::-;12579:78;;12666:65;12724:6;12719:3;12712:4;12705:5;12701:16;12666:65;:::i;:::-;12756:29;12778:6;12756:29;:::i;:::-;12751:3;12747:39;12740:46;;12507:285;12415:377;;;;:::o;12798:313::-;12911:4;12949:2;12938:9;12934:18;12926:26;;12998:9;12992:4;12988:20;12984:1;12973:9;12969:17;12962:47;13026:78;13099:4;13090:6;13026:78;:::i;:::-;13018:86;;12798:313;;;;:::o;13117:176::-;13257:28;13253:1;13245:6;13241:14;13234:52;13117:176;:::o;13299:366::-;13441:3;13462:67;13526:2;13521:3;13462:67;:::i;:::-;13455:74;;13538:93;13627:3;13538:93;:::i;:::-;13656:2;13651:3;13647:12;13640:19;;13299:366;;;:::o;13671:419::-;13837:4;13875:2;13864:9;13860:18;13852:26;;13924:9;13918:4;13914:20;13910:1;13899:9;13895:17;13888:47;13952:131;14078:4;13952:131;:::i;:::-;13944:139;;13671:419;;;:::o;14096:164::-;14236:16;14232:1;14224:6;14220:14;14213:40;14096:164;:::o;14266:366::-;14408:3;14429:67;14493:2;14488:3;14429:67;:::i;:::-;14422:74;;14505:93;14594:3;14505:93;:::i;:::-;14623:2;14618:3;14614:12;14607:19;;14266:366;;;:::o;14638:419::-;14804:4;14842:2;14831:9;14827:18;14819:26;;14891:9;14885:4;14881:20;14877:1;14866:9;14862:17;14855:47;14919:131;15045:4;14919:131;:::i;:::-;14911:139;;14638:419;;;:::o;15063:169::-;15203:21;15199:1;15191:6;15187:14;15180:45;15063:169;:::o;15238:366::-;15380:3;15401:67;15465:2;15460:3;15401:67;:::i;:::-;15394:74;;15477:93;15566:3;15477:93;:::i;:::-;15595:2;15590:3;15586:12;15579:19;;15238:366;;;:::o;15610:419::-;15776:4;15814:2;15803:9;15799:18;15791:26;;15863:9;15857:4;15853:20;15849:1;15838:9;15834:17;15827:47;15891:131;16017:4;15891:131;:::i;:::-;15883:139;;15610:419;;;:::o;16035:332::-;16156:4;16194:2;16183:9;16179:18;16171:26;;16207:71;16275:1;16264:9;16260:17;16251:6;16207:71;:::i;:::-;16288:72;16356:2;16345:9;16341:18;16332:6;16288:72;:::i;:::-;16035:332;;;;;:::o;16373:116::-;16443:21;16458:5;16443:21;:::i;:::-;16436:5;16433:32;16423:60;;16479:1;16476;16469:12;16423:60;16373:116;:::o;16495:137::-;16549:5;16580:6;16574:13;16565:22;;16596:30;16620:5;16596:30;:::i;:::-;16495:137;;;;:::o;16638:345::-;16705:6;16754:2;16742:9;16733:7;16729:23;16725:32;16722:119;;;16760:79;;:::i;:::-;16722:119;16880:1;16905:61;16958:7;16949:6;16938:9;16934:22;16905:61;:::i;:::-;16895:71;;16851:125;16638:345;;;;:::o;16989:172::-;17129:24;17125:1;17117:6;17113:14;17106:48;16989:172;:::o;17167:366::-;17309:3;17330:67;17394:2;17389:3;17330:67;:::i;:::-;17323:74;;17406:93;17495:3;17406:93;:::i;:::-;17524:2;17519:3;17515:12;17508:19;;17167:366;;;:::o;17539:419::-;17705:4;17743:2;17732:9;17728:18;17720:26;;17792:9;17786:4;17782:20;17778:1;17767:9;17763:17;17756:47;17820:131;17946:4;17820:131;:::i;:::-;17812:139;;17539:419;;;:::o
Swarm Source
ipfs://71285b6088851525f3b70648d4525c2121ddcdc944568b8ce79a24c63c6eb879
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.