Source Code
Latest 25 from a total of 2,176 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Buy Tokens | 9599622 | 182 days ago | IN | 3.73026 HYPE | 0.00001437 | ||||
| Buy Tokens | 9599562 | 182 days ago | IN | 8.94 HYPE | 0.00001375 | ||||
| Buy Tokens | 9599513 | 182 days ago | IN | 9.8056 HYPE | 0.00001272 | ||||
| Buy Tokens | 9599446 | 182 days ago | IN | 6.60226 HYPE | 0.00001365 | ||||
| Buy Tokens | 9599391 | 182 days ago | IN | 9.20052 HYPE | 0.00001272 | ||||
| Buy Tokens | 9599313 | 182 days ago | IN | 4.86 HYPE | 0.00001602 | ||||
| Buy Tokens | 9599243 | 182 days ago | IN | 4.426 HYPE | 0.00001272 | ||||
| Buy Tokens | 9599188 | 182 days ago | IN | 9.08904 HYPE | 0.00004576 | ||||
| Buy Tokens | 9599100 | 182 days ago | IN | 6.68 HYPE | 0.00001379 | ||||
| Buy Tokens | 9599055 | 182 days ago | IN | 4.27448 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598982 | 182 days ago | IN | 3.50412 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598919 | 182 days ago | IN | 5.5328 HYPE | 0.00001371 | ||||
| Buy Tokens | 9598744 | 182 days ago | IN | 3.66 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598672 | 182 days ago | IN | 6.501 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598611 | 182 days ago | IN | 4.762 HYPE | 0.00001335 | ||||
| Buy Tokens | 9598554 | 182 days ago | IN | 6.61262 HYPE | 0.00001434 | ||||
| Buy Tokens | 9598495 | 182 days ago | IN | 4.75008 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598431 | 182 days ago | IN | 3.59 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598378 | 182 days ago | IN | 10.105 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598332 | 182 days ago | IN | 6.83144 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598283 | 182 days ago | IN | 8.2848 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598153 | 182 days ago | IN | 6.73954 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598109 | 182 days ago | IN | 8.648 HYPE | 0.00001272 | ||||
| Buy Tokens | 9598036 | 182 days ago | IN | 6.53 HYPE | 0.00001272 | ||||
| Buy Tokens | 9597952 | 182 days ago | IN | 4.9714 HYPE | 0.00001272 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 9599622 | 182 days ago | 3.73026 HYPE | ||||
| 9599562 | 182 days ago | 8.94 HYPE | ||||
| 9599513 | 182 days ago | 9.8056 HYPE | ||||
| 9599446 | 182 days ago | 6.60226 HYPE | ||||
| 9599391 | 182 days ago | 9.20052 HYPE | ||||
| 9599313 | 182 days ago | 4.86 HYPE | ||||
| 9599243 | 182 days ago | 4.426 HYPE | ||||
| 9599188 | 182 days ago | 9.08904 HYPE | ||||
| 9599100 | 182 days ago | 6.68 HYPE | ||||
| 9599055 | 182 days ago | 4.27448 HYPE | ||||
| 9598982 | 182 days ago | 3.50412 HYPE | ||||
| 9598919 | 182 days ago | 5.5328 HYPE | ||||
| 9598744 | 182 days ago | 3.66 HYPE | ||||
| 9598672 | 182 days ago | 6.501 HYPE | ||||
| 9598611 | 182 days ago | 4.762 HYPE | ||||
| 9598554 | 182 days ago | 6.61262 HYPE | ||||
| 9598495 | 182 days ago | 4.75008 HYPE | ||||
| 9598431 | 182 days ago | 3.59 HYPE | ||||
| 9598378 | 182 days ago | 10.105 HYPE | ||||
| 9598332 | 182 days ago | 6.83144 HYPE | ||||
| 9598283 | 182 days ago | 8.2848 HYPE | ||||
| 9598153 | 182 days ago | 6.73954 HYPE | ||||
| 9598109 | 182 days ago | 8.648 HYPE | ||||
| 9598036 | 182 days ago | 6.53 HYPE | ||||
| 9597952 | 182 days ago | 4.9714 HYPE |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Presale
Compiler Version
v0.8.27+commit.40a35a09
Contract Source Code (Solidity)
/**
*Submitted for verification at hyperevmscan.io on 2025-07-17
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface for the optional metadata functions from the ERC-20 standard.
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;
/**
* @dev Standard ERC-20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
*/
interface IERC20Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC20InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC20InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
* @param spender Address that may be allowed to operate on tokens without being their owner.
* @param allowance Amount of tokens a `spender` is allowed to operate with.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC20InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `spender` to be approved. Used in approvals.
* @param spender Address that may be allowed to operate on tokens without being their owner.
*/
error ERC20InvalidSpender(address spender);
}
/**
* @dev Standard ERC-721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
*/
interface IERC721Errors {
/**
* @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
* Used in balance queries.
* @param owner Address of the current owner of a token.
*/
error ERC721InvalidOwner(address owner);
/**
* @dev Indicates a `tokenId` whose `owner` is the zero address.
* @param tokenId Identifier number of a token.
*/
error ERC721NonexistentToken(uint256 tokenId);
/**
* @dev Indicates an error related to the ownership over a particular token. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param tokenId Identifier number of a token.
* @param owner Address of the current owner of a token.
*/
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC721InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC721InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param tokenId Identifier number of a token.
*/
error ERC721InsufficientApproval(address operator, uint256 tokenId);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC721InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC721InvalidOperator(address operator);
}
/**
* @dev Standard ERC-1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
*/
interface IERC1155Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
* @param tokenId Identifier number of a token.
*/
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC1155InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC1155InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param owner Address of the current owner of a token.
*/
error ERC1155MissingApprovalForAll(address operator, address owner);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC1155InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC1155InvalidOperator(address operator);
/**
* @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
* Used in batch transfers.
* @param idsLength Length of the array of token identifiers
* @param valuesLength Length of the array of token amounts
*/
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}
// File: @openzeppelin/contracts/token/ERC20/ERC20.sol
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC-20
* applications.
*/
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address account => uint256) private _balances;
mapping(address account => mapping(address spender => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* Both values are immutable: they can only be set once during construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Skips emitting an {Approval} event indicating an allowance update. This is not
* required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `value`.
* - the caller must have allowance for ``from``'s tokens of at least
* `value`.
*/
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
/**
* @dev Moves a `value` amount of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _transfer(address from, address to, uint256 value) internal {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
}
/**
* @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
* (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
* this function.
*
* Emits a {Transfer} event.
*/
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
_balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
_totalSupply -= value;
}
} else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
/**
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
* Relies on the `_update` mechanism
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
* Relies on the `_update` mechanism.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead
*/
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
/**
* @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*
* Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
*/
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
/**
* @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
*
* By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
* `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
* `Approval` event during `transferFrom` operations.
*
* Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
* true using the following override:
*
* ```solidity
* function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
* super._approve(owner, spender, value, true);
* }
* ```
*
* Requirements are the same as {_approve}.
*/
function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
if (owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[owner][spender] = value;
if (emitEvent) {
emit Approval(owner, spender, value);
}
}
/**
* @dev Updates `owner`'s allowance for `spender` based on spent `value`.
*
* Does not update the allowance value in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Does not emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance < type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(spender, currentAllowance, value);
}
unchecked {
_approve(owner, spender, currentAllowance - value, false);
}
}
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File: Presale.sol
pragma solidity ^0.8.27;
contract Presale is Ownable {
uint256 public currentPresaleRound;
address public fundReceiver;
address public validator;
uint256 public totalAmountRaised;
uint256 public totalBuys;
uint256 public totalTokenSold;
mapping(uint256 => uint256) public roundPrices;
mapping(uint256 => uint256) public roundTokenSupply;
mapping(uint256 => uint256) public roundTokenSupplySold;
mapping(uint256 => uint256[2]) public roundDurationTimestamps;
mapping(address => uint256) public userBought;
IERC20 public token;
event TokenPurchase(
address indexed buyer,
uint256 indexed tokenAmount,
uint256 indexed payment
);
constructor(address _token) Ownable(msg.sender) {
Ownable(msg.sender);
token = ERC20(_token);
}
function setRoundDurationTimestamps(
uint256 _presaleRound,
uint256 _beginning,
uint256 _end
) public onlyOwner {
roundDurationTimestamps[_presaleRound] = [_beginning, _end];
}
function calculateEthPriceForTokens(uint256 tokenAmount)
public
view
returns (uint256)
{
uint256 ethAmount = (tokenAmount * roundPrices[currentPresaleRound]) /
1 ether;
return ethAmount;
}
function getPurchasedTokens(uint256 weiAmount)
public
view
returns (uint256)
{
uint256 tokenPriceInWei = roundPrices[currentPresaleRound];
return (weiAmount * 1 ether) / tokenPriceInWei;
}
function setPresaleToken(address _token) public onlyOwner {
require(_token != address(0), "address cannot be zero");
token = IERC20(_token);
}
// for cases receiving eth
function withdraw() public onlyOwner {
(bool sent, ) = owner().call{value: address(this).balance}("");
require(sent, "Transaction Failed!");
}
//emergency reasons for withdraw tokens
function withdrawToken() public onlyOwner {
token.transfer(owner(), token.balanceOf(address(this)));
}
function setFundReceiver(address _fundReceiver) public onlyOwner {
require(_fundReceiver != address(0), "address cannot be zero");
fundReceiver = _fundReceiver;
}
function setCurrentPresaleRound(uint256 _value) public onlyOwner {
currentPresaleRound = _value;
}
function setRoundPrice(uint256 _round, uint256 _price) public onlyOwner {
roundPrices[_round] = _price; //
}
function setRoundTokenSupply(uint256 _round, uint256 _supply)
public
onlyOwner
{
roundTokenSupply[_round] = _supply;
}
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
function BuyTokens(uint256 _tokenAmount) public payable {
require(currentPresaleRound != 0, "Presale is not active");
require(!isContract(msg.sender), "no contracts allowed");
require(_tokenAmount > 0, "no amount sent");
require(
roundTokenSupplySold[currentPresaleRound] + _tokenAmount <=
roundTokenSupply[currentPresaleRound],
"token round supply exceed"
);
require(
block.timestamp >=
roundDurationTimestamps[currentPresaleRound][0] &&
block.timestamp <
roundDurationTimestamps[currentPresaleRound][1],
"you're out of time"
);
uint256 totalPrice = calculateEthPriceForTokens(_tokenAmount);
require(msg.value == totalPrice, "incorrect msg value");
(bool sent, ) = fundReceiver.call{value: msg.value}("");
require(sent, "Transfer Failed");
token.transfer(msg.sender, _tokenAmount);
totalBuys++;
totalTokenSold += _tokenAmount;
totalAmountRaised += totalPrice;
userBought[msg.sender] += _tokenAmount;
roundTokenSupplySold[currentPresaleRound] += _tokenAmount;
emit TokenPurchase(msg.sender, _tokenAmount, totalPrice);
}
function setValidator(address _newValidator) public onlyOwner {
validator = _newValidator;
}
function SendBoughtTokens(address _recipient, uint256 _tokenAmount) public {
require(currentPresaleRound != 0, "Presale is not active");
require(!isContract(_recipient), "no contracts allowed");
require(_tokenAmount > 0, "no amount sent");
require(
roundTokenSupplySold[currentPresaleRound] + _tokenAmount <=
roundTokenSupply[currentPresaleRound],
"token round supply exceed"
);
require(msg.sender == validator, "incorrect validator");
require(
block.timestamp >=
roundDurationTimestamps[currentPresaleRound][0] &&
block.timestamp <
roundDurationTimestamps[currentPresaleRound][1],
"you're out of time"
);
uint256 totalPrice = calculateEthPriceForTokens(_tokenAmount);
token.transfer(_recipient, _tokenAmount);
totalBuys++;
totalTokenSold += _tokenAmount;
totalAmountRaised += totalPrice;
userBought[_recipient] += _tokenAmount;
roundTokenSupplySold[currentPresaleRound] += _tokenAmount;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"payment","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"BuyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"SendBoughtTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"calculateEthPriceForTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPresaleRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"getPurchasedTokens","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"roundDurationTimestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roundPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roundTokenSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roundTokenSupplySold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setCurrentPresaleRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fundReceiver","type":"address"}],"name":"setFundReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setPresaleToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_presaleRound","type":"uint256"},{"internalType":"uint256","name":"_beginning","type":"uint256"},{"internalType":"uint256","name":"_end","type":"uint256"}],"name":"setRoundDurationTimestamps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setRoundPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"setRoundTokenSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newValidator","type":"address"}],"name":"setValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAmountRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenSold","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":"","type":"address"}],"name":"userBought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"validator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561000f575f5ffd5b5060405161236138038061236183398181016040528101906100319190610217565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610251565b60405180910390fd5b6100b1816100f860201b60201c565b5080600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061026a565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101e6826101bd565b9050919050565b6101f6816101dc565b8114610200575f5ffd5b50565b5f81519050610211816101ed565b92915050565b5f6020828403121561022c5761022b6101b9565b5b5f61023984828501610203565b91505092915050565b61024b816101dc565b82525050565b5f6020820190506102645f830184610242565b92915050565b6120ea806102775f395ff3fe6080604052600436106101b6575f3560e01c806389749adb116100eb578063e37242f911610089578063f4adc35b11610063578063f4adc35b146105bc578063fb4aa0a1146105f8578063fc0c546a14610622578063fd4bf2021461064c576101b6565b8063e37242f914610544578063e6ec24d41461056c578063f2fde38b14610594576101b6565b8063b5f7f636116100c5578063b5f7f6361461048c578063bed0b3e6146104b6578063c4a717cf146104f2578063ca628c781461052e576101b6565b806389749adb1461040a5780638da5cb5b146104265780639e2b8d8214610450576101b6565b80634df3cce411610158578063785827d611610132578063785827d61461032e578063793e0d411461035657806380eeaa5314610392578063815d16cb146103ce576101b6565b80634df3cce4146102c65780636c7f3f17146102ee578063715018a614610318576101b6565b806330397bf11161019457806330397bf1146102345780633a5381b51461025e5780633ccfd60b146102885780633ce00bb41461029e576101b6565b80631327d3d8146101ba578063242d7dba146101e257806327ff03661461020c575b5f5ffd5b3480156101c5575f5ffd5b506101e060048036038101906101db919061179a565b610674565b005b3480156101ed575f5ffd5b506101f66106bf565b60405161020391906117dd565b60405180910390f35b348015610217575f5ffd5b50610232600480360381019061022d9190611820565b6106c5565b005b34801561023f575f5ffd5b50610248610aa3565b60405161025591906117dd565b60405180910390f35b348015610269575f5ffd5b50610272610aa9565b60405161027f919061186d565b60405180910390f35b348015610293575f5ffd5b5061029c610ace565b005b3480156102a9575f5ffd5b506102c460048036038101906102bf9190611886565b610b88565b005b3480156102d1575f5ffd5b506102ec60048036038101906102e7919061179a565b610baa565b005b3480156102f9575f5ffd5b50610302610c63565b60405161030f91906117dd565b60405180910390f35b348015610323575f5ffd5b5061032c610c69565b005b348015610339575f5ffd5b50610354600480360381019061034f9190611886565b610c7c565b005b348015610361575f5ffd5b5061037c600480360381019061037791906118c4565b610c9e565b60405161038991906117dd565b60405180910390f35b34801561039d575f5ffd5b506103b860048036038101906103b391906118c4565b610cdd565b6040516103c591906117dd565b60405180910390f35b3480156103d9575f5ffd5b506103f460048036038101906103ef91906118c4565b610cf2565b60405161040191906117dd565b60405180910390f35b610424600480360381019061041f91906118c4565b610d07565b005b348015610431575f5ffd5b5061043a6111a6565b604051610447919061186d565b60405180910390f35b34801561045b575f5ffd5b50610476600480360381019061047191906118c4565b6111cd565b60405161048391906117dd565b60405180910390f35b348015610497575f5ffd5b506104a061120c565b6040516104ad91906117dd565b60405180910390f35b3480156104c1575f5ffd5b506104dc60048036038101906104d791906118c4565b611212565b6040516104e991906117dd565b60405180910390f35b3480156104fd575f5ffd5b506105186004803603810190610513919061179a565b611227565b60405161052591906117dd565b60405180910390f35b348015610539575f5ffd5b5061054261123c565b005b34801561054f575f5ffd5b5061056a6004803603810190610565919061179a565b611382565b005b348015610577575f5ffd5b50610592600480360381019061058d91906118ef565b61143b565b005b34801561059f575f5ffd5b506105ba60048036038101906105b5919061179a565b61147d565b005b3480156105c7575f5ffd5b506105e260048036038101906105dd9190611886565b611501565b6040516105ef91906117dd565b60405180910390f35b348015610603575f5ffd5b5061060c611525565b604051610619919061186d565b60405180910390f35b34801561062d575f5ffd5b5061063661154a565b604051610643919061199a565b60405180910390f35b348015610657575f5ffd5b50610672600480360381019061066d91906118c4565b61156f565b005b61067c611581565b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b5f60015403610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070090611a0d565b60405180910390fd5b61071282611608565b15610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990611a75565b60405180910390fd5b5f8111610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078b90611add565b60405180910390fd5b60085f60015481526020019081526020015f20548160095f60015481526020019081526020015f20546107c79190611b28565b1115610808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ff90611ba5565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e90611c0d565b60405180910390fd5b600a5f60015481526020019081526020015f205f600281106108bc576108bb611c2b565b5b015442101580156108f35750600a5f60015481526020019081526020015f206001600281106108ee576108ed611c2b565b5b015442105b610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092990611ca2565b60405180910390fd5b5f61093c82610c9e565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b815260040161099a929190611cc0565b6020604051808303815f875af11580156109b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109da9190611d1c565b5060055f8154809291906109ed90611d47565b91905055508160065f828254610a039190611b28565b925050819055508060045f828254610a1b9190611b28565b9250508190555081600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a6e9190611b28565b925050819055508160095f60015481526020019081526020015f205f828254610a979190611b28565b92505081905550505050565b60015481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ad6611581565b5f610adf6111a6565b73ffffffffffffffffffffffffffffffffffffffff1647604051610b0290611dbb565b5f6040518083038185875af1925050503d805f8114610b3c576040519150601f19603f3d011682016040523d82523d5f602084013e610b41565b606091505b5050905080610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90611e19565b60405180910390fd5b50565b610b90611581565b8060075f8481526020019081526020015f20819055505050565b610bb2611581565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611e81565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b610c71611581565b610c7a5f611619565b565b610c84611581565b8060085f8481526020019081526020015f20819055505050565b5f5f670de0b6b3a764000060075f60015481526020019081526020015f205484610cc89190611e9f565b610cd29190611f0d565b905080915050919050565b6009602052805f5260405f205f915090505481565b6007602052805f5260405f205f915090505481565b5f60015403610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290611a0d565b60405180910390fd5b610d5433611608565b15610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90611a75565b60405180910390fd5b5f8111610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90611add565b60405180910390fd5b60085f60015481526020019081526020015f20548160095f60015481526020019081526020015f2054610e099190611b28565b1115610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4190611ba5565b60405180910390fd5b600a5f60015481526020019081526020015f205f60028110610e6f57610e6e611c2b565b5b01544210158015610ea65750600a5f60015481526020019081526020015f20600160028110610ea157610ea0611c2b565b5b015442105b610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc90611ca2565b60405180910390fd5b5f610eef82610c9e565b9050803414610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90611f87565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610f7990611dbb565b5f6040518083038185875af1925050503d805f8114610fb3576040519150601f19603f3d011682016040523d82523d5f602084013e610fb8565b606091505b5050905080610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff390611fef565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401611058929190611cc0565b6020604051808303815f875af1158015611074573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110989190611d1c565b5060055f8154809291906110ab90611d47565b91905055508260065f8282546110c19190611b28565b925050819055508160045f8282546110d99190611b28565b9250508190555082600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461112c9190611b28565b925050819055508260095f60015481526020019081526020015f205f8282546111559190611b28565b9250508190555081833373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f60405160405180910390a4505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5f60075f60015481526020019081526020015f2054905080670de0b6b3a7640000846111fa9190611e9f565b6112049190611f0d565b915050919050565b60065481565b6008602052805f5260405f205f915090505481565b600b602052805f5260405f205f915090505481565b611244611581565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6112896111a6565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112e3919061186d565b602060405180830381865afa1580156112fe573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113229190612021565b6040518363ffffffff1660e01b815260040161133f929190611cc0565b6020604051808303815f875af115801561135b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137f9190611d1c565b50565b61138a611581565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90612096565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611443611581565b604051806040016040528083815260200182815250600a5f8581526020019081526020015f209060026114779291906116e1565b50505050565b611485611581565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f5575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016114ec919061186d565b60405180910390fd5b6114fe81611619565b50565b600a602052815f5260405f20816002811061151a575f80fd5b015f91509150505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611577611581565b8060018190555050565b6115896116da565b73ffffffffffffffffffffffffffffffffffffffff166115a76111a6565b73ffffffffffffffffffffffffffffffffffffffff1614611606576115ca6116da565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016115fd919061186d565b60405180910390fd5b565b5f5f823b90505f8111915050919050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b8260028101928215611710579160200282015b8281111561170f5782518255916020019190600101906116f4565b5b50905061171d9190611721565b5090565b5b80821115611738575f815f905550600101611722565b5090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61176982611740565b9050919050565b6117798161175f565b8114611783575f5ffd5b50565b5f8135905061179481611770565b92915050565b5f602082840312156117af576117ae61173c565b5b5f6117bc84828501611786565b91505092915050565b5f819050919050565b6117d7816117c5565b82525050565b5f6020820190506117f05f8301846117ce565b92915050565b6117ff816117c5565b8114611809575f5ffd5b50565b5f8135905061181a816117f6565b92915050565b5f5f604083850312156118365761183561173c565b5b5f61184385828601611786565b92505060206118548582860161180c565b9150509250929050565b6118678161175f565b82525050565b5f6020820190506118805f83018461185e565b92915050565b5f5f6040838503121561189c5761189b61173c565b5b5f6118a98582860161180c565b92505060206118ba8582860161180c565b9150509250929050565b5f602082840312156118d9576118d861173c565b5b5f6118e68482850161180c565b91505092915050565b5f5f5f606084860312156119065761190561173c565b5b5f6119138682870161180c565b93505060206119248682870161180c565b92505060406119358682870161180c565b9150509250925092565b5f819050919050565b5f61196261195d61195884611740565b61193f565b611740565b9050919050565b5f61197382611948565b9050919050565b5f61198482611969565b9050919050565b6119948161197a565b82525050565b5f6020820190506119ad5f83018461198b565b92915050565b5f82825260208201905092915050565b7f50726573616c65206973206e6f742061637469766500000000000000000000005f82015250565b5f6119f76015836119b3565b9150611a02826119c3565b602082019050919050565b5f6020820190508181035f830152611a24816119eb565b9050919050565b7f6e6f20636f6e74726163747320616c6c6f7765640000000000000000000000005f82015250565b5f611a5f6014836119b3565b9150611a6a82611a2b565b602082019050919050565b5f6020820190508181035f830152611a8c81611a53565b9050919050565b7f6e6f20616d6f756e742073656e740000000000000000000000000000000000005f82015250565b5f611ac7600e836119b3565b9150611ad282611a93565b602082019050919050565b5f6020820190508181035f830152611af481611abb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b32826117c5565b9150611b3d836117c5565b9250828201905080821115611b5557611b54611afb565b5b92915050565b7f746f6b656e20726f756e6420737570706c7920657863656564000000000000005f82015250565b5f611b8f6019836119b3565b9150611b9a82611b5b565b602082019050919050565b5f6020820190508181035f830152611bbc81611b83565b9050919050565b7f696e636f72726563742076616c696461746f72000000000000000000000000005f82015250565b5f611bf76013836119b3565b9150611c0282611bc3565b602082019050919050565b5f6020820190508181035f830152611c2481611beb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f796f75277265206f7574206f662074696d6500000000000000000000000000005f82015250565b5f611c8c6012836119b3565b9150611c9782611c58565b602082019050919050565b5f6020820190508181035f830152611cb981611c80565b9050919050565b5f604082019050611cd35f83018561185e565b611ce060208301846117ce565b9392505050565b5f8115159050919050565b611cfb81611ce7565b8114611d05575f5ffd5b50565b5f81519050611d1681611cf2565b92915050565b5f60208284031215611d3157611d3061173c565b5b5f611d3e84828501611d08565b91505092915050565b5f611d51826117c5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d8357611d82611afb565b5b600182019050919050565b5f81905092915050565b50565b5f611da65f83611d8e565b9150611db182611d98565b5f82019050919050565b5f611dc582611d9b565b9150819050919050565b7f5472616e73616374696f6e204661696c656421000000000000000000000000005f82015250565b5f611e036013836119b3565b9150611e0e82611dcf565b602082019050919050565b5f6020820190508181035f830152611e3081611df7565b9050919050565b7f616464726573732063616e6e6f7420626520207a65726f0000000000000000005f82015250565b5f611e6b6017836119b3565b9150611e7682611e37565b602082019050919050565b5f6020820190508181035f830152611e9881611e5f565b9050919050565b5f611ea9826117c5565b9150611eb4836117c5565b9250828202611ec2816117c5565b91508282048414831517611ed957611ed8611afb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611f17826117c5565b9150611f22836117c5565b925082611f3257611f31611ee0565b5b828204905092915050565b7f696e636f7272656374206d73672076616c7565000000000000000000000000005f82015250565b5f611f716013836119b3565b9150611f7c82611f3d565b602082019050919050565b5f6020820190508181035f830152611f9e81611f65565b9050919050565b7f5472616e73666572204661696c656400000000000000000000000000000000005f82015250565b5f611fd9600f836119b3565b9150611fe482611fa5565b602082019050919050565b5f6020820190508181035f83015261200681611fcd565b9050919050565b5f8151905061201b816117f6565b92915050565b5f602082840312156120365761203561173c565b5b5f6120438482850161200d565b91505092915050565b7f616464726573732063616e6e6f74206265207a65726f000000000000000000005f82015250565b5f6120806016836119b3565b915061208b8261204c565b602082019050919050565b5f6020820190508181035f8301526120ad81612074565b905091905056fea264697066735822122028670d9edb204d9127ad8e12560ffabff2377c8f3ec6253b2384c2e46a01225864736f6c634300081b0033000000000000000000000000430830160d17ecabecd0d4bbfce2190e0fc6b9c7
Deployed Bytecode
0x6080604052600436106101b6575f3560e01c806389749adb116100eb578063e37242f911610089578063f4adc35b11610063578063f4adc35b146105bc578063fb4aa0a1146105f8578063fc0c546a14610622578063fd4bf2021461064c576101b6565b8063e37242f914610544578063e6ec24d41461056c578063f2fde38b14610594576101b6565b8063b5f7f636116100c5578063b5f7f6361461048c578063bed0b3e6146104b6578063c4a717cf146104f2578063ca628c781461052e576101b6565b806389749adb1461040a5780638da5cb5b146104265780639e2b8d8214610450576101b6565b80634df3cce411610158578063785827d611610132578063785827d61461032e578063793e0d411461035657806380eeaa5314610392578063815d16cb146103ce576101b6565b80634df3cce4146102c65780636c7f3f17146102ee578063715018a614610318576101b6565b806330397bf11161019457806330397bf1146102345780633a5381b51461025e5780633ccfd60b146102885780633ce00bb41461029e576101b6565b80631327d3d8146101ba578063242d7dba146101e257806327ff03661461020c575b5f5ffd5b3480156101c5575f5ffd5b506101e060048036038101906101db919061179a565b610674565b005b3480156101ed575f5ffd5b506101f66106bf565b60405161020391906117dd565b60405180910390f35b348015610217575f5ffd5b50610232600480360381019061022d9190611820565b6106c5565b005b34801561023f575f5ffd5b50610248610aa3565b60405161025591906117dd565b60405180910390f35b348015610269575f5ffd5b50610272610aa9565b60405161027f919061186d565b60405180910390f35b348015610293575f5ffd5b5061029c610ace565b005b3480156102a9575f5ffd5b506102c460048036038101906102bf9190611886565b610b88565b005b3480156102d1575f5ffd5b506102ec60048036038101906102e7919061179a565b610baa565b005b3480156102f9575f5ffd5b50610302610c63565b60405161030f91906117dd565b60405180910390f35b348015610323575f5ffd5b5061032c610c69565b005b348015610339575f5ffd5b50610354600480360381019061034f9190611886565b610c7c565b005b348015610361575f5ffd5b5061037c600480360381019061037791906118c4565b610c9e565b60405161038991906117dd565b60405180910390f35b34801561039d575f5ffd5b506103b860048036038101906103b391906118c4565b610cdd565b6040516103c591906117dd565b60405180910390f35b3480156103d9575f5ffd5b506103f460048036038101906103ef91906118c4565b610cf2565b60405161040191906117dd565b60405180910390f35b610424600480360381019061041f91906118c4565b610d07565b005b348015610431575f5ffd5b5061043a6111a6565b604051610447919061186d565b60405180910390f35b34801561045b575f5ffd5b50610476600480360381019061047191906118c4565b6111cd565b60405161048391906117dd565b60405180910390f35b348015610497575f5ffd5b506104a061120c565b6040516104ad91906117dd565b60405180910390f35b3480156104c1575f5ffd5b506104dc60048036038101906104d791906118c4565b611212565b6040516104e991906117dd565b60405180910390f35b3480156104fd575f5ffd5b506105186004803603810190610513919061179a565b611227565b60405161052591906117dd565b60405180910390f35b348015610539575f5ffd5b5061054261123c565b005b34801561054f575f5ffd5b5061056a6004803603810190610565919061179a565b611382565b005b348015610577575f5ffd5b50610592600480360381019061058d91906118ef565b61143b565b005b34801561059f575f5ffd5b506105ba60048036038101906105b5919061179a565b61147d565b005b3480156105c7575f5ffd5b506105e260048036038101906105dd9190611886565b611501565b6040516105ef91906117dd565b60405180910390f35b348015610603575f5ffd5b5061060c611525565b604051610619919061186d565b60405180910390f35b34801561062d575f5ffd5b5061063661154a565b604051610643919061199a565b60405180910390f35b348015610657575f5ffd5b50610672600480360381019061066d91906118c4565b61156f565b005b61067c611581565b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b5f60015403610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070090611a0d565b60405180910390fd5b61071282611608565b15610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990611a75565b60405180910390fd5b5f8111610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078b90611add565b60405180910390fd5b60085f60015481526020019081526020015f20548160095f60015481526020019081526020015f20546107c79190611b28565b1115610808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ff90611ba5565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088e90611c0d565b60405180910390fd5b600a5f60015481526020019081526020015f205f600281106108bc576108bb611c2b565b5b015442101580156108f35750600a5f60015481526020019081526020015f206001600281106108ee576108ed611c2b565b5b015442105b610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092990611ca2565b60405180910390fd5b5f61093c82610c9e565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b815260040161099a929190611cc0565b6020604051808303815f875af11580156109b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109da9190611d1c565b5060055f8154809291906109ed90611d47565b91905055508160065f828254610a039190611b28565b925050819055508060045f828254610a1b9190611b28565b9250508190555081600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a6e9190611b28565b925050819055508160095f60015481526020019081526020015f205f828254610a979190611b28565b92505081905550505050565b60015481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ad6611581565b5f610adf6111a6565b73ffffffffffffffffffffffffffffffffffffffff1647604051610b0290611dbb565b5f6040518083038185875af1925050503d805f8114610b3c576040519150601f19603f3d011682016040523d82523d5f602084013e610b41565b606091505b5050905080610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90611e19565b60405180910390fd5b50565b610b90611581565b8060075f8481526020019081526020015f20819055505050565b610bb2611581565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611e81565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b610c71611581565b610c7a5f611619565b565b610c84611581565b8060085f8481526020019081526020015f20819055505050565b5f5f670de0b6b3a764000060075f60015481526020019081526020015f205484610cc89190611e9f565b610cd29190611f0d565b905080915050919050565b6009602052805f5260405f205f915090505481565b6007602052805f5260405f205f915090505481565b5f60015403610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290611a0d565b60405180910390fd5b610d5433611608565b15610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90611a75565b60405180910390fd5b5f8111610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90611add565b60405180910390fd5b60085f60015481526020019081526020015f20548160095f60015481526020019081526020015f2054610e099190611b28565b1115610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4190611ba5565b60405180910390fd5b600a5f60015481526020019081526020015f205f60028110610e6f57610e6e611c2b565b5b01544210158015610ea65750600a5f60015481526020019081526020015f20600160028110610ea157610ea0611c2b565b5b015442105b610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc90611ca2565b60405180910390fd5b5f610eef82610c9e565b9050803414610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90611f87565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1634604051610f7990611dbb565b5f6040518083038185875af1925050503d805f8114610fb3576040519150601f19603f3d011682016040523d82523d5f602084013e610fb8565b606091505b5050905080610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff390611fef565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401611058929190611cc0565b6020604051808303815f875af1158015611074573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110989190611d1c565b5060055f8154809291906110ab90611d47565b91905055508260065f8282546110c19190611b28565b925050819055508160045f8282546110d99190611b28565b9250508190555082600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461112c9190611b28565b925050819055508260095f60015481526020019081526020015f205f8282546111559190611b28565b9250508190555081833373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f60405160405180910390a4505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5f60075f60015481526020019081526020015f2054905080670de0b6b3a7640000846111fa9190611e9f565b6112049190611f0d565b915050919050565b60065481565b6008602052805f5260405f205f915090505481565b600b602052805f5260405f205f915090505481565b611244611581565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6112896111a6565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112e3919061186d565b602060405180830381865afa1580156112fe573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113229190612021565b6040518363ffffffff1660e01b815260040161133f929190611cc0565b6020604051808303815f875af115801561135b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137f9190611d1c565b50565b61138a611581565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90612096565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611443611581565b604051806040016040528083815260200182815250600a5f8581526020019081526020015f209060026114779291906116e1565b50505050565b611485611581565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f5575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016114ec919061186d565b60405180910390fd5b6114fe81611619565b50565b600a602052815f5260405f20816002811061151a575f80fd5b015f91509150505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611577611581565b8060018190555050565b6115896116da565b73ffffffffffffffffffffffffffffffffffffffff166115a76111a6565b73ffffffffffffffffffffffffffffffffffffffff1614611606576115ca6116da565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016115fd919061186d565b60405180910390fd5b565b5f5f823b90505f8111915050919050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b8260028101928215611710579160200282015b8281111561170f5782518255916020019190600101906116f4565b5b50905061171d9190611721565b5090565b5b80821115611738575f815f905550600101611722565b5090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61176982611740565b9050919050565b6117798161175f565b8114611783575f5ffd5b50565b5f8135905061179481611770565b92915050565b5f602082840312156117af576117ae61173c565b5b5f6117bc84828501611786565b91505092915050565b5f819050919050565b6117d7816117c5565b82525050565b5f6020820190506117f05f8301846117ce565b92915050565b6117ff816117c5565b8114611809575f5ffd5b50565b5f8135905061181a816117f6565b92915050565b5f5f604083850312156118365761183561173c565b5b5f61184385828601611786565b92505060206118548582860161180c565b9150509250929050565b6118678161175f565b82525050565b5f6020820190506118805f83018461185e565b92915050565b5f5f6040838503121561189c5761189b61173c565b5b5f6118a98582860161180c565b92505060206118ba8582860161180c565b9150509250929050565b5f602082840312156118d9576118d861173c565b5b5f6118e68482850161180c565b91505092915050565b5f5f5f606084860312156119065761190561173c565b5b5f6119138682870161180c565b93505060206119248682870161180c565b92505060406119358682870161180c565b9150509250925092565b5f819050919050565b5f61196261195d61195884611740565b61193f565b611740565b9050919050565b5f61197382611948565b9050919050565b5f61198482611969565b9050919050565b6119948161197a565b82525050565b5f6020820190506119ad5f83018461198b565b92915050565b5f82825260208201905092915050565b7f50726573616c65206973206e6f742061637469766500000000000000000000005f82015250565b5f6119f76015836119b3565b9150611a02826119c3565b602082019050919050565b5f6020820190508181035f830152611a24816119eb565b9050919050565b7f6e6f20636f6e74726163747320616c6c6f7765640000000000000000000000005f82015250565b5f611a5f6014836119b3565b9150611a6a82611a2b565b602082019050919050565b5f6020820190508181035f830152611a8c81611a53565b9050919050565b7f6e6f20616d6f756e742073656e740000000000000000000000000000000000005f82015250565b5f611ac7600e836119b3565b9150611ad282611a93565b602082019050919050565b5f6020820190508181035f830152611af481611abb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b32826117c5565b9150611b3d836117c5565b9250828201905080821115611b5557611b54611afb565b5b92915050565b7f746f6b656e20726f756e6420737570706c7920657863656564000000000000005f82015250565b5f611b8f6019836119b3565b9150611b9a82611b5b565b602082019050919050565b5f6020820190508181035f830152611bbc81611b83565b9050919050565b7f696e636f72726563742076616c696461746f72000000000000000000000000005f82015250565b5f611bf76013836119b3565b9150611c0282611bc3565b602082019050919050565b5f6020820190508181035f830152611c2481611beb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f796f75277265206f7574206f662074696d6500000000000000000000000000005f82015250565b5f611c8c6012836119b3565b9150611c9782611c58565b602082019050919050565b5f6020820190508181035f830152611cb981611c80565b9050919050565b5f604082019050611cd35f83018561185e565b611ce060208301846117ce565b9392505050565b5f8115159050919050565b611cfb81611ce7565b8114611d05575f5ffd5b50565b5f81519050611d1681611cf2565b92915050565b5f60208284031215611d3157611d3061173c565b5b5f611d3e84828501611d08565b91505092915050565b5f611d51826117c5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d8357611d82611afb565b5b600182019050919050565b5f81905092915050565b50565b5f611da65f83611d8e565b9150611db182611d98565b5f82019050919050565b5f611dc582611d9b565b9150819050919050565b7f5472616e73616374696f6e204661696c656421000000000000000000000000005f82015250565b5f611e036013836119b3565b9150611e0e82611dcf565b602082019050919050565b5f6020820190508181035f830152611e3081611df7565b9050919050565b7f616464726573732063616e6e6f7420626520207a65726f0000000000000000005f82015250565b5f611e6b6017836119b3565b9150611e7682611e37565b602082019050919050565b5f6020820190508181035f830152611e9881611e5f565b9050919050565b5f611ea9826117c5565b9150611eb4836117c5565b9250828202611ec2816117c5565b91508282048414831517611ed957611ed8611afb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611f17826117c5565b9150611f22836117c5565b925082611f3257611f31611ee0565b5b828204905092915050565b7f696e636f7272656374206d73672076616c7565000000000000000000000000005f82015250565b5f611f716013836119b3565b9150611f7c82611f3d565b602082019050919050565b5f6020820190508181035f830152611f9e81611f65565b9050919050565b7f5472616e73666572204661696c656400000000000000000000000000000000005f82015250565b5f611fd9600f836119b3565b9150611fe482611fa5565b602082019050919050565b5f6020820190508181035f83015261200681611fcd565b9050919050565b5f8151905061201b816117f6565b92915050565b5f602082840312156120365761203561173c565b5b5f6120438482850161200d565b91505092915050565b7f616464726573732063616e6e6f74206265207a65726f000000000000000000005f82015250565b5f6120806016836119b3565b915061208b8261204c565b602082019050919050565b5f6020820190508181035f8301526120ad81612074565b905091905056fea264697066735822122028670d9edb204d9127ad8e12560ffabff2377c8f3ec6253b2384c2e46a01225864736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000430830160d17ecabecd0d4bbfce2190e0fc6b9c7
-----Decoded View---------------
Arg [0] : _token (address): 0x430830160d17ecAbecd0d4bBFcE2190e0fc6b9c7
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000430830160d17ecabecd0d4bbfce2190e0fc6b9c7
Deployed Bytecode Sourcemap
25497:5545:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29770:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25641:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29884:1155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25532:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25608:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27294:165;;;;;;;;;;;;;:::i;:::-;;27949:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27088:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25680:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24603:103;;;;;;;;;;;;;:::i;:::-;;28079:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26571:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25862:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25749:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28446:1316;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23928:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26835:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25711:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25803:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25993:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27512:116;;;;;;;;;;;;;:::i;:::-;;27636:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26341:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24861:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25925:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25574:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26048:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27829:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29770:106;23814:13;:11;:13::i;:::-;29855::::1;29843:9;;:25;;;;;;;;;;;;;;;;;;29770:106:::0;:::o;25641:32::-;;;;:::o;29884:1155::-;30001:1;29978:19;;:24;29970:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;30048:22;30059:10;30048;:22::i;:::-;30047:23;30039:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;30129:1;30114:12;:16;30106:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;30259:16;:37;30276:19;;30259:37;;;;;;;;;;;;30226:12;30182:20;:41;30203:19;;30182:41;;;;;;;;;;;;:56;;;;:::i;:::-;:114;;30160:189;;;;;;;;;;;;:::i;:::-;;;;;;;;;30382:9;;;;;;;;;;;30368:23;;:10;:23;;;30360:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;30484:23;:44;30508:19;;30484:44;;;;;;;;;;;30529:1;30484:47;;;;;;;:::i;:::-;;;;30448:15;:83;;:186;;;;;30587:23;:44;30611:19;;30587:44;;;;;;;;;;;30632:1;30587:47;;;;;;;:::i;:::-;;;;30552:15;:82;30448:186;30426:254;;;;;;;;;;;;:::i;:::-;;;;;;;;;30693:18;30714:40;30741:12;30714:26;:40::i;:::-;30693:61;;30767:5;;;;;;;;;;;:14;;;30782:10;30794:12;30767:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30820:9;;:11;;;;;;;;;:::i;:::-;;;;;;30860:12;30842:14;;:30;;;;;;;:::i;:::-;;;;;;;;30904:10;30883:17;;:31;;;;;;;:::i;:::-;;;;;;;;30951:12;30925:10;:22;30936:10;30925:22;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;31019:12;30974:20;:41;30995:19;;30974:41;;;;;;;;;;;;:57;;;;;;;:::i;:::-;;;;;;;;29959:1080;29884:1155;;:::o;25532:34::-;;;;:::o;25608:24::-;;;;;;;;;;;;;:::o;27294:165::-;23814:13;:11;:13::i;:::-;27343:9:::1;27358:7;:5;:7::i;:::-;:12;;27378:21;27358:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27342:62;;;27423:4;27415:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;27331:128;27294:165::o:0;27949:122::-;23814:13;:11;:13::i;:::-;28054:6:::1;28032:11;:19;28044:6;28032:19;;;;;;;;;;;:28;;;;27949:122:::0;;:::o;27088:166::-;23814:13;:11;:13::i;:::-;27183:1:::1;27165:20;;:6;:20;;::::0;27157:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27239:6;27224:5;;:22;;;;;;;;;;;;;;;;;;27088:166:::0;:::o;25680:24::-;;;;:::o;24603:103::-;23814:13;:11;:13::i;:::-;24668:30:::1;24695:1;24668:18;:30::i;:::-;24603:103::o:0;28079:155::-;23814:13;:11;:13::i;:::-;28219:7:::1;28192:16;:24;28209:6;28192:24;;;;;;;;;;;:34;;;;28079:155:::0;;:::o;26571:256::-;26676:7;26701:17;26785:7;26736:11;:32;26748:19;;26736:32;;;;;;;;;;;;26722:11;:46;;;;:::i;:::-;26721:71;;;;:::i;:::-;26701:91;;26810:9;26803:16;;;26571:256;;;:::o;25862:55::-;;;;;;;;;;;;;;;;;:::o;25749:46::-;;;;;;;;;;;;;;;;;:::o;28446:1316::-;28544:1;28521:19;;:24;28513:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28591:22;28602:10;28591;:22::i;:::-;28590:23;28582:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;28672:1;28657:12;:16;28649:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;28802:16;:37;28819:19;;28802:37;;;;;;;;;;;;28769:12;28725:20;:41;28746:19;;28725:41;;;;;;;;;;;;:56;;;;:::i;:::-;:114;;28703:189;;;;;;;;;;;;:::i;:::-;;;;;;;;;28961:23;:44;28985:19;;28961:44;;;;;;;;;;;29006:1;28961:47;;;;;;;:::i;:::-;;;;28925:15;:83;;:186;;;;;29064:23;:44;29088:19;;29064:44;;;;;;;;;;;29109:1;29064:47;;;;;;;:::i;:::-;;;;29029:15;:82;28925:186;28903:254;;;;;;;;;;;;:::i;:::-;;;;;;;;;29170:18;29191:40;29218:12;29191:26;:40::i;:::-;29170:61;;29263:10;29250:9;:23;29242:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;29311:9;29326:12;;;;;;;;;;;:17;;29351:9;29326:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29310:55;;;29384:4;29376:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;29421:5;;;;;;;;;;;:14;;;29436:10;29448:12;29421:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29474:9;;:11;;;;;;;;;:::i;:::-;;;;;;29514:12;29496:14;;:30;;;;;;;:::i;:::-;;;;;;;;29558:10;29537:17;;:31;;;;;;;:::i;:::-;;;;;;;;29605:12;29579:10;:22;29590:10;29579:22;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;29673:12;29628:20;:41;29649:19;;29628:41;;;;;;;;;;;;:57;;;;;;;:::i;:::-;;;;;;;;29743:10;29729:12;29717:10;29703:51;;;;;;;;;;;;28502:1260;;28446:1316;:::o;23928:87::-;23974:7;24001:6;;;;;;;;;;;23994:13;;23928:87;:::o;26835:245::-;26930:7;26955:23;26981:11;:32;26993:19;;26981:32;;;;;;;;;;;;26955:58;;27057:15;27046:7;27034:9;:19;;;;:::i;:::-;27033:39;;;;:::i;:::-;27026:46;;;26835:245;;;:::o;25711:29::-;;;;:::o;25803:51::-;;;;;;;;;;;;;;;;;:::o;25993:45::-;;;;;;;;;;;;;;;;;:::o;27512:116::-;23814:13;:11;:13::i;:::-;27565:5:::1;;;;;;;;;;;:14;;;27580:7;:5;:7::i;:::-;27589:5;;;;;;;;;;;:15;;;27613:4;27589:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27565:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27512:116::o:0;27636:185::-;23814:13;:11;:13::i;:::-;27745:1:::1;27720:27;;:13;:27;;::::0;27712:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27800:13;27785:12;;:28;;;;;;;;;;;;;;;;;;27636:185:::0;:::o;26341:222::-;23814:13;:11;:13::i;:::-;26496:59:::1;;;;;;;;26538:10;26496:59;;;;26550:4;26496:59;;::::0;:23:::1;:38;26520:13;26496:38;;;;;;;;;;;:59;;;;;;;:::i;:::-;;26341:222:::0;;;:::o;24861:220::-;23814:13;:11;:13::i;:::-;24966:1:::1;24946:22;;:8;:22;;::::0;24942:93:::1;;25020:1;24992:31;;;;;;;;;;;:::i;:::-;;;;;;;;24942:93;25045:28;25064:8;25045:18;:28::i;:::-;24861:220:::0;:::o;25925:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25574:27::-;;;;;;;;;;;;;:::o;26048:19::-;;;;;;;;;;;;;:::o;27829:112::-;23814:13;:11;:13::i;:::-;27927:6:::1;27905:19;:28;;;;27829:112:::0;:::o;24093:166::-;24164:12;:10;:12::i;:::-;24153:23;;:7;:5;:7::i;:::-;:23;;;24149:103;;24227:12;:10;:12::i;:::-;24200:40;;;;;;;;;;;:::i;:::-;;;;;;;;24149:103;24093:166::o;28242:196::-;28302:4;28319:12;28386:7;28374:20;28366:28;;28429:1;28422:4;:8;28415:15;;;28242:196;;;:::o;25241:191::-;25315:16;25334:6;;;;;;;;;;;25315:25;;25360:8;25351:6;;:17;;;;;;;;;;;;;;;;;;25415:8;25384:40;;25405:8;25384:40;;;;;;;;;;;;25304:128;25241:191;:::o;4200:98::-;4253:7;4280:10;4273:17;;4200:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::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:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:474::-;1952:6;1960;2009:2;1997:9;1988:7;1984:23;1980:32;1977:119;;;2015:79;;:::i;:::-;1977:119;2135:1;2160:53;2205:7;2196:6;2185:9;2181:22;2160:53;:::i;:::-;2150:63;;2106:117;2262:2;2288:53;2333:7;2324:6;2313:9;2309:22;2288:53;:::i;:::-;2278:63;;2233:118;1884:474;;;;;:::o;2364:118::-;2451:24;2469:5;2451:24;:::i;:::-;2446:3;2439:37;2364:118;;:::o;2488:222::-;2581:4;2619:2;2608:9;2604:18;2596:26;;2632:71;2700:1;2689:9;2685:17;2676:6;2632:71;:::i;:::-;2488:222;;;;:::o;2716:474::-;2784:6;2792;2841:2;2829:9;2820:7;2816:23;2812:32;2809:119;;;2847:79;;:::i;:::-;2809:119;2967:1;2992:53;3037:7;3028:6;3017:9;3013:22;2992:53;:::i;:::-;2982:63;;2938:117;3094:2;3120:53;3165:7;3156:6;3145:9;3141:22;3120:53;:::i;:::-;3110:63;;3065:118;2716:474;;;;;:::o;3196:329::-;3255:6;3304:2;3292:9;3283:7;3279:23;3275:32;3272:119;;;3310:79;;:::i;:::-;3272:119;3430:1;3455:53;3500:7;3491:6;3480:9;3476:22;3455:53;:::i;:::-;3445:63;;3401:117;3196:329;;;;:::o;3531:619::-;3608:6;3616;3624;3673:2;3661:9;3652:7;3648:23;3644:32;3641:119;;;3679:79;;:::i;:::-;3641:119;3799:1;3824:53;3869:7;3860:6;3849:9;3845:22;3824:53;:::i;:::-;3814:63;;3770:117;3926:2;3952:53;3997:7;3988:6;3977:9;3973:22;3952:53;:::i;:::-;3942:63;;3897:118;4054:2;4080:53;4125:7;4116:6;4105:9;4101:22;4080:53;:::i;:::-;4070:63;;4025:118;3531:619;;;;;:::o;4156:60::-;4184:3;4205:5;4198:12;;4156:60;;;:::o;4222:142::-;4272:9;4305:53;4323:34;4332:24;4350:5;4332:24;:::i;:::-;4323:34;:::i;:::-;4305:53;:::i;:::-;4292:66;;4222:142;;;:::o;4370:126::-;4420:9;4453:37;4484:5;4453:37;:::i;:::-;4440:50;;4370:126;;;:::o;4502:139::-;4565:9;4598:37;4629:5;4598:37;:::i;:::-;4585:50;;4502:139;;;:::o;4647:157::-;4747:50;4791:5;4747:50;:::i;:::-;4742:3;4735:63;4647:157;;:::o;4810:248::-;4916:4;4954:2;4943:9;4939:18;4931:26;;4967:84;5048:1;5037:9;5033:17;5024:6;4967:84;:::i;:::-;4810:248;;;;:::o;5064:169::-;5148:11;5182:6;5177:3;5170:19;5222:4;5217:3;5213:14;5198:29;;5064:169;;;;:::o;5239:171::-;5379:23;5375:1;5367:6;5363:14;5356:47;5239:171;:::o;5416:366::-;5558:3;5579:67;5643:2;5638:3;5579:67;:::i;:::-;5572:74;;5655:93;5744:3;5655:93;:::i;:::-;5773:2;5768:3;5764:12;5757:19;;5416:366;;;:::o;5788:419::-;5954:4;5992:2;5981:9;5977:18;5969:26;;6041:9;6035:4;6031:20;6027:1;6016:9;6012:17;6005:47;6069:131;6195:4;6069:131;:::i;:::-;6061:139;;5788:419;;;:::o;6213:170::-;6353:22;6349:1;6341:6;6337:14;6330:46;6213:170;:::o;6389:366::-;6531:3;6552:67;6616:2;6611:3;6552:67;:::i;:::-;6545:74;;6628:93;6717:3;6628:93;:::i;:::-;6746:2;6741:3;6737:12;6730:19;;6389:366;;;:::o;6761:419::-;6927:4;6965:2;6954:9;6950:18;6942:26;;7014:9;7008:4;7004:20;7000:1;6989:9;6985:17;6978:47;7042:131;7168:4;7042:131;:::i;:::-;7034:139;;6761:419;;;:::o;7186:164::-;7326:16;7322:1;7314:6;7310:14;7303:40;7186:164;:::o;7356:366::-;7498:3;7519:67;7583:2;7578:3;7519:67;:::i;:::-;7512:74;;7595:93;7684:3;7595:93;:::i;:::-;7713:2;7708:3;7704:12;7697:19;;7356:366;;;:::o;7728:419::-;7894:4;7932:2;7921:9;7917:18;7909:26;;7981:9;7975:4;7971:20;7967:1;7956:9;7952:17;7945:47;8009:131;8135:4;8009:131;:::i;:::-;8001:139;;7728:419;;;:::o;8153:180::-;8201:77;8198:1;8191:88;8298:4;8295:1;8288:15;8322:4;8319:1;8312:15;8339:191;8379:3;8398:20;8416:1;8398:20;:::i;:::-;8393:25;;8432:20;8450:1;8432:20;:::i;:::-;8427:25;;8475:1;8472;8468:9;8461:16;;8496:3;8493:1;8490:10;8487:36;;;8503:18;;:::i;:::-;8487:36;8339:191;;;;:::o;8536:175::-;8676:27;8672:1;8664:6;8660:14;8653:51;8536:175;:::o;8717:366::-;8859:3;8880:67;8944:2;8939:3;8880:67;:::i;:::-;8873:74;;8956:93;9045:3;8956:93;:::i;:::-;9074:2;9069:3;9065:12;9058:19;;8717:366;;;:::o;9089:419::-;9255:4;9293:2;9282:9;9278:18;9270:26;;9342:9;9336:4;9332:20;9328:1;9317:9;9313:17;9306:47;9370:131;9496:4;9370:131;:::i;:::-;9362:139;;9089:419;;;:::o;9514:169::-;9654:21;9650:1;9642:6;9638:14;9631:45;9514:169;:::o;9689:366::-;9831:3;9852:67;9916:2;9911:3;9852:67;:::i;:::-;9845:74;;9928:93;10017:3;9928:93;:::i;:::-;10046:2;10041:3;10037:12;10030:19;;9689:366;;;:::o;10061:419::-;10227:4;10265:2;10254:9;10250:18;10242:26;;10314:9;10308:4;10304:20;10300:1;10289:9;10285:17;10278:47;10342:131;10468:4;10342:131;:::i;:::-;10334:139;;10061:419;;;:::o;10486:180::-;10534:77;10531:1;10524:88;10631:4;10628:1;10621:15;10655:4;10652:1;10645:15;10672:168;10812:20;10808:1;10800:6;10796:14;10789:44;10672:168;:::o;10846:366::-;10988:3;11009:67;11073:2;11068:3;11009:67;:::i;:::-;11002:74;;11085:93;11174:3;11085:93;:::i;:::-;11203:2;11198:3;11194:12;11187:19;;10846:366;;;:::o;11218:419::-;11384:4;11422:2;11411:9;11407:18;11399:26;;11471:9;11465:4;11461:20;11457:1;11446:9;11442:17;11435:47;11499:131;11625:4;11499:131;:::i;:::-;11491:139;;11218:419;;;:::o;11643:332::-;11764:4;11802:2;11791:9;11787:18;11779:26;;11815:71;11883:1;11872:9;11868:17;11859:6;11815:71;:::i;:::-;11896:72;11964:2;11953:9;11949:18;11940:6;11896:72;:::i;:::-;11643:332;;;;;:::o;11981:90::-;12015:7;12058:5;12051:13;12044:21;12033:32;;11981:90;;;:::o;12077:116::-;12147:21;12162:5;12147:21;:::i;:::-;12140:5;12137:32;12127:60;;12183:1;12180;12173:12;12127:60;12077:116;:::o;12199:137::-;12253:5;12284:6;12278:13;12269:22;;12300:30;12324:5;12300:30;:::i;:::-;12199:137;;;;:::o;12342:345::-;12409:6;12458:2;12446:9;12437:7;12433:23;12429:32;12426:119;;;12464:79;;:::i;:::-;12426:119;12584:1;12609:61;12662:7;12653:6;12642:9;12638:22;12609:61;:::i;:::-;12599:71;;12555:125;12342:345;;;;:::o;12693:233::-;12732:3;12755:24;12773:5;12755:24;:::i;:::-;12746:33;;12801:66;12794:5;12791:77;12788:103;;12871:18;;:::i;:::-;12788:103;12918:1;12911:5;12907:13;12900:20;;12693:233;;;:::o;12932:147::-;13033:11;13070:3;13055:18;;12932:147;;;;:::o;13085:114::-;;:::o;13205:398::-;13364:3;13385:83;13466:1;13461:3;13385:83;:::i;:::-;13378:90;;13477:93;13566:3;13477:93;:::i;:::-;13595:1;13590:3;13586:11;13579:18;;13205:398;;;:::o;13609:379::-;13793:3;13815:147;13958:3;13815:147;:::i;:::-;13808:154;;13979:3;13972:10;;13609:379;;;:::o;13994:169::-;14134:21;14130:1;14122:6;14118:14;14111:45;13994:169;:::o;14169:366::-;14311:3;14332:67;14396:2;14391:3;14332:67;:::i;:::-;14325:74;;14408:93;14497:3;14408:93;:::i;:::-;14526:2;14521:3;14517:12;14510:19;;14169:366;;;:::o;14541:419::-;14707:4;14745:2;14734:9;14730:18;14722:26;;14794:9;14788:4;14784:20;14780:1;14769:9;14765:17;14758:47;14822:131;14948:4;14822:131;:::i;:::-;14814:139;;14541:419;;;:::o;14966:173::-;15106:25;15102:1;15094:6;15090:14;15083:49;14966:173;:::o;15145:366::-;15287:3;15308:67;15372:2;15367:3;15308:67;:::i;:::-;15301:74;;15384:93;15473:3;15384:93;:::i;:::-;15502:2;15497:3;15493:12;15486:19;;15145:366;;;:::o;15517:419::-;15683:4;15721:2;15710:9;15706:18;15698:26;;15770:9;15764:4;15760:20;15756:1;15745:9;15741:17;15734:47;15798:131;15924:4;15798:131;:::i;:::-;15790:139;;15517:419;;;:::o;15942:410::-;15982:7;16005:20;16023:1;16005:20;:::i;:::-;16000:25;;16039:20;16057:1;16039:20;:::i;:::-;16034:25;;16094:1;16091;16087:9;16116:30;16134:11;16116:30;:::i;:::-;16105:41;;16295:1;16286:7;16282:15;16279:1;16276:22;16256:1;16249:9;16229:83;16206:139;;16325:18;;:::i;:::-;16206:139;15990:362;15942:410;;;;:::o;16358:180::-;16406:77;16403:1;16396:88;16503:4;16500:1;16493:15;16527:4;16524:1;16517:15;16544:185;16584:1;16601:20;16619:1;16601:20;:::i;:::-;16596:25;;16635:20;16653:1;16635:20;:::i;:::-;16630:25;;16674:1;16664:35;;16679:18;;:::i;:::-;16664:35;16721:1;16718;16714:9;16709:14;;16544:185;;;;:::o;16735:169::-;16875:21;16871:1;16863:6;16859:14;16852:45;16735:169;:::o;16910:366::-;17052:3;17073:67;17137:2;17132:3;17073:67;:::i;:::-;17066:74;;17149:93;17238:3;17149:93;:::i;:::-;17267:2;17262:3;17258:12;17251:19;;16910:366;;;:::o;17282:419::-;17448:4;17486:2;17475:9;17471:18;17463:26;;17535:9;17529:4;17525:20;17521:1;17510:9;17506:17;17499:47;17563:131;17689:4;17563:131;:::i;:::-;17555:139;;17282:419;;;:::o;17707:165::-;17847:17;17843:1;17835:6;17831:14;17824:41;17707:165;:::o;17878:366::-;18020:3;18041:67;18105:2;18100:3;18041:67;:::i;:::-;18034:74;;18117:93;18206:3;18117:93;:::i;:::-;18235:2;18230:3;18226:12;18219:19;;17878:366;;;:::o;18250:419::-;18416:4;18454:2;18443:9;18439:18;18431:26;;18503:9;18497:4;18493:20;18489:1;18478:9;18474:17;18467:47;18531:131;18657:4;18531:131;:::i;:::-;18523:139;;18250:419;;;:::o;18675:143::-;18732:5;18763:6;18757:13;18748:22;;18779:33;18806:5;18779:33;:::i;:::-;18675:143;;;;:::o;18824:351::-;18894:6;18943:2;18931:9;18922:7;18918:23;18914:32;18911:119;;;18949:79;;:::i;:::-;18911:119;19069:1;19094:64;19150:7;19141:6;19130:9;19126:22;19094:64;:::i;:::-;19084:74;;19040:128;18824:351;;;;:::o;19181:172::-;19321:24;19317:1;19309:6;19305:14;19298:48;19181:172;:::o;19359:366::-;19501:3;19522:67;19586:2;19581:3;19522:67;:::i;:::-;19515:74;;19598:93;19687:3;19598:93;:::i;:::-;19716:2;19711:3;19707:12;19700:19;;19359:366;;;:::o;19731:419::-;19897:4;19935:2;19924:9;19920:18;19912:26;;19984:9;19978:4;19974:20;19970:1;19959:9;19955:17;19948:47;20012:131;20138:4;20012:131;:::i;:::-;20004:139;;19731:419;;;:::o
Swarm Source
ipfs://28670d9edb204d9127ad8e12560ffabff2377c8f3ec6253b2384c2e46a012258
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in HYPE
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.