Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 153 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Sweep | 17668329 | 466 days ago | IN | 0 ETH | 0.00397104 | ||||
Claim | 17656130 | 468 days ago | IN | 0 ETH | 0.00196509 | ||||
Claim | 17641435 | 470 days ago | IN | 0 ETH | 0.00370606 | ||||
Claim | 17625603 | 472 days ago | IN | 0 ETH | 0.00670068 | ||||
Claim | 17585980 | 478 days ago | IN | 0 ETH | 0.00600123 | ||||
Claim | 17579773 | 479 days ago | IN | 0 ETH | 0.00282292 | ||||
Claim | 17554669 | 482 days ago | IN | 0 ETH | 0.0023931 | ||||
Claim | 17554663 | 482 days ago | IN | 0 ETH | 0.00271218 | ||||
Claim | 17554653 | 482 days ago | IN | 0 ETH | 0.00223356 | ||||
Claim | 17553267 | 482 days ago | IN | 0 ETH | 0.00223356 | ||||
Claim | 17552416 | 483 days ago | IN | 0 ETH | 0.00170266 | ||||
Claim | 17552277 | 483 days ago | IN | 0 ETH | 0.00311899 | ||||
Claim | 17550640 | 483 days ago | IN | 0 ETH | 0.0024795 | ||||
Claim | 17550635 | 483 days ago | IN | 0 ETH | 0.0024444 | ||||
Claim | 17549333 | 483 days ago | IN | 0 ETH | 0.00193254 | ||||
Claim | 17549333 | 483 days ago | IN | 0 ETH | 0.00193254 | ||||
Claim | 17549139 | 483 days ago | IN | 0 ETH | 0.00191732 | ||||
Claim | 17549133 | 483 days ago | IN | 0 ETH | 0.00194067 | ||||
Claim | 17549127 | 483 days ago | IN | 0 ETH | 0.00218204 | ||||
Claim | 17549121 | 483 days ago | IN | 0 ETH | 0.00202792 | ||||
Claim | 17549103 | 483 days ago | IN | 0 ETH | 0.00214943 | ||||
Claim | 17549099 | 483 days ago | IN | 0 ETH | 0.00212031 | ||||
Claim | 17549089 | 483 days ago | IN | 0 ETH | 0.00215297 | ||||
Claim | 17549085 | 483 days ago | IN | 0 ETH | 0.00192875 | ||||
Claim | 17549077 | 483 days ago | IN | 0 ETH | 0.00207791 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PincubatorPresaleVestedDistributor
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-22 */ // Dependency file: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) // pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, 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); } // Dependency file: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) // pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // Dependency file: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) // pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // Dependency file: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) // pragma solidity ^0.8.0; // import "@openzeppelin/contracts/utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual 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 { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // Dependency file: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) // pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // Dependency file: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) // pragma solidity ^0.8.0; // import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; // import "@openzeppelin/contracts/utils/Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // Dependency file: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) // pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface ISaleContract { function participantTokens(address account) external view returns(int256); function totalSold() external view returns (int256); } // Root file: contracts/MerkleVestedDistributer.sol pragma solidity ^0.8.0; // import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; // import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; // import "@openzeppelin/contracts/access/Ownable.sol"; // import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; // import "@openzeppelin/contracts/utils/math/SafeMath.sol"; contract PincubatorPresaleVestedDistributor is Ownable, ReentrancyGuard { address public immutable token; address public immutable saleContract; using SafeERC20 for IERC20; using SafeMath for uint256; uint256 public constant VESTED_PERIOD_LENGTH = 86400; //1 day uint256 public constant VESTING_LENGTH = 20; //20 days, it means that claim is available every day during 20 days //start vesting uint256 public startVesting = 0; //already claimed maps mapping(address => uint256) public claimed; uint256 public totalClaimed; event Sweep(address token, address recipient, uint256 amount); event Claimed(address account, uint256 amount); constructor( address token_, address _saleContract, uint256 _startVesting ) { token = token_; saleContract = _saleContract; startVesting = _startVesting; } function claim() external nonReentrant { address _account = msg.sender; uint256 _amountAllowedToClaim = uint256(ISaleContract(saleContract).participantTokens(_account)); require(_amountAllowedToClaim > 0, "Distributer: no tokens for claim"); //amount already claimed uint256 amountClaimed = claimed[_account]; require( amountClaimed < _amountAllowedToClaim, "Distributer: Limit for claim is reached." ); uint256 duration = VESTED_PERIOD_LENGTH * VESTING_LENGTH; uint256 total = _amountAllowedToClaim; require( block.timestamp > startVesting, "Distributer: Vesting doesnt start" ); uint256 vestingCoeff = (block.timestamp - startVesting) / VESTED_PERIOD_LENGTH; uint256 vested = (total * (vestingCoeff * VESTED_PERIOD_LENGTH)) / duration; if (block.timestamp >= (startVesting + duration)) { vested = total; } uint256 claimable = 0; if (vested > amountClaimed) { claimable = vested - amountClaimed; } if (claimable > 0) { claimed[_account] += claimable; } totalClaimed += claimable; IERC20(token).safeTransfer(_account, claimable); emit Claimed(_account, claimable); } function getClaimableAmount( address _account ) external view returns (uint256 claimable) { uint256 _amountAllowedToClaim = uint256(ISaleContract(saleContract).participantTokens(_account)); if (_amountAllowedToClaim > 0) { if (block.timestamp > startVesting) { //amount already claimed uint256 amountClaimed = claimed[_account]; if (amountClaimed < _amountAllowedToClaim) { uint256 duration = VESTED_PERIOD_LENGTH * VESTING_LENGTH; uint256 total = _amountAllowedToClaim; uint256 vestingCoeff = (block.timestamp - startVesting) / VESTED_PERIOD_LENGTH; uint256 vested = (total * (vestingCoeff * VESTED_PERIOD_LENGTH)) / duration; if (block.timestamp >= (startVesting + duration)) { vested = total; } claimable = 0; if (vested > amountClaimed) { claimable = vested - amountClaimed; } } } } } function vestedTokens(address _account) external view returns (uint256) { return uint256(ISaleContract(saleContract).participantTokens(_account)); } function totalTokensForClaim() external view returns(uint256) { return uint256(ISaleContract(saleContract).totalSold()); } /** * @notice Sweep any tokens from contract * @param _token, address of Token * @param _recepient, ecipient of tokens */ function sweep(address _token, address _recepient) external onlyOwner { require( _recepient != address(0), "Distributer: Zero address for withdraw." ); uint256 amount = IERC20(_token).balanceOf(address(this)); require(amount > 0, "Distributer: Nothing to withdraw."); IERC20(_token).safeTransfer(_recepient, amount); emit Sweep(_token, _recepient, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"_saleContract","type":"address"},{"internalType":"uint256","name":"_startVesting","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","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":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Sweep","type":"event"},{"inputs":[],"name":"VESTED_PERIOD_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VESTING_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getClaimableAmount","outputs":[{"internalType":"uint256","name":"claimable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startVesting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recepient","type":"address"}],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensForClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"vestedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c060405260006002553480156200001657600080fd5b5060405162001f1138038062001f1183398181016040528101906200003c91906200024c565b6200005c62000050620000db60201b60201c565b620000e360201b60201c565b600180819055508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505080600281905550505050620002a8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001d982620001ac565b9050919050565b620001eb81620001cc565b8114620001f757600080fd5b50565b6000815190506200020b81620001e0565b92915050565b6000819050919050565b620002268162000211565b81146200023257600080fd5b50565b60008151905062000246816200021b565b92915050565b600080600060608486031215620002685762000267620001a7565b5b60006200027886828701620001fa565b93505060206200028b86828701620001fa565b92505060406200029e8682870162000235565b9150509250925092565b60805160a051611c20620002f1600039600081816102ca015281816103bf0152818161079301528181610a8a0152610ab70152600081816106790152610d530152611c206000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063c884ef8311610097578063e12f3a6111610066578063e12f3a611461023e578063f2fde38b1461026e578063f5d420001461028a578063fc0c546a146102a8576100f5565b8063c884ef83146101b4578063d54ad2a1146101e4578063daf6ca3014610202578063deb36e3214610220576100f5565b80637bb98b38116100d35780637bb98b381461013e5780638da5cb5b1461015c578063a1c030941461017a578063b8dc491b14610198576100f5565b80633dee0397146100fa5780634e71d92d1461012a578063715018a614610134575b600080fd5b610114600480360381019061010f91906111a7565b6102c6565b60405161012191906111ed565b60405180910390f35b610132610369565b005b61013c610707565b005b61014661078f565b60405161015391906111ed565b60405180910390f35b610164610825565b6040516101719190611217565b60405180910390f35b61018261084e565b60405161018f91906111ed565b60405180910390f35b6101b260048036038101906101ad9190611232565b610853565b005b6101ce60048036038101906101c991906111a7565b610a6a565b6040516101db91906111ed565b60405180910390f35b6101ec610a82565b6040516101f991906111ed565b60405180910390f35b61020a610a88565b6040516102179190611217565b60405180910390f35b610228610aac565b60405161023591906111ed565b60405180910390f35b610258600480360381019061025391906111a7565b610ab2565b60405161026591906111ed565b60405180910390f35b610288600480360381019061028391906111a7565b610c53565b005b610292610d4a565b60405161029f91906111ed565b60405180910390f35b6102b0610d51565b6040516102bd9190611217565b60405180910390f35b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cbe3b20f836040518263ffffffff1660e01b81526004016103219190611217565b602060405180830381865afa15801561033e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036291906112a8565b9050919050565b6002600154036103ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a590611332565b60405180910390fd5b6002600181905550600033905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cbe3b20f836040518263ffffffff1660e01b81526004016104169190611217565b602060405180830381865afa158015610433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045791906112a8565b90506000811161049c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104939061139e565b60405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110610522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051990611430565b60405180910390fd5b6000601462015180610534919061147f565b90506000839050600254421161057f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057690611533565b60405180910390fd5b600062015180600254426105939190611553565b61059d91906115b6565b905060008362015180836105b1919061147f565b846105bc919061147f565b6105c691906115b6565b9050836002546105d691906115e7565b42106105e0578290505b6000858211156105f95785826105f69190611553565b90505b60008111156106595780600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461065191906115e7565b925050819055505b806004600082825461066b91906115e7565b925050819055506106bd88827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d759092919063ffffffff16565b7fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a88826040516106ee92919061161b565b60405180910390a1505050505050505060018081905550565b61070f610dfb565b73ffffffffffffffffffffffffffffffffffffffff1661072d610825565b73ffffffffffffffffffffffffffffffffffffffff1614610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077a90611690565b60405180910390fd5b61078d6000610e03565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639106d7ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082091906112a8565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601481565b61085b610dfb565b73ffffffffffffffffffffffffffffffffffffffff16610879610825565b73ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690611690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590611722565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109799190611217565b602060405180830381865afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba919061176e565b9050600081116109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f69061180d565b60405180910390fd5b610a2a82828573ffffffffffffffffffffffffffffffffffffffff16610d759092919063ffffffff16565b7fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab7838383604051610a5d9392919061182d565b60405180910390a1505050565b60036020528060005260406000206000915090505481565b60045481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cbe3b20f846040518263ffffffff1660e01b8152600401610b0e9190611217565b602060405180830381865afa158015610b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4f91906112a8565b90506000811115610c4d57600254421115610c4c576000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c4a576000601462015180610bc2919061147f565b9050600083905060006201518060025442610bdd9190611553565b610be791906115b6565b90506000836201518083610bfb919061147f565b84610c06919061147f565b610c1091906115b6565b905083600254610c2091906115e7565b4210610c2a578290505b6000965084811115610c45578481610c429190611553565b96505b505050505b505b5b50919050565b610c5b610dfb565b73ffffffffffffffffffffffffffffffffffffffff16610c79610825565b73ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690611690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d35906118d6565b60405180910390fd5b610d4781610e03565b50565b6201518081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610df68363a9059cbb60e01b8484604051602401610d9492919061161b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610ec7565b505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000610f29826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610f8e9092919063ffffffff16565b9050600081511115610f895780806020019051810190610f49919061192e565b610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f906119cd565b60405180910390fd5b5b505050565b6060610f9d8484600085610fa6565b90509392505050565b606082471015610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290611a5f565b60405180910390fd5b610ff4856110ba565b611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a90611acb565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161105c9190611b5c565b60006040518083038185875af1925050503d8060008114611099576040519150601f19603f3d011682016040523d82523d6000602084013e61109e565b606091505b50915091506110ae8282866110dd565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b606083156110ed5782905061113d565b6000835111156111005782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111349190611bc8565b60405180910390fd5b9392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061117482611149565b9050919050565b61118481611169565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b6000602082840312156111bd576111bc611144565b5b60006111cb84828501611192565b91505092915050565b6000819050919050565b6111e7816111d4565b82525050565b600060208201905061120260008301846111de565b92915050565b61121181611169565b82525050565b600060208201905061122c6000830184611208565b92915050565b6000806040838503121561124957611248611144565b5b600061125785828601611192565b925050602061126885828601611192565b9150509250929050565b6000819050919050565b61128581611272565b811461129057600080fd5b50565b6000815190506112a28161127c565b92915050565b6000602082840312156112be576112bd611144565b5b60006112cc84828501611293565b91505092915050565b600082825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061131c601f836112d5565b9150611327826112e6565b602082019050919050565b6000602082019050818103600083015261134b8161130f565b9050919050565b7f44697374726962757465723a206e6f20746f6b656e7320666f7220636c61696d600082015250565b60006113886020836112d5565b915061139382611352565b602082019050919050565b600060208201905081810360008301526113b78161137b565b9050919050565b7f44697374726962757465723a204c696d697420666f7220636c61696d2069732060008201527f726561636865642e000000000000000000000000000000000000000000000000602082015250565b600061141a6028836112d5565b9150611425826113be565b604082019050919050565b600060208201905081810360008301526114498161140d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061148a826111d4565b9150611495836111d4565b92508282026114a3816111d4565b915082820484148315176114ba576114b9611450565b5b5092915050565b7f44697374726962757465723a2056657374696e6720646f65736e74207374617260008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061151d6021836112d5565b9150611528826114c1565b604082019050919050565b6000602082019050818103600083015261154c81611510565b9050919050565b600061155e826111d4565b9150611569836111d4565b925082820390508181111561158157611580611450565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006115c1826111d4565b91506115cc836111d4565b9250826115dc576115db611587565b5b828204905092915050565b60006115f2826111d4565b91506115fd836111d4565b925082820190508082111561161557611614611450565b5b92915050565b60006040820190506116306000830185611208565b61163d60208301846111de565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061167a6020836112d5565b915061168582611644565b602082019050919050565b600060208201905081810360008301526116a98161166d565b9050919050565b7f44697374726962757465723a205a65726f206164647265737320666f7220776960008201527f7468647261772e00000000000000000000000000000000000000000000000000602082015250565b600061170c6027836112d5565b9150611717826116b0565b604082019050919050565b6000602082019050818103600083015261173b816116ff565b9050919050565b61174b816111d4565b811461175657600080fd5b50565b60008151905061176881611742565b92915050565b60006020828403121561178457611783611144565b5b600061179284828501611759565b91505092915050565b7f44697374726962757465723a204e6f7468696e6720746f20776974686472617760008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006117f76021836112d5565b91506118028261179b565b604082019050919050565b60006020820190508181036000830152611826816117ea565b9050919050565b60006060820190506118426000830186611208565b61184f6020830185611208565b61185c60408301846111de565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006118c06026836112d5565b91506118cb82611864565b604082019050919050565b600060208201905081810360008301526118ef816118b3565b9050919050565b60008115159050919050565b61190b816118f6565b811461191657600080fd5b50565b60008151905061192881611902565b92915050565b60006020828403121561194457611943611144565b5b600061195284828501611919565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006119b7602a836112d5565b91506119c28261195b565b604082019050919050565b600060208201905081810360008301526119e6816119aa565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000611a496026836112d5565b9150611a54826119ed565b604082019050919050565b60006020820190508181036000830152611a7881611a3c565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611ab5601d836112d5565b9150611ac082611a7f565b602082019050919050565b60006020820190508181036000830152611ae481611aa8565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611b1f578082015181840152602081019050611b04565b60008484015250505050565b6000611b3682611aeb565b611b408185611af6565b9350611b50818560208601611b01565b80840191505092915050565b6000611b688284611b2b565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b6000611b9a82611b73565b611ba481856112d5565b9350611bb4818560208601611b01565b611bbd81611b7e565b840191505092915050565b60006020820190508181036000830152611be28184611b8f565b90509291505056fea2646970667358221220cae4b2c01f7292042300a0d85e9ed4b136b9922ebdfafc121bd8408edd7eb3be64736f6c6343000812003300000000000000000000000076c81e322fe678f9391029d571453fad9bc9e73e00000000000000000000000031eecf3f5c3ea2ee8ee7c0266a98e89f933a4b6b00000000000000000000000000000000000000000000000000000000646b4b30
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063c884ef8311610097578063e12f3a6111610066578063e12f3a611461023e578063f2fde38b1461026e578063f5d420001461028a578063fc0c546a146102a8576100f5565b8063c884ef83146101b4578063d54ad2a1146101e4578063daf6ca3014610202578063deb36e3214610220576100f5565b80637bb98b38116100d35780637bb98b381461013e5780638da5cb5b1461015c578063a1c030941461017a578063b8dc491b14610198576100f5565b80633dee0397146100fa5780634e71d92d1461012a578063715018a614610134575b600080fd5b610114600480360381019061010f91906111a7565b6102c6565b60405161012191906111ed565b60405180910390f35b610132610369565b005b61013c610707565b005b61014661078f565b60405161015391906111ed565b60405180910390f35b610164610825565b6040516101719190611217565b60405180910390f35b61018261084e565b60405161018f91906111ed565b60405180910390f35b6101b260048036038101906101ad9190611232565b610853565b005b6101ce60048036038101906101c991906111a7565b610a6a565b6040516101db91906111ed565b60405180910390f35b6101ec610a82565b6040516101f991906111ed565b60405180910390f35b61020a610a88565b6040516102179190611217565b60405180910390f35b610228610aac565b60405161023591906111ed565b60405180910390f35b610258600480360381019061025391906111a7565b610ab2565b60405161026591906111ed565b60405180910390f35b610288600480360381019061028391906111a7565b610c53565b005b610292610d4a565b60405161029f91906111ed565b60405180910390f35b6102b0610d51565b6040516102bd9190611217565b60405180910390f35b60007f00000000000000000000000031eecf3f5c3ea2ee8ee7c0266a98e89f933a4b6b73ffffffffffffffffffffffffffffffffffffffff1663cbe3b20f836040518263ffffffff1660e01b81526004016103219190611217565b602060405180830381865afa15801561033e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036291906112a8565b9050919050565b6002600154036103ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a590611332565b60405180910390fd5b6002600181905550600033905060007f00000000000000000000000031eecf3f5c3ea2ee8ee7c0266a98e89f933a4b6b73ffffffffffffffffffffffffffffffffffffffff1663cbe3b20f836040518263ffffffff1660e01b81526004016104169190611217565b602060405180830381865afa158015610433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045791906112a8565b90506000811161049c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104939061139e565b60405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110610522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051990611430565b60405180910390fd5b6000601462015180610534919061147f565b90506000839050600254421161057f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057690611533565b60405180910390fd5b600062015180600254426105939190611553565b61059d91906115b6565b905060008362015180836105b1919061147f565b846105bc919061147f565b6105c691906115b6565b9050836002546105d691906115e7565b42106105e0578290505b6000858211156105f95785826105f69190611553565b90505b60008111156106595780600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461065191906115e7565b925050819055505b806004600082825461066b91906115e7565b925050819055506106bd88827f00000000000000000000000076c81e322fe678f9391029d571453fad9bc9e73e73ffffffffffffffffffffffffffffffffffffffff16610d759092919063ffffffff16565b7fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a88826040516106ee92919061161b565b60405180910390a1505050505050505060018081905550565b61070f610dfb565b73ffffffffffffffffffffffffffffffffffffffff1661072d610825565b73ffffffffffffffffffffffffffffffffffffffff1614610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077a90611690565b60405180910390fd5b61078d6000610e03565b565b60007f00000000000000000000000031eecf3f5c3ea2ee8ee7c0266a98e89f933a4b6b73ffffffffffffffffffffffffffffffffffffffff16639106d7ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082091906112a8565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601481565b61085b610dfb565b73ffffffffffffffffffffffffffffffffffffffff16610879610825565b73ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690611690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590611722565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109799190611217565b602060405180830381865afa158015610996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ba919061176e565b9050600081116109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f69061180d565b60405180910390fd5b610a2a82828573ffffffffffffffffffffffffffffffffffffffff16610d759092919063ffffffff16565b7fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab7838383604051610a5d9392919061182d565b60405180910390a1505050565b60036020528060005260406000206000915090505481565b60045481565b7f00000000000000000000000031eecf3f5c3ea2ee8ee7c0266a98e89f933a4b6b81565b60025481565b6000807f00000000000000000000000031eecf3f5c3ea2ee8ee7c0266a98e89f933a4b6b73ffffffffffffffffffffffffffffffffffffffff1663cbe3b20f846040518263ffffffff1660e01b8152600401610b0e9190611217565b602060405180830381865afa158015610b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4f91906112a8565b90506000811115610c4d57600254421115610c4c576000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c4a576000601462015180610bc2919061147f565b9050600083905060006201518060025442610bdd9190611553565b610be791906115b6565b90506000836201518083610bfb919061147f565b84610c06919061147f565b610c1091906115b6565b905083600254610c2091906115e7565b4210610c2a578290505b6000965084811115610c45578481610c429190611553565b96505b505050505b505b5b50919050565b610c5b610dfb565b73ffffffffffffffffffffffffffffffffffffffff16610c79610825565b73ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690611690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d35906118d6565b60405180910390fd5b610d4781610e03565b50565b6201518081565b7f00000000000000000000000076c81e322fe678f9391029d571453fad9bc9e73e81565b610df68363a9059cbb60e01b8484604051602401610d9492919061161b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610ec7565b505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000610f29826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610f8e9092919063ffffffff16565b9050600081511115610f895780806020019051810190610f49919061192e565b610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f906119cd565b60405180910390fd5b5b505050565b6060610f9d8484600085610fa6565b90509392505050565b606082471015610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290611a5f565b60405180910390fd5b610ff4856110ba565b611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a90611acb565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161105c9190611b5c565b60006040518083038185875af1925050503d8060008114611099576040519150601f19603f3d011682016040523d82523d6000602084013e61109e565b606091505b50915091506110ae8282866110dd565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b606083156110ed5782905061113d565b6000835111156111005782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111349190611bc8565b60405180910390fd5b9392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061117482611149565b9050919050565b61118481611169565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b6000602082840312156111bd576111bc611144565b5b60006111cb84828501611192565b91505092915050565b6000819050919050565b6111e7816111d4565b82525050565b600060208201905061120260008301846111de565b92915050565b61121181611169565b82525050565b600060208201905061122c6000830184611208565b92915050565b6000806040838503121561124957611248611144565b5b600061125785828601611192565b925050602061126885828601611192565b9150509250929050565b6000819050919050565b61128581611272565b811461129057600080fd5b50565b6000815190506112a28161127c565b92915050565b6000602082840312156112be576112bd611144565b5b60006112cc84828501611293565b91505092915050565b600082825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061131c601f836112d5565b9150611327826112e6565b602082019050919050565b6000602082019050818103600083015261134b8161130f565b9050919050565b7f44697374726962757465723a206e6f20746f6b656e7320666f7220636c61696d600082015250565b60006113886020836112d5565b915061139382611352565b602082019050919050565b600060208201905081810360008301526113b78161137b565b9050919050565b7f44697374726962757465723a204c696d697420666f7220636c61696d2069732060008201527f726561636865642e000000000000000000000000000000000000000000000000602082015250565b600061141a6028836112d5565b9150611425826113be565b604082019050919050565b600060208201905081810360008301526114498161140d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061148a826111d4565b9150611495836111d4565b92508282026114a3816111d4565b915082820484148315176114ba576114b9611450565b5b5092915050565b7f44697374726962757465723a2056657374696e6720646f65736e74207374617260008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061151d6021836112d5565b9150611528826114c1565b604082019050919050565b6000602082019050818103600083015261154c81611510565b9050919050565b600061155e826111d4565b9150611569836111d4565b925082820390508181111561158157611580611450565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006115c1826111d4565b91506115cc836111d4565b9250826115dc576115db611587565b5b828204905092915050565b60006115f2826111d4565b91506115fd836111d4565b925082820190508082111561161557611614611450565b5b92915050565b60006040820190506116306000830185611208565b61163d60208301846111de565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061167a6020836112d5565b915061168582611644565b602082019050919050565b600060208201905081810360008301526116a98161166d565b9050919050565b7f44697374726962757465723a205a65726f206164647265737320666f7220776960008201527f7468647261772e00000000000000000000000000000000000000000000000000602082015250565b600061170c6027836112d5565b9150611717826116b0565b604082019050919050565b6000602082019050818103600083015261173b816116ff565b9050919050565b61174b816111d4565b811461175657600080fd5b50565b60008151905061176881611742565b92915050565b60006020828403121561178457611783611144565b5b600061179284828501611759565b91505092915050565b7f44697374726962757465723a204e6f7468696e6720746f20776974686472617760008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006117f76021836112d5565b91506118028261179b565b604082019050919050565b60006020820190508181036000830152611826816117ea565b9050919050565b60006060820190506118426000830186611208565b61184f6020830185611208565b61185c60408301846111de565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006118c06026836112d5565b91506118cb82611864565b604082019050919050565b600060208201905081810360008301526118ef816118b3565b9050919050565b60008115159050919050565b61190b816118f6565b811461191657600080fd5b50565b60008151905061192881611902565b92915050565b60006020828403121561194457611943611144565b5b600061195284828501611919565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006119b7602a836112d5565b91506119c28261195b565b604082019050919050565b600060208201905081810360008301526119e6816119aa565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000611a496026836112d5565b9150611a54826119ed565b604082019050919050565b60006020820190508181036000830152611a7881611a3c565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611ab5601d836112d5565b9150611ac082611a7f565b602082019050919050565b60006020820190508181036000830152611ae481611aa8565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611b1f578082015181840152602081019050611b04565b60008484015250505050565b6000611b3682611aeb565b611b408185611af6565b9350611b50818560208601611b01565b80840191505092915050565b6000611b688284611b2b565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b6000611b9a82611b73565b611ba481856112d5565b9350611bb4818560208601611b01565b611bbd81611b7e565b840191505092915050565b60006020820190508181036000830152611be28184611b8f565b90509291505056fea2646970667358221220cae4b2c01f7292042300a0d85e9ed4b136b9922ebdfafc121bd8408edd7eb3be64736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000076c81e322fe678f9391029d571453fad9bc9e73e00000000000000000000000031eecf3f5c3ea2ee8ee7c0266a98e89f933a4b6b00000000000000000000000000000000000000000000000000000000646b4b30
-----Decoded View---------------
Arg [0] : token_ (address): 0x76C81E322fe678f9391029d571453FAd9bC9e73e
Arg [1] : _saleContract (address): 0x31EEcf3f5c3ea2Ee8eE7c0266A98E89F933a4b6b
Arg [2] : _startVesting (uint256): 1684753200
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000076c81e322fe678f9391029d571453fad9bc9e73e
Arg [1] : 00000000000000000000000031eecf3f5c3ea2ee8ee7c0266a98e89f933a4b6b
Arg [2] : 00000000000000000000000000000000000000000000000000000000646b4b30
Deployed Bytecode Sourcemap
29458:4538:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33082:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30404:1427;;;:::i;:::-;;8389:103;;;:::i;:::-;;33253:138;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7738:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29755:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33550:443;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29965:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30016:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29574:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29897:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31839:1235;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8647:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29688:52;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29537:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33082:163;33146:7;33195:12;33181:45;;;33227:8;33181:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33166:71;;33082:163;;;:::o;30404:1427::-;4752:1;5350:7;;:19;5342:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4752:1;5483:7;:18;;;;30456:16:::1;30475:10;30456:29;;30498;30552:12;30538:45;;;30584:8;30538:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30498:96;;30639:1;30615:21;:25;30607:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;30724:21;30748:7;:17;30756:8;30748:17;;;;;;;;;;;;;;;;30724:41;;30816:21;30800:13;:37;30778:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;30918:16;29796:2;29735:5;30937:37;;;;:::i;:::-;30918:56;;30987:13;31003:21;30987:37;;31077:12;;31059:15;:30;31037:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;31163:20;29735:5;31205:12;;31187:15;:30;;;;:::i;:::-;31186:68;;;;:::i;:::-;31163:91;;31267:14;31347:8;29735:5;31294:12;:35;;;;:::i;:::-;31285:5;:45;;;;:::i;:::-;31284:71;;;;:::i;:::-;31267:88;;31407:8;31392:12;;:23;;;;:::i;:::-;31372:15;:44;31368:91;;31442:5;31433:14;;31368:91;31471:17;31518:13;31509:6;:22;31505:89;;;31569:13;31560:6;:22;;;;:::i;:::-;31548:34;;31505:89;31622:1;31610:9;:13;31606:76;;;31661:9;31640:7;:17;31648:8;31640:17;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;31606:76;31710:9;31694:12;;:25;;;;;;;:::i;:::-;;;;;;;;31730:47;31757:8;31767:9;31737:5;31730:26;;;;:47;;;;;:::i;:::-;31795:28;31803:8;31813:9;31795:28;;;;;;;:::i;:::-;;;;;;;;30443:1388;;;;;;;;4708:1:::0;5662:7;:22;;;;30404:1427::o;8389:103::-;7969:12;:10;:12::i;:::-;7958:23;;:7;:5;:7::i;:::-;:23;;;7950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8454:30:::1;8481:1;8454:18;:30::i;:::-;8389:103::o:0;33253:138::-;33308:7;33357:12;33343:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33328:55;;33253:138;:::o;7738:87::-;7784:7;7811:6;;;;;;;;;;;7804:13;;7738:87;:::o;29755:43::-;29796:2;29755:43;:::o;33550:443::-;7969:12;:10;:12::i;:::-;7958:23;;:7;:5;:7::i;:::-;:23;;;7950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33675:1:::1;33653:24;;:10;:24;;::::0;33631:113:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;33755:14;33779:6;33772:24;;;33805:4;33772:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33755:56;;33839:1;33830:6;:10;33822:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;33889:47;33917:10;33929:6;33896;33889:27;;;;:47;;;;;:::i;:::-;33952:33;33958:6;33966:10;33978:6;33952:33;;;;;;;;:::i;:::-;;;;;;;;33620:373;33550:443:::0;;:::o;29965:42::-;;;;;;;;;;;;;;;;;:::o;30016:27::-;;;;:::o;29574:37::-;;;:::o;29897:31::-;;;;:::o;31839:1235::-;31924:17;31956:29;32010:12;31996:45;;;32042:8;31996:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31956:96;;32093:1;32069:21;:25;32065:1002;;;32133:12;;32115:15;:30;32111:945;;;32208:21;32232:7;:17;32240:8;32232:17;;;;;;;;;;;;;;;;32208:41;;32290:21;32274:13;:37;32270:771;;;32336:16;29796:2;29735:5;32355:37;;;;:::i;:::-;32336:56;;32417:13;32433:21;32417:37;;32479:20;29735:5;32521:12;;32503:15;:30;;;;:::i;:::-;32502:80;;;;:::i;:::-;32479:103;;32607:14;32699:8;29735:5;32659:12;:35;;;;:::i;:::-;32625:5;:70;;;;:::i;:::-;32624:83;;;;:::i;:::-;32607:100;;32771:8;32756:12;;:23;;;;:::i;:::-;32736:15;:44;32732:115;;32818:5;32809:14;;32732:115;32883:1;32871:13;;32922;32913:6;:22;32909:113;;;32985:13;32976:6;:22;;;;:::i;:::-;32964:34;;32909:113;32313:728;;;;32270:771;32147:909;32111:945;32065:1002;31943:1131;31839:1235;;;:::o;8647:201::-;7969:12;:10;:12::i;:::-;7958:23;;:7;:5;:7::i;:::-;:23;;;7950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8756:1:::1;8736:22;;:8;:22;;::::0;8728:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8812:28;8831:8;8812:18;:28::i;:::-;8647:201:::0;:::o;29688:52::-;29735:5;29688:52;:::o;29537:30::-;;;:::o;18549:211::-;18666:86;18686:5;18716:23;;;18741:2;18745:5;18693:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18666:19;:86::i;:::-;18549:211;;;:::o;6392:98::-;6445:7;6472:10;6465:17;;6392:98;:::o;9008:191::-;9082:16;9101:6;;;;;;;;;;;9082:25;;9127:8;9118:6;;:17;;;;;;;;;;;;;;;;;;9182:8;9151:40;;9172:8;9151:40;;;;;;;;;;;;9071:128;9008:191;:::o;21122:716::-;21546:23;21572:69;21600:4;21572:69;;;;;;;;;;;;;;;;;21580:5;21572:27;;;;:69;;;;;:::i;:::-;21546:95;;21676:1;21656:10;:17;:21;21652:179;;;21753:10;21742:30;;;;;;;;;;;;:::i;:::-;21734:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21652:179;21192:646;21122:716;;:::o;13198:229::-;13335:12;13367:52;13389:6;13397:4;13403:1;13406:12;13367:21;:52::i;:::-;13360:59;;13198:229;;;;;:::o;14318:510::-;14488:12;14546:5;14521:21;:30;;14513:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;14613:18;14624:6;14613:10;:18::i;:::-;14605:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14679:12;14693:23;14720:6;:11;;14739:5;14746:4;14720:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14678:73;;;;14769:51;14786:7;14795:10;14807:12;14769:16;:51::i;:::-;14762:58;;;;14318:510;;;;;;:::o;10453:326::-;10513:4;10770:1;10748:7;:19;;;:23;10741:30;;10453:326;;;:::o;17004:712::-;17154:12;17183:7;17179:530;;;17214:10;17207:17;;;;17179:530;17348:1;17328:10;:17;:21;17324:374;;;17526:10;17520:17;17587:15;17574:10;17570:2;17566:19;17559:44;17324:374;17669:12;17662:20;;;;;;;;;;;:::i;:::-;;;;;;;;17004:712;;;;;;:::o;88:117:1:-;197:1;194;187: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:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o;1963:474::-;2031:6;2039;2088:2;2076:9;2067:7;2063:23;2059:32;2056:119;;;2094:79;;:::i;:::-;2056:119;2214:1;2239:53;2284:7;2275:6;2264:9;2260:22;2239:53;:::i;:::-;2229:63;;2185:117;2341:2;2367:53;2412:7;2403:6;2392:9;2388:22;2367:53;:::i;:::-;2357:63;;2312:118;1963:474;;;;;:::o;2443:76::-;2479:7;2508:5;2497:16;;2443:76;;;:::o;2525:120::-;2597:23;2614:5;2597:23;:::i;:::-;2590:5;2587:34;2577:62;;2635:1;2632;2625:12;2577:62;2525:120;:::o;2651:141::-;2707:5;2738:6;2732:13;2723:22;;2754:32;2780:5;2754:32;:::i;:::-;2651:141;;;;:::o;2798:349::-;2867:6;2916:2;2904:9;2895:7;2891:23;2887:32;2884:119;;;2922:79;;:::i;:::-;2884:119;3042:1;3067:63;3122:7;3113:6;3102:9;3098:22;3067:63;:::i;:::-;3057:73;;3013:127;2798:349;;;;:::o;3153:169::-;3237:11;3271:6;3266:3;3259:19;3311:4;3306:3;3302:14;3287:29;;3153:169;;;;:::o;3328:181::-;3468:33;3464:1;3456:6;3452:14;3445:57;3328:181;:::o;3515:366::-;3657:3;3678:67;3742:2;3737:3;3678:67;:::i;:::-;3671:74;;3754:93;3843:3;3754:93;:::i;:::-;3872:2;3867:3;3863:12;3856:19;;3515:366;;;:::o;3887:419::-;4053:4;4091:2;4080:9;4076:18;4068:26;;4140:9;4134:4;4130:20;4126:1;4115:9;4111:17;4104:47;4168:131;4294:4;4168:131;:::i;:::-;4160:139;;3887:419;;;:::o;4312:182::-;4452:34;4448:1;4440:6;4436:14;4429:58;4312:182;:::o;4500:366::-;4642:3;4663:67;4727:2;4722:3;4663:67;:::i;:::-;4656:74;;4739:93;4828:3;4739:93;:::i;:::-;4857:2;4852:3;4848:12;4841:19;;4500:366;;;:::o;4872:419::-;5038:4;5076:2;5065:9;5061:18;5053:26;;5125:9;5119:4;5115:20;5111:1;5100:9;5096:17;5089:47;5153:131;5279:4;5153:131;:::i;:::-;5145:139;;4872:419;;;:::o;5297:227::-;5437:34;5433:1;5425:6;5421:14;5414:58;5506:10;5501:2;5493:6;5489:15;5482:35;5297:227;:::o;5530:366::-;5672:3;5693:67;5757:2;5752:3;5693:67;:::i;:::-;5686:74;;5769:93;5858:3;5769:93;:::i;:::-;5887:2;5882:3;5878:12;5871:19;;5530:366;;;:::o;5902:419::-;6068:4;6106:2;6095:9;6091:18;6083:26;;6155:9;6149:4;6145:20;6141:1;6130:9;6126:17;6119:47;6183:131;6309:4;6183:131;:::i;:::-;6175:139;;5902:419;;;:::o;6327:180::-;6375:77;6372:1;6365:88;6472:4;6469:1;6462:15;6496:4;6493:1;6486:15;6513:410;6553:7;6576:20;6594:1;6576:20;:::i;:::-;6571:25;;6610:20;6628:1;6610:20;:::i;:::-;6605:25;;6665:1;6662;6658:9;6687:30;6705:11;6687:30;:::i;:::-;6676:41;;6866:1;6857:7;6853:15;6850:1;6847:22;6827:1;6820:9;6800:83;6777:139;;6896:18;;:::i;:::-;6777:139;6561:362;6513:410;;;;:::o;6929:220::-;7069:34;7065:1;7057:6;7053:14;7046:58;7138:3;7133:2;7125:6;7121:15;7114:28;6929:220;:::o;7155:366::-;7297:3;7318:67;7382:2;7377:3;7318:67;:::i;:::-;7311:74;;7394:93;7483:3;7394:93;:::i;:::-;7512:2;7507:3;7503:12;7496:19;;7155:366;;;:::o;7527:419::-;7693:4;7731:2;7720:9;7716:18;7708:26;;7780:9;7774:4;7770:20;7766:1;7755:9;7751:17;7744:47;7808:131;7934:4;7808:131;:::i;:::-;7800:139;;7527:419;;;:::o;7952:194::-;7992:4;8012:20;8030:1;8012:20;:::i;:::-;8007:25;;8046:20;8064:1;8046:20;:::i;:::-;8041:25;;8090:1;8087;8083:9;8075:17;;8114:1;8108:4;8105:11;8102:37;;;8119:18;;:::i;:::-;8102:37;7952:194;;;;:::o;8152:180::-;8200:77;8197:1;8190:88;8297:4;8294:1;8287:15;8321:4;8318:1;8311:15;8338:185;8378:1;8395:20;8413:1;8395:20;:::i;:::-;8390:25;;8429:20;8447:1;8429:20;:::i;:::-;8424:25;;8468:1;8458:35;;8473:18;;:::i;:::-;8458:35;8515:1;8512;8508:9;8503:14;;8338:185;;;;:::o;8529:191::-;8569:3;8588:20;8606:1;8588:20;:::i;:::-;8583:25;;8622:20;8640:1;8622:20;:::i;:::-;8617:25;;8665:1;8662;8658:9;8651:16;;8686:3;8683:1;8680:10;8677:36;;;8693:18;;:::i;:::-;8677:36;8529:191;;;;:::o;8726:332::-;8847:4;8885:2;8874:9;8870:18;8862:26;;8898:71;8966:1;8955:9;8951:17;8942:6;8898:71;:::i;:::-;8979:72;9047:2;9036:9;9032:18;9023:6;8979:72;:::i;:::-;8726:332;;;;;:::o;9064:182::-;9204:34;9200:1;9192:6;9188:14;9181:58;9064:182;:::o;9252:366::-;9394:3;9415:67;9479:2;9474:3;9415:67;:::i;:::-;9408:74;;9491:93;9580:3;9491:93;:::i;:::-;9609:2;9604:3;9600:12;9593:19;;9252:366;;;:::o;9624:419::-;9790:4;9828:2;9817:9;9813:18;9805:26;;9877:9;9871:4;9867:20;9863:1;9852:9;9848:17;9841:47;9905:131;10031:4;9905:131;:::i;:::-;9897:139;;9624:419;;;:::o;10049:226::-;10189:34;10185:1;10177:6;10173:14;10166:58;10258:9;10253:2;10245:6;10241:15;10234:34;10049:226;:::o;10281:366::-;10423:3;10444:67;10508:2;10503:3;10444:67;:::i;:::-;10437:74;;10520:93;10609:3;10520:93;:::i;:::-;10638:2;10633:3;10629:12;10622:19;;10281:366;;;:::o;10653:419::-;10819:4;10857:2;10846:9;10842:18;10834:26;;10906:9;10900:4;10896:20;10892:1;10881:9;10877:17;10870:47;10934:131;11060:4;10934:131;:::i;:::-;10926:139;;10653:419;;;:::o;11078:122::-;11151:24;11169:5;11151:24;:::i;:::-;11144:5;11141:35;11131:63;;11190:1;11187;11180:12;11131:63;11078:122;:::o;11206:143::-;11263:5;11294:6;11288:13;11279:22;;11310:33;11337:5;11310:33;:::i;:::-;11206:143;;;;:::o;11355:351::-;11425:6;11474:2;11462:9;11453:7;11449:23;11445:32;11442:119;;;11480:79;;:::i;:::-;11442:119;11600:1;11625:64;11681:7;11672:6;11661:9;11657:22;11625:64;:::i;:::-;11615:74;;11571:128;11355:351;;;;:::o;11712:220::-;11852:34;11848:1;11840:6;11836:14;11829:58;11921:3;11916:2;11908:6;11904:15;11897:28;11712:220;:::o;11938:366::-;12080:3;12101:67;12165:2;12160:3;12101:67;:::i;:::-;12094:74;;12177:93;12266:3;12177:93;:::i;:::-;12295:2;12290:3;12286:12;12279:19;;11938:366;;;:::o;12310:419::-;12476:4;12514:2;12503:9;12499:18;12491:26;;12563:9;12557:4;12553:20;12549:1;12538:9;12534:17;12527:47;12591:131;12717:4;12591:131;:::i;:::-;12583:139;;12310:419;;;:::o;12735:442::-;12884:4;12922:2;12911:9;12907:18;12899:26;;12935:71;13003:1;12992:9;12988:17;12979:6;12935:71;:::i;:::-;13016:72;13084:2;13073:9;13069:18;13060:6;13016:72;:::i;:::-;13098;13166:2;13155:9;13151:18;13142:6;13098:72;:::i;:::-;12735:442;;;;;;:::o;13183:225::-;13323:34;13319:1;13311:6;13307:14;13300:58;13392:8;13387:2;13379:6;13375:15;13368:33;13183:225;:::o;13414:366::-;13556:3;13577:67;13641:2;13636:3;13577:67;:::i;:::-;13570:74;;13653:93;13742:3;13653:93;:::i;:::-;13771:2;13766:3;13762:12;13755:19;;13414:366;;;:::o;13786:419::-;13952:4;13990:2;13979:9;13975:18;13967:26;;14039:9;14033:4;14029:20;14025:1;14014:9;14010:17;14003:47;14067:131;14193:4;14067:131;:::i;:::-;14059:139;;13786:419;;;:::o;14211:90::-;14245:7;14288:5;14281:13;14274:21;14263:32;;14211:90;;;:::o;14307:116::-;14377:21;14392:5;14377:21;:::i;:::-;14370:5;14367:32;14357:60;;14413:1;14410;14403:12;14357:60;14307:116;:::o;14429:137::-;14483:5;14514:6;14508:13;14499:22;;14530:30;14554:5;14530:30;:::i;:::-;14429:137;;;;:::o;14572:345::-;14639:6;14688:2;14676:9;14667:7;14663:23;14659:32;14656:119;;;14694:79;;:::i;:::-;14656:119;14814:1;14839:61;14892:7;14883:6;14872:9;14868:22;14839:61;:::i;:::-;14829:71;;14785:125;14572:345;;;;:::o;14923:229::-;15063:34;15059:1;15051:6;15047:14;15040:58;15132:12;15127:2;15119:6;15115:15;15108:37;14923:229;:::o;15158:366::-;15300:3;15321:67;15385:2;15380:3;15321:67;:::i;:::-;15314:74;;15397:93;15486:3;15397:93;:::i;:::-;15515:2;15510:3;15506:12;15499:19;;15158:366;;;:::o;15530:419::-;15696:4;15734:2;15723:9;15719:18;15711:26;;15783:9;15777:4;15773:20;15769:1;15758:9;15754:17;15747:47;15811:131;15937:4;15811:131;:::i;:::-;15803:139;;15530:419;;;:::o;15955:225::-;16095:34;16091:1;16083:6;16079:14;16072:58;16164:8;16159:2;16151:6;16147:15;16140:33;15955:225;:::o;16186:366::-;16328:3;16349:67;16413:2;16408:3;16349:67;:::i;:::-;16342:74;;16425:93;16514:3;16425:93;:::i;:::-;16543:2;16538:3;16534:12;16527:19;;16186:366;;;:::o;16558:419::-;16724:4;16762:2;16751:9;16747:18;16739:26;;16811:9;16805:4;16801:20;16797:1;16786:9;16782:17;16775:47;16839:131;16965:4;16839:131;:::i;:::-;16831:139;;16558:419;;;:::o;16983:179::-;17123:31;17119:1;17111:6;17107:14;17100:55;16983:179;:::o;17168:366::-;17310:3;17331:67;17395:2;17390:3;17331:67;:::i;:::-;17324:74;;17407:93;17496:3;17407:93;:::i;:::-;17525:2;17520:3;17516:12;17509:19;;17168:366;;;:::o;17540:419::-;17706:4;17744:2;17733:9;17729:18;17721:26;;17793:9;17787:4;17783:20;17779:1;17768:9;17764:17;17757:47;17821:131;17947:4;17821:131;:::i;:::-;17813:139;;17540:419;;;:::o;17965:98::-;18016:6;18050:5;18044:12;18034:22;;17965:98;;;:::o;18069:147::-;18170:11;18207:3;18192:18;;18069:147;;;;:::o;18222:246::-;18303:1;18313:113;18327:6;18324:1;18321:13;18313:113;;;18412:1;18407:3;18403:11;18397:18;18393:1;18388:3;18384:11;18377:39;18349:2;18346:1;18342:10;18337:15;;18313:113;;;18460:1;18451:6;18446:3;18442:16;18435:27;18284:184;18222:246;;;:::o;18474:386::-;18578:3;18606:38;18638:5;18606:38;:::i;:::-;18660:88;18741:6;18736:3;18660:88;:::i;:::-;18653:95;;18757:65;18815:6;18810:3;18803:4;18796:5;18792:16;18757:65;:::i;:::-;18847:6;18842:3;18838:16;18831:23;;18582:278;18474:386;;;;:::o;18866:271::-;18996:3;19018:93;19107:3;19098:6;19018:93;:::i;:::-;19011:100;;19128:3;19121:10;;18866:271;;;;:::o;19143:99::-;19195:6;19229:5;19223:12;19213:22;;19143:99;;;:::o;19248:102::-;19289:6;19340:2;19336:7;19331:2;19324:5;19320:14;19316:28;19306:38;;19248:102;;;:::o;19356:377::-;19444:3;19472:39;19505:5;19472:39;:::i;:::-;19527:71;19591:6;19586:3;19527:71;:::i;:::-;19520:78;;19607:65;19665:6;19660:3;19653:4;19646:5;19642:16;19607:65;:::i;:::-;19697:29;19719:6;19697:29;:::i;:::-;19692:3;19688:39;19681:46;;19448:285;19356:377;;;;:::o;19739:313::-;19852:4;19890:2;19879:9;19875:18;19867:26;;19939:9;19933:4;19929:20;19925:1;19914:9;19910:17;19903:47;19967:78;20040:4;20031:6;19967:78;:::i;:::-;19959:86;;19739:313;;;;:::o
Swarm Source
ipfs://cae4b2c01f7292042300a0d85e9ed4b136b9922ebdfafc121bd8408edd7eb3be
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 29 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.