Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
FeeDistributorProxy
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-16 */ // File: @openzeppelin/contracts-ethereum-package/contracts/Initializable.sol pragma solidity >=0.4.24 <0.7.0; /** * @title Initializable * * @dev Helper contract to support initializer functions. To use it, replace * the constructor with a function that has the `initializer` modifier. * WARNING: Unlike constructors, initializer functions must be manually * invoked. This applies both to deploying an Initializable contract, as well * as extending an Initializable contract via inheritance. * WARNING: When used with inheritance, manual care must be taken to not invoke * a parent initializer twice, or ensure that all initializers are idempotent, * because this is not dealt with automatically as with constructors. */ contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private initializing; /** * @dev Modifier to use in the initializer function of a contract. */ modifier initializer() { require( initializing || isConstructor() || !initialized, "Contract instance has already been initialized" ); bool isTopLevelCall = !initializing; if (isTopLevelCall) { initializing = true; initialized = true; } _; if (isTopLevelCall) { initializing = false; } } /// @dev Returns true if and only if the function is running in the constructor function isConstructor() private view returns (bool) { // extcodesize checks the size of the code stored in an address, and // address returns the current address. Since the code is still not // deployed when running a constructor, any checks on its code size will // yield zero, making it an effective way to detect if a contract is // under construction or not. address self = address(this); uint256 cs; assembly { cs := extcodesize(self) } return cs == 0; } // Reserved storage space to allow for layout changes in the future. uint256[50] private ______gap; } // File: @openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract ContextUpgradeSafe is Initializable { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. function __Context_init() internal initializer { __Context_init_unchained(); } function __Context_init_unchained() internal initializer {} function _msgSender() internal virtual view returns (address payable) { return msg.sender; } function _msgData() internal virtual view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } uint256[50] private __gap; } // File: @openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol pragma solidity ^0.6.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract OwnableUpgradeSafe is Initializable, ContextUpgradeSafe { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ function __Ownable_init() internal initializer { __Context_init_unchained(); __Ownable_init_unchained(); } function __Ownable_init_unchained() internal initializer { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } uint256[49] private __gap; } // File: @openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: contracts/IPISVault.sol pragma solidity 0.6.12; interface IPISVault { function updatePendingRewards() external; function depositFor( address _depositFor, uint256 _pid, uint256 _amount ) external; function poolInfo(uint256 _pid) external view returns ( address, uint256, uint256, uint256, bool, uint256, uint256, uint256, uint256 ); } // File: contracts/INoFeeSimple.sol pragma solidity 0.6.12; interface INoFeeSimple { function noFeeList(address) external view returns (bool); } // File: contracts/IPISBaseToken.sol pragma solidity 0.6.12; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IPISBaseToken { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) 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 `amount` 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 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @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 ); event Log(string log); } interface IPISBaseTokenEx is IPISBaseToken { function devFundAddress() external view returns (address); function transferCheckerAddress() external view returns (address); function feeDistributor() external view returns (address); } // File: contracts/FeeDistributorProxy.sol pragma solidity 0.6.12; interface IUpdateReward { function updatePendingRewards() external; } interface IEpochController { function epoch() external view returns (uint256); function nextEpochPoint() external view returns (uint256); function nextEpochLength() external view returns (uint256); function nextEpochAllocatedReward(address _pool) external view returns (uint256); } interface IStakePoolEpochReward { function allocateReward(uint256 _amount) external; } contract FeeDistributorProxy is OwnableUpgradeSafe, IPISVault, IEpochController { using SafeMath for uint256; IUpdateReward public vault; IUpdateReward public stakingPool; address public faasPool; IPISBaseTokenEx public pis; uint256[3] public allocations; //vault, staking, faaspool uint256 public _epoch = 0; uint256 public epochLength = 3 hours; uint256 public lastEpochTime; address public allocator; function initialize(address _staking) public initializer { OwnableUpgradeSafe.__Ownable_init(); stakingPool = IUpdateReward(_staking); vault = IUpdateReward(0xe3ABb69c22792Ba841450C61060367a539434724); pis = IPISBaseTokenEx(0x834cE7aD163ab3Be0C5Fd4e0a81E67aC8f51E00C); allocations[0] = 80; allocations[1] = 20; allocations[2] = 0; require( INoFeeSimple(pis.transferCheckerAddress()).noFeeList(address(this)), "!Distributor should not have fee" ); } function setAllocations(uint256[] calldata _allocations) external onlyOwner { require(_allocations.length == 3); allocations[0] = _allocations[0]; allocations[1] = _allocations[1]; allocations[2] = _allocations[2]; require(allocations[0].add(allocations[1].add(allocations[2])) == 100); } function epoch() external override view returns (uint256) { return _epoch; } function setFaasPool(address _pool) external onlyOwner { faasPool = _pool; } function nextEpochPoint() external override view returns (uint256) { return lastEpochTime + nextEpochLength(); } function nextEpochLength() public override view returns (uint256) { return epochLength; } function setEpochLength(uint256 _period) external onlyOwner { epochLength = _period; } function updatePendingRewards() external override { if (block.timestamp >= lastEpochTime.add(epochLength)) { doUpdatePendingRewards(); } } function doUpdatePendingRewards() public { uint256 balance = nextEpochAllocatedReward(faasPool); uint256 stakingRewards = balance.mul(allocations[1]).div(100); uint256 vaultRewards = balance.mul(allocations[0]).div(100); uint256 faasPoolRewards = balance.sub(stakingRewards).sub(vaultRewards); if (faasPool == address(0) && faasPoolRewards != 0) { vaultRewards = vaultRewards.add(faasPoolRewards); } pis.transfer(address(vault), vaultRewards); vault.updatePendingRewards(); pis.transfer(address(stakingPool), stakingRewards); stakingPool.updatePendingRewards(); if (faasPoolRewards > 0 && faasPool != address(0)) { pis.approve(faasPool, faasPoolRewards); IStakePoolEpochReward(faasPool).allocateReward(faasPoolRewards); } _epoch = _epoch + 1; lastEpochTime = block.timestamp; } function nextEpochAllocatedReward(address pool) public override view returns (uint256) { return pis.balanceOf(address(this)); } function depositFor( address _depositFor, uint256 _pid, uint256 _amount ) external override {} function poolInfo(uint256 _pid) external override view returns ( address, uint256, uint256, uint256, bool, uint256, uint256, uint256, uint256 ) { return (address(0), 0, 0, 0, false, 0, 0, 0, 0); } }
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"},{"inputs":[],"name":"_epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allocations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositFor","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"doUpdatePendingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"faasPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staking","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastEpochTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"nextEpochAllocatedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextEpochLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextEpochPoint","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":"pis","outputs":[{"internalType":"contract IPISBaseTokenEx","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_allocations","type":"uint256[]"}],"name":"setAllocations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setEpochLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"setFaasPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingPool","outputs":[{"internalType":"contract IUpdateReward","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePendingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IUpdateReward","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526000609e55612a30609f5534801561001b57600080fd5b506113d88061002b6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806391eadd21116100c3578063c5967c261161007c578063c5967c2614610399578063d673f4c3146103a1578063dfb4b724146103a9578063f2fde38b146103b1578063faa1809e146103d7578063fbfa77cf146103df57610158565b806391eadd21146102c5578063aa5dcecc146102cd578063acfe6279146102d5578063af67d0a2146102dd578063c498c51514610303578063c4d66de81461037357610158565b806357d775f81161011557806357d775f814610277578063715018a61461027f5780637effa5b61461028757806389c614b8146102ad5780638da5cb5b146102b5578063900cf0cf146102bd57610158565b806307284ce91461015d5780630a2642bf146101775780630c56ae3b146101945780631526fe27146101b85780634cf5fbf51461022657806354eea7961461025a575b600080fd5b6101656103e7565b60408051918252519081900360200190f35b6101656004803603602081101561018d57600080fd5b50356103ed565b61019c610401565b604080516001600160a01b039092168252519081900360200190f35b6101d5600480360360208110156101ce57600080fd5b5035610410565b604080516001600160a01b03909a168a5260208a0198909852888801969096526060880194909452911515608087015260a086015260c085015260e084015261010083015251908190036101200190f35b6102586004803603606081101561023c57600080fd5b506001600160a01b038135169060208101359060400135610426565b005b6102586004803603602081101561027057600080fd5b503561042b565b610165610488565b61025861048e565b6101656004803603602081101561029d57600080fd5b50356001600160a01b0316610530565b6101656105ad565b61019c6105b3565b6101656105c2565b61019c6105c8565b61019c6105d7565b6102586105e6565b610258600480360360208110156102f357600080fd5b50356001600160a01b031661095d565b6102586004803603602081101561031957600080fd5b81019060208101813564010000000081111561033457600080fd5b82018360208201111561034657600080fd5b8035906020019184602083028401116401000000008311171561036857600080fd5b5090925090506109d7565b6102586004803603602081101561038957600080fd5b50356001600160a01b0316610ada565b610165610d2d565b610165610d40565b61019c610d46565b610258600480360360208110156103c757600080fd5b50356001600160a01b0316610d55565b610258610e4e565b61019c610e6d565b609f5490565b609b81600381106103fa57fe5b0154905081565b6098546001600160a01b031681565b5060009081908190819081908190819081908190565b505050565b610433610e7c565b6065546001600160a01b03908116911614610483576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b609f55565b609f5481565b610496610e7c565b6065546001600160a01b039081169116146104e6576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b609a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561057b57600080fd5b505afa15801561058f573d6000803e3d6000fd5b505050506040513d60208110156105a557600080fd5b505192915050565b60a05481565b6065546001600160a01b031690565b609e5490565b609a546001600160a01b031681565b60a1546001600160a01b031681565b6099546000906105fe906001600160a01b0316610530565b9050600061061d6064610617609b600101548590610e80565b90610ee2565b905060006106356064610617609b8401548690610e80565b9050600061064d826106478686610f24565b90610f24565b6099549091506001600160a01b031615801561066857508015155b1561067a576106778282610f66565b91505b609a546097546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156106d357600080fd5b505af11580156106e7573d6000803e3d6000fd5b505050506040513d60208110156106fd57600080fd5b505060975460408051637d50c04f60e11b815290516001600160a01b039092169163faa1809e9160048082019260009290919082900301818387803b15801561074557600080fd5b505af1158015610759573d6000803e3d6000fd5b5050609a546098546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101899052905191909216935063a9059cbb925060448083019260209291908290030181600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b505050506040513d60208110156107e057600080fd5b505060985460408051637d50c04f60e11b815290516001600160a01b039092169163faa1809e9160048082019260009290919082900301818387803b15801561082857600080fd5b505af115801561083c573d6000803e3d6000fd5b5050505060008111801561085a57506099546001600160a01b031615155b1561094a57609a546099546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b505050506040513d60208110156108e257600080fd5b50506099546040805163716e5b0b60e11b81526004810184905290516001600160a01b039092169163e2dcb6169160248082019260009290919082900301818387803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050505b5050609e8054600101905550504260a055565b610965610e7c565b6065546001600160a01b039081169116146109b5576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b609980546001600160a01b0319166001600160a01b0392909216919091179055565b6109df610e7c565b6065546001600160a01b03908116911614610a2f576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b60038114610a3c57600080fd5b81816000818110610a4957fe5b90506020020135609b600060038110610a5e57fe5b015581816001818110610a6d57fe5b90506020020135609b600160038110610a8257fe5b015581816002818110610a9157fe5b90506020020135609b600260038110610aa657fe5b0155610aca610ac1609b60020154609b60015b015490610f66565b609b6000610ab9565b606414610ad657600080fd5b5050565b600054610100900460ff1680610af35750610af3610fc0565b80610b01575060005460ff16155b610b3c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611375602e913960400191505060405180910390fd5b600054610100900460ff16158015610b67576000805460ff1961ff0019909116610100171660011790555b610b6f610fc6565b609880546001600160a01b0384166001600160a01b03199182161790915560978054821673e3abb69c22792ba841450c61060367a539434724179055609a805490911673834ce7ad163ab3be0c5fd4e0a81e67ac8f51e00c1790556050609b600001556014609b600101556000609b60020155609a546040805163b2aef26b60e01b815290516001600160a01b039092169163b2aef26b91600480820192602092909190829003018186803b158015610c2757600080fd5b505afa158015610c3b573d6000803e3d6000fd5b505050506040513d6020811015610c5157600080fd5b5051604080516308aa1ff760e41b815230600482015290516001600160a01b0390921691638aa1ff7091602480820192602092909190829003018186803b158015610c9b57600080fd5b505afa158015610caf573d6000803e3d6000fd5b505050506040513d6020811015610cc557600080fd5b5051610d18576040805162461bcd60e51b815260206004820181905260248201527f214469737472696275746f722073686f756c64206e6f74206861766520666565604482015290519081900360640190fd5b8015610ad6576000805461ff00191690555050565b6000610d376103e7565b60a05401905090565b609e5481565b6099546001600160a01b031681565b610d5d610e7c565b6065546001600160a01b03908116911614610dad576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b6001600160a01b038116610df25760405162461bcd60e51b815260040180806020018281038252602681526020018061130e6026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b609f5460a054610e5d91610f66565b4210610e6b57610e6b6105e6565b565b6097546001600160a01b031681565b3390565b600082610e8f57506000610edc565b82820282848281610e9c57fe5b0414610ed95760405162461bcd60e51b81526004018080602001828103825260218152602001806113346021913960400191505060405180910390fd5b90505b92915050565b6000610ed983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611078565b6000610ed983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061111a565b600082820183811015610ed9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b303b1590565b600054610100900460ff1680610fdf5750610fdf610fc0565b80610fed575060005460ff16155b6110285760405162461bcd60e51b815260040180806020018281038252602e815260200180611375602e913960400191505060405180910390fd5b600054610100900460ff16158015611053576000805460ff1961ff0019909116610100171660011790555b61105b611174565b611063611214565b8015611075576000805461ff00191690555b50565b600081836111045760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110c95781810151838201526020016110b1565b50505050905090810190601f1680156110f65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161111057fe5b0495945050505050565b6000818484111561116c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110c95781810151838201526020016110b1565b505050900390565b600054610100900460ff168061118d575061118d610fc0565b8061119b575060005460ff16155b6111d65760405162461bcd60e51b815260040180806020018281038252602e815260200180611375602e913960400191505060405180910390fd5b600054610100900460ff16158015611063576000805460ff1961ff0019909116610100171660011790558015611075576000805461ff001916905550565b600054610100900460ff168061122d575061122d610fc0565b8061123b575060005460ff16155b6112765760405162461bcd60e51b815260040180806020018281038252602e815260200180611375602e913960400191505060405180910390fd5b600054610100900460ff161580156112a1576000805460ff1961ff0019909116610100171660011790555b60006112ab610e7c565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611075576000805461ff00191690555056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212209786923ad83d3fc4b2b128bd2a7e2f4a60bb47ca29f613ec43da7f3d4a49c2d264736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c806391eadd21116100c3578063c5967c261161007c578063c5967c2614610399578063d673f4c3146103a1578063dfb4b724146103a9578063f2fde38b146103b1578063faa1809e146103d7578063fbfa77cf146103df57610158565b806391eadd21146102c5578063aa5dcecc146102cd578063acfe6279146102d5578063af67d0a2146102dd578063c498c51514610303578063c4d66de81461037357610158565b806357d775f81161011557806357d775f814610277578063715018a61461027f5780637effa5b61461028757806389c614b8146102ad5780638da5cb5b146102b5578063900cf0cf146102bd57610158565b806307284ce91461015d5780630a2642bf146101775780630c56ae3b146101945780631526fe27146101b85780634cf5fbf51461022657806354eea7961461025a575b600080fd5b6101656103e7565b60408051918252519081900360200190f35b6101656004803603602081101561018d57600080fd5b50356103ed565b61019c610401565b604080516001600160a01b039092168252519081900360200190f35b6101d5600480360360208110156101ce57600080fd5b5035610410565b604080516001600160a01b03909a168a5260208a0198909852888801969096526060880194909452911515608087015260a086015260c085015260e084015261010083015251908190036101200190f35b6102586004803603606081101561023c57600080fd5b506001600160a01b038135169060208101359060400135610426565b005b6102586004803603602081101561027057600080fd5b503561042b565b610165610488565b61025861048e565b6101656004803603602081101561029d57600080fd5b50356001600160a01b0316610530565b6101656105ad565b61019c6105b3565b6101656105c2565b61019c6105c8565b61019c6105d7565b6102586105e6565b610258600480360360208110156102f357600080fd5b50356001600160a01b031661095d565b6102586004803603602081101561031957600080fd5b81019060208101813564010000000081111561033457600080fd5b82018360208201111561034657600080fd5b8035906020019184602083028401116401000000008311171561036857600080fd5b5090925090506109d7565b6102586004803603602081101561038957600080fd5b50356001600160a01b0316610ada565b610165610d2d565b610165610d40565b61019c610d46565b610258600480360360208110156103c757600080fd5b50356001600160a01b0316610d55565b610258610e4e565b61019c610e6d565b609f5490565b609b81600381106103fa57fe5b0154905081565b6098546001600160a01b031681565b5060009081908190819081908190819081908190565b505050565b610433610e7c565b6065546001600160a01b03908116911614610483576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b609f55565b609f5481565b610496610e7c565b6065546001600160a01b039081169116146104e6576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b609a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561057b57600080fd5b505afa15801561058f573d6000803e3d6000fd5b505050506040513d60208110156105a557600080fd5b505192915050565b60a05481565b6065546001600160a01b031690565b609e5490565b609a546001600160a01b031681565b60a1546001600160a01b031681565b6099546000906105fe906001600160a01b0316610530565b9050600061061d6064610617609b600101548590610e80565b90610ee2565b905060006106356064610617609b8401548690610e80565b9050600061064d826106478686610f24565b90610f24565b6099549091506001600160a01b031615801561066857508015155b1561067a576106778282610f66565b91505b609a546097546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156106d357600080fd5b505af11580156106e7573d6000803e3d6000fd5b505050506040513d60208110156106fd57600080fd5b505060975460408051637d50c04f60e11b815290516001600160a01b039092169163faa1809e9160048082019260009290919082900301818387803b15801561074557600080fd5b505af1158015610759573d6000803e3d6000fd5b5050609a546098546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101899052905191909216935063a9059cbb925060448083019260209291908290030181600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b505050506040513d60208110156107e057600080fd5b505060985460408051637d50c04f60e11b815290516001600160a01b039092169163faa1809e9160048082019260009290919082900301818387803b15801561082857600080fd5b505af115801561083c573d6000803e3d6000fd5b5050505060008111801561085a57506099546001600160a01b031615155b1561094a57609a546099546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b505050506040513d60208110156108e257600080fd5b50506099546040805163716e5b0b60e11b81526004810184905290516001600160a01b039092169163e2dcb6169160248082019260009290919082900301818387803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050505b5050609e8054600101905550504260a055565b610965610e7c565b6065546001600160a01b039081169116146109b5576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b609980546001600160a01b0319166001600160a01b0392909216919091179055565b6109df610e7c565b6065546001600160a01b03908116911614610a2f576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b60038114610a3c57600080fd5b81816000818110610a4957fe5b90506020020135609b600060038110610a5e57fe5b015581816001818110610a6d57fe5b90506020020135609b600160038110610a8257fe5b015581816002818110610a9157fe5b90506020020135609b600260038110610aa657fe5b0155610aca610ac1609b60020154609b60015b015490610f66565b609b6000610ab9565b606414610ad657600080fd5b5050565b600054610100900460ff1680610af35750610af3610fc0565b80610b01575060005460ff16155b610b3c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611375602e913960400191505060405180910390fd5b600054610100900460ff16158015610b67576000805460ff1961ff0019909116610100171660011790555b610b6f610fc6565b609880546001600160a01b0384166001600160a01b03199182161790915560978054821673e3abb69c22792ba841450c61060367a539434724179055609a805490911673834ce7ad163ab3be0c5fd4e0a81e67ac8f51e00c1790556050609b600001556014609b600101556000609b60020155609a546040805163b2aef26b60e01b815290516001600160a01b039092169163b2aef26b91600480820192602092909190829003018186803b158015610c2757600080fd5b505afa158015610c3b573d6000803e3d6000fd5b505050506040513d6020811015610c5157600080fd5b5051604080516308aa1ff760e41b815230600482015290516001600160a01b0390921691638aa1ff7091602480820192602092909190829003018186803b158015610c9b57600080fd5b505afa158015610caf573d6000803e3d6000fd5b505050506040513d6020811015610cc557600080fd5b5051610d18576040805162461bcd60e51b815260206004820181905260248201527f214469737472696275746f722073686f756c64206e6f74206861766520666565604482015290519081900360640190fd5b8015610ad6576000805461ff00191690555050565b6000610d376103e7565b60a05401905090565b609e5481565b6099546001600160a01b031681565b610d5d610e7c565b6065546001600160a01b03908116911614610dad576040805162461bcd60e51b81526020600482018190526024820152600080516020611355833981519152604482015290519081900360640190fd5b6001600160a01b038116610df25760405162461bcd60e51b815260040180806020018281038252602681526020018061130e6026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b609f5460a054610e5d91610f66565b4210610e6b57610e6b6105e6565b565b6097546001600160a01b031681565b3390565b600082610e8f57506000610edc565b82820282848281610e9c57fe5b0414610ed95760405162461bcd60e51b81526004018080602001828103825260218152602001806113346021913960400191505060405180910390fd5b90505b92915050565b6000610ed983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611078565b6000610ed983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061111a565b600082820183811015610ed9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b303b1590565b600054610100900460ff1680610fdf5750610fdf610fc0565b80610fed575060005460ff16155b6110285760405162461bcd60e51b815260040180806020018281038252602e815260200180611375602e913960400191505060405180910390fd5b600054610100900460ff16158015611053576000805460ff1961ff0019909116610100171660011790555b61105b611174565b611063611214565b8015611075576000805461ff00191690555b50565b600081836111045760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110c95781810151838201526020016110b1565b50505050905090810190601f1680156110f65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161111057fe5b0495945050505050565b6000818484111561116c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110c95781810151838201526020016110b1565b505050900390565b600054610100900460ff168061118d575061118d610fc0565b8061119b575060005460ff16155b6111d65760405162461bcd60e51b815260040180806020018281038252602e815260200180611375602e913960400191505060405180910390fd5b600054610100900460ff16158015611063576000805460ff1961ff0019909116610100171660011790558015611075576000805461ff001916905550565b600054610100900460ff168061122d575061122d610fc0565b8061123b575060005460ff16155b6112765760405162461bcd60e51b815260040180806020018281038252602e815260200180611375602e913960400191505060405180910390fd5b600054610100900460ff161580156112a1576000805460ff1961ff0019909116610100171660011790555b60006112ab610e7c565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611075576000805461ff00191690555056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212209786923ad83d3fc4b2b128bd2a7e2f4a60bb47ca29f613ec43da7f3d4a49c2d264736f6c634300060c0033
Deployed Bytecode Sourcemap
16334:3816:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18084:103;;;:::i;:::-;;;;;;;;;;;;;;;;16605:29;;;;;;;;;;;;;;;;-1:-1:-1;16605:29:0;;:::i;16503:32::-;;;:::i;:::-;;;;-1:-1:-1;;;;;16503:32:0;;;;;;;;;;;;;;19770:377;;;;;;;;;;;;;;;;-1:-1:-1;19770:377:0;;:::i;:::-;;;;-1:-1:-1;;;;;19770:377:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19636:126;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19636:126:0;;;;;;;;;;;;;:::i;:::-;;18195:100;;;;;;;;;;;;;;;;-1:-1:-1;18195:100:0;;:::i;16702:36::-;;;:::i;5707:148::-;;;:::i;19446:182::-;;;;;;;;;;;;;;;;-1:-1:-1;19446:182:0;-1:-1:-1;;;;;19446:182:0;;:::i;16745:28::-;;;:::i;5065:79::-;;;:::i;17754:90::-;;;:::i;16572:26::-;;;:::i;16780:24::-;;;:::i;18485:953::-;;;:::i;17852:90::-;;;;;;;;;;;;;;;;-1:-1:-1;17852:90:0;-1:-1:-1;;;;;17852:90:0;;:::i;17385:361::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17385:361:0;;-1:-1:-1;17385:361:0;-1:-1:-1;17385:361:0;:::i;16813:564::-;;;;;;;;;;;;;;;;-1:-1:-1;16813:564:0;-1:-1:-1;;;;;16813:564:0;;:::i;17950:126::-;;;:::i;16670:25::-;;;:::i;16542:23::-;;;:::i;6010:281::-;;;;;;;;;;;;;;;;-1:-1:-1;6010:281:0;-1:-1:-1;;;;;6010:281:0;;:::i;18303:174::-;;;:::i;16470:26::-;;;:::i;18084:103::-;18168:11;;18084:103;:::o;16605:29::-;;;;;;;;;;;;;-1:-1:-1;16605:29:0;:::o;16503:32::-;;;-1:-1:-1;;;;;16503:32:0;;:::o;19770:377::-;-1:-1:-1;19884:7:0;;;;;;;;;;;;;;;;;;19770:377::o;19636:126::-;;;;:::o;18195:100::-;5287:12;:10;:12::i;:::-;5277:6;;-1:-1:-1;;;;;5277:6:0;;;:22;;;5269:67;;;;;-1:-1:-1;;;5269:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5269:67:0;;;;;;;;;;;;;;;18266:11:::1;:21:::0;18195:100::o;16702:36::-;;;;:::o;5707:148::-;5287:12;:10;:12::i;:::-;5277:6;;-1:-1:-1;;;;;5277:6:0;;;:22;;;5269:67;;;;;-1:-1:-1;;;5269:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5269:67:0;;;;;;;;;;;;;;;5798:6:::1;::::0;5777:40:::1;::::0;5814:1:::1;::::0;-1:-1:-1;;;;;5798:6:0::1;::::0;5777:40:::1;::::0;5814:1;;5777:40:::1;5828:6;:19:::0;;-1:-1:-1;;;;;;5828:19:0::1;::::0;;5707:148::o;19446:182::-;19592:3;;:28;;;-1:-1:-1;;;19592:28:0;;19614:4;19592:28;;;;;;19560:7;;-1:-1:-1;;;;;19592:3:0;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19592:28:0;;19446:182;-1:-1:-1;;19446:182:0:o;16745:28::-;;;;:::o;5065:79::-;5130:6;;-1:-1:-1;;;;;5130:6:0;5065:79;:::o;17754:90::-;17830:6;;17754:90;:::o;16572:26::-;;;-1:-1:-1;;;;;16572:26:0;;:::o;16780:24::-;;;-1:-1:-1;;;;;16780:24:0;;:::o;18485:953::-;18580:8;;18537:15;;18555:34;;-1:-1:-1;;;;;18580:8:0;18555:24;:34::i;:::-;18537:52;-1:-1:-1;18600:22:0;18625:36;18657:3;18625:27;18637:11;18649:1;18637:14;;18625:7;;:11;:27::i;:::-;:31;;:36::i;:::-;18600:61;-1:-1:-1;18672:20:0;18695:36;18727:3;18695:27;18707:11;18672:20;18707:14;;18695:7;;:11;:27::i;:36::-;18672:59;-1:-1:-1;18742:23:0;18768:45;18672:59;18768:27;:7;18780:14;18768:11;:27::i;:::-;:31;;:45::i;:::-;18828:8;;18742:71;;-1:-1:-1;;;;;;18828:8:0;:22;:46;;;;-1:-1:-1;18854:20:0;;;18828:46;18824:127;;;18906:33;:12;18923:15;18906:16;:33::i;:::-;18891:48;;18824:127;18963:3;;18984:5;;18963:42;;;-1:-1:-1;;;18963:42:0;;-1:-1:-1;;;;;18984:5:0;;;18963:42;;;;;;;;;;;;:3;;;;;:12;;:42;;;;;;;;;;;;;;:3;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19016:5:0;;:28;;;-1:-1:-1;;;19016:28:0;;;;-1:-1:-1;;;;;19016:5:0;;;;:26;;:28;;;;;:5;;:28;;;;;;;;:5;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19057:3:0;;19078:11;;19057:50;;;-1:-1:-1;;;19057:50:0;;-1:-1:-1;;;;;19078:11:0;;;19057:50;;;;;;;;;;;;:3;;;;;-1:-1:-1;19057:12:0;;-1:-1:-1;19057:50:0;;;;;;;;;;;;;;:3;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19118:11:0;;:34;;;-1:-1:-1;;;19118:34:0;;;;-1:-1:-1;;;;;19118:11:0;;;;:32;;:34;;;;;:11;;:34;;;;;;;;:11;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19187:1;19169:15;:19;:45;;;;-1:-1:-1;19192:8:0;;-1:-1:-1;;;;;19192:8:0;:22;;19169:45;19165:194;;;19231:3;;19243:8;;19231:38;;;-1:-1:-1;;;19231:38:0;;-1:-1:-1;;;;;19243:8:0;;;19231:38;;;;;;;;;;;;:3;;;;;:11;;:38;;;;;;;;;;;;;;:3;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19306:8:0;;19284:63;;;-1:-1:-1;;;19284:63:0;;;;;;;;;;-1:-1:-1;;;;;19306:8:0;;;;19284:46;;:63;;;;;19306:8;;19284:63;;;;;;;;19306:8;;19284:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19165:194;-1:-1:-1;;19378:6:0;;;19387:1;19378:10;19369:19;;-1:-1:-1;;19415:15:0;19399:13;:31;18485:953::o;17852:90::-;5287:12;:10;:12::i;:::-;5277:6;;-1:-1:-1;;;;;5277:6:0;;;:22;;;5269:67;;;;;-1:-1:-1;;;5269:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5269:67:0;;;;;;;;;;;;;;;17918:8:::1;:16:::0;;-1:-1:-1;;;;;;17918:16:0::1;-1:-1:-1::0;;;;;17918:16:0;;;::::1;::::0;;;::::1;::::0;;17852:90::o;17385:361::-;5287:12;:10;:12::i;:::-;5277:6;;-1:-1:-1;;;;;5277:6:0;;;:22;;;5269:67;;;;;-1:-1:-1;;;5269:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5269:67:0;;;;;;;;;;;;;;;17526:1:::1;17503:24:::0;::::1;17495:33;;;::::0;::::1;;17556:12;;17569:1;17556:15;;;;;;;;;;;;;17539:11;17551:1;17539:14;;;;;;;;:32:::0;17599:12;;17612:1:::1;17599:15:::0;;::::1;;;;;;;;;;;17582:11;17594:1;17582:14;;;;;;;;:32:::0;17642:12;;17655:1:::1;17642:15:::0;;::::1;;;;;;;;;;;17625:11;17637:1;17625:14;;;;;;;;:32:::0;17676:54:::1;17695:34;17714:11;17726:1;17714:14;::::0;17695:11:::1;17707:1;17695:14;;::::0;;:18:::1;:34::i;:::-;17676:11;17688:1;17676:14;::::0;:54:::1;17734:3;17676:61;17668:70;;;::::0;::::1;;17385:361:::0;;:::o;16813:564::-;1174:12;;;;;;;;:31;;;1190:15;:13;:15::i;:::-;1174:47;;;-1:-1:-1;1210:11:0;;;;1209:12;1174:47;1152:143;;;;-1:-1:-1;;;1152:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1308:19;1331:12;;;;;;1330:13;1354:99;;;;1389:12;:19;;-1:-1:-1;;;;1389:19:0;;;;;1423:18;1404:4;1423:18;;;1354:99;16881:35:::1;:33;:35::i;:::-;16927:11;:37:::0;;-1:-1:-1;;;;;16927:37:0;::::1;-1:-1:-1::0;;;;;;16927:37:0;;::::1;;::::0;;;16977:5:::1;:65:::0;;;::::1;16999:42;16977:65;::::0;;17053:3:::1;:65:::0;;;;::::1;17075:42;17053:65;::::0;;17146:2:::1;17129:11;16927;17129:14;:19:::0;17176:2:::1;17159:11;17171:1;17159:14;:19:::0;17206:1:::1;17189:11;17201:1;17189:14;:18:::0;17255:3:::1;::::0;:28:::1;::::0;;-1:-1:-1;;;17255:28:0;;;;-1:-1:-1;;;;;17255:3:0;;::::1;::::0;:26:::1;::::0;:28:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:3;:28;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17255:28:0;17242:67:::1;::::0;;-1:-1:-1;;;17242:67:0;;17303:4:::1;17242:67;::::0;::::1;::::0;;;-1:-1:-1;;;;;17242:52:0;;::::1;::::0;::::1;::::0;:67;;;;;17255:28:::1;::::0;17242:67;;;;;;;;:52;:67;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17242:67:0;17220:149:::1;;;::::0;;-1:-1:-1;;;17220:149:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;1483:14:::0;1479:67;;;1529:5;1514:20;;-1:-1:-1;;1514:20:0;;;16813:564;;:::o;17950:126::-;18008:7;18051:17;:15;:17::i;:::-;18035:13;;:33;18028:40;;17950:126;:::o;16670:25::-;;;;:::o;16542:23::-;;;-1:-1:-1;;;;;16542:23:0;;:::o;6010:281::-;5287:12;:10;:12::i;:::-;5277:6;;-1:-1:-1;;;;;5277:6:0;;;:22;;;5269:67;;;;;-1:-1:-1;;;5269:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5269:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6113:22:0;::::1;6091:110;;;;-1:-1:-1::0;;;6091:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6238:6;::::0;6217:38:::1;::::0;-1:-1:-1;;;;;6217:38:0;;::::1;::::0;6238:6:::1;::::0;6217:38:::1;::::0;6238:6:::1;::::0;6217:38:::1;6266:6;:17:::0;;-1:-1:-1;;;;;;6266:17:0::1;-1:-1:-1::0;;;;;6266:17:0;;;::::1;::::0;;;::::1;::::0;;6010:281::o;18303:174::-;18405:11;;18387:13;;:30;;:17;:30::i;:::-;18368:15;:49;18364:106;;18434:24;:22;:24::i;:::-;18303:174::o;16470:26::-;;;-1:-1:-1;;;;;16470:26:0;;:::o;3326:106::-;3414:10;3326:106;:::o;8636:471::-;8694:7;8939:6;8935:47;;-1:-1:-1;8969:1:0;8962:8;;8935:47;9006:5;;;9010:1;9006;:5;:1;9030:5;;;;;:10;9022:56;;;;-1:-1:-1;;;9022:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9098:1;-1:-1:-1;8636:471:0;;;;;:::o;9575:132::-;9633:7;9660:39;9664:1;9667;9660:39;;;;;;;;;;;;;;;;;:3;:39::i;7728:136::-;7786:7;7813:43;7817:1;7820;7813:43;;;;;;;;;;;;;;;;;:3;:43::i;7272:181::-;7330:7;7362:5;;;7386:6;;;;7378:46;;;;;-1:-1:-1;;;7378:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:568;2087:4;2154:17;2199:7;1646:568;:::o;4651:129::-;1174:12;;;;;;;;:31;;;1190:15;:13;:15::i;:::-;1174:47;;;-1:-1:-1;1210:11:0;;;;1209:12;1174:47;1152:143;;;;-1:-1:-1;;;1152:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1308:19;1331:12;;;;;;1330:13;1354:99;;;;1389:12;:19;;-1:-1:-1;;;;1389:19:0;;;;;1423:18;1404:4;1423:18;;;1354:99;4709:26:::1;:24;:26::i;:::-;4746;:24;:26::i;:::-;1483:14:::0;1479:67;;;1529:5;1514:20;;-1:-1:-1;;1514:20:0;;;1479:67;4651:129;:::o;10195:379::-;10315:7;10417:12;10410:5;10402:28;;;;-1:-1:-1;;;10402:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10441:9;10457:1;10453;:5;;;;;;;10195:379;-1:-1:-1;;;;;10195:379:0:o;8159:226::-;8279:7;8315:12;8307:6;;;;8299:29;;;;-1:-1:-1;;;8299:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8351:5:0;;;8159:226::o;3259:59::-;1174:12;;;;;;;;:31;;;1190:15;:13;:15::i;:::-;1174:47;;;-1:-1:-1;1210:11:0;;;;1209:12;1174:47;1152:143;;;;-1:-1:-1;;;1152:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1308:19;1331:12;;;;;;1330:13;1354:99;;;;1389:12;:19;;-1:-1:-1;;;;1389:19:0;;;;;1423:18;1404:4;1423:18;;;1483:14;1479:67;;;1529:5;1514:20;;-1:-1:-1;;1514:20:0;;;3259:59;:::o;4788:196::-;1174:12;;;;;;;;:31;;;1190:15;:13;:15::i;:::-;1174:47;;;-1:-1:-1;1210:11:0;;;;1209:12;1174:47;1152:143;;;;-1:-1:-1;;;1152:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1308:19;1331:12;;;;;;1330:13;1354:99;;;;1389:12;:19;;-1:-1:-1;;;;1389:19:0;;;;;1423:18;1404:4;1423:18;;;1354:99;4856:17:::1;4876:12;:10;:12::i;:::-;4899:6;:18:::0;;-1:-1:-1;;;;;;4899:18:0::1;-1:-1:-1::0;;;;;4899:18:0;::::1;::::0;;::::1;::::0;;;4933:43:::1;::::0;4899:18;;-1:-1:-1;4899:18:0;-1:-1:-1;;4933:43:0::1;::::0;-1:-1:-1;;4933:43:0::1;1465:1;1483:14:::0;1479:67;;;1529:5;1514:20;;-1:-1:-1;;1514:20:0;;;4788:196;:::o
Swarm Source
ipfs://9786923ad83d3fc4b2b128bd2a7e2f4a60bb47ca29f613ec43da7f3d4a49c2d2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.