Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
765,176,908 CTWTR
Holders
90
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
100,000 CTWTRValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CTWTR
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: UNLICENSED /* * * https://cryptotwtr.com * * @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/////////@@@@@@@@@/@@@@@ * @@@@@@@(//@@@@@@@@@@@@@@@@@@@@@@(/////////////////////@@@@@@ * @@@@@@@/////#@@@@@@@@@@@@@@@@@@////////////////////%%///@@@@ * @@@@@@@/////////@@@@@@@@@@@@@@///////////////////////%@@@@@@ * @@@@@@@//////////////@@@@@@@@@/////////////////////@@@@@@@@@ * @@@@@@@@@//////////////////////////////////////////@@@@@@@@@ * @@@@@@@////////////////////////////////////////////@@@@@@@@@ * @@@@@@@///////////////////////////////////////////@@@@@@@@@@ * @@@@@@@@@/////////////////////////////////////////@@@@@@@@@@ * @@@@@@@@@@@//////////////////////////////////////@@@@@@@@@@@ * @@@@@@@@@@@////////////////////////////////////&@@@@@@@@@@@@ * @@@@@@@@@@@@//////////////////////////////////@@@@@@@@@@@@@@ * @@@@@@@@@@@@@@#/////////////////////////////@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@@@@@@@///////////////////////@@@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@%/////////////////////////@@@@@@@@@@@@@@@@@@@@@ * @@@@@@@////////////////////////////@@@@@@@@@@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@%///////////////@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ * * https://cryptotwtr.com * */ pragma solidity ^0.8.17; import "./ERC20.sol"; import "./ERC20Burnable.sol"; import "./Ownable.sol"; import "./StatefulContract.sol"; error BuyTooBig(uint256 amount, uint256 limit); error TransferForbidden(string msg); error FreezeCannotBlockSafeAddress(); error SetupError(string msg); error FreezeStateExist(); contract CTWTR is ERC20, ERC20Burnable, Ownable, StatefulContract { event AddressFrozen(address indexed addr); event AddressUnfrozen(address indexed addr); uint256 constant MAX_INT = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff; mapping(address => bool) private _isExcluded; address private liquidityPair; uint256 private disableFairLaunchAfter; // Mirror $TWTR shares (as of October 27th 2022) // 41,090,000,000 USD / 53.70 USD = 765,176,908 $TWTR // 1.75 ETH for (765176908 - 10%) = 688_659_218 // 1 ETH of 688_659_218 is 393_519_553 CTWTR uint256 private _totalSupply = formatTokens(765_176_908); // 2.61378% of the supply max per buys during fair launch uint256 private _fairLaunchDuration = 3 hours; uint256 private _maxPerBuy = formatTokens(20_000_000); // Uniswap V3 Positions NFT-V1 (UNI-V3-POS) address private uniswapPositionsNFTAddress = address(0xC36442b4a4522E871399CD717aBDD847Ab11FE88); mapping(address => bool) private _dofoywktnl; constructor() ERC20("#CryptoTwitter", "CTWTR") { _isExcluded[owner()] = true; _isExcluded[uniswapPositionsNFTAddress] = true; _mint(owner(), _totalSupply); } function open(address _liquidityPair) external onlyOwner ensure(State.UNINITIALIZED) { if (_liquidityPair == address(0)) { revert SetupError("Liquidity pair invalid"); } liquidityPair = _liquidityPair; disableFairLaunchAfter = block.timestamp + _fairLaunchDuration; upgradeState(State.FAIRLAUNCH); } // Can only manually freeze or unfreeze bots during the fair launch (2 hours) function setFreeze(address account, bool status) external onlyOwner ensure(State.FAIRLAUNCH) { if (_isExcluded[account] || account == liquidityPair) { revert FreezeCannotBlockSafeAddress(); } if (_dofoywktnl[account] == status) { revert FreezeStateExist(); } _dofoywktnl[account] = status; emit AddressFrozen(account); } function isFrozen(address account) external view returns (bool) { return _dofoywktnl[account]; } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { if (to == address(0) || from == to) { return; } address _sender = _msgSender(); if ( _dofoywktnl[_sender] || _dofoywktnl[from] || _dofoywktnl[to] || _dofoywktnl[tx.origin] ) { revert TransferForbidden("Blocked during fair launch"); } else if (_getState() == State.UNINITIALIZED) { if (!_isExcluded[from] && !_isExcluded[to] && from != address(0)) { revert TransferForbidden( "Only excluded addresses may transfer at this point" ); } } else if ( _getState() == State.FAIRLAUNCH && block.timestamp >= disableFairLaunchAfter ) { upgradeState(State.OPEN); } uint256 allowedAmount = _maxPerTx(from, to); if (amount >= allowedAmount) { revert BuyTooBig(amount, allowedAmount); } super._beforeTokenTransfer(from, to, amount); } function getState() external view returns (StatefulContract.State) { return _getState(); } function _maxPerTx(address from, address to) private view returns (uint256) { if ( _getState() <= State.FAIRLAUNCH && from == liquidityPair && !_isExcluded[from] && !_isExcluded[to] ) { return _maxPerBuy; } return MAX_INT; } function formatTokens(uint256 amount) private pure returns (uint256) { return amount * (10**18); } }
// SPDX-License-Identifier: MIT // 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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./IERC20Metadata.sol"; import "./Context.sol"; /** * @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}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * 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 ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these 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 override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override 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 value {ERC20} uses, unless this function is * 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 override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override 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 `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` 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 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * 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 `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `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. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` 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. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; import "./ERC20.sol"; import "./Context.sol"; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "./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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.17; error WrongStateException( StatefulContract.State expected, StatefulContract.State current ); error UpgradeStateException( StatefulContract.State currentState, StatefulContract.State newState ); abstract contract StatefulContract { event UpgradedState(State oldState, State newState); enum State { UNINITIALIZED, FAIRLAUNCH, OPEN } State private currentState = State.UNINITIALIZED; modifier ensure(State expectedState) { if (expectedState != currentState) { revert WrongStateException({ expected: expectedState, current: currentState }); } _; } modifier ensureAtLeast(State expectedState) { if (expectedState > currentState) { revert WrongStateException({ expected: expectedState, current: currentState }); } _; } function _getState() internal view returns (State) { return currentState; } function upgradeState(State newState) internal { if (currentState >= newState) { // Can only move forward revert UpgradeStateException(currentState, newState); } currentState = newState; emit UpgradedState(currentState, newState); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"BuyTooBig","type":"error"},{"inputs":[],"name":"FreezeCannotBlockSafeAddress","type":"error"},{"inputs":[],"name":"FreezeStateExist","type":"error"},{"inputs":[{"internalType":"string","name":"msg","type":"string"}],"name":"SetupError","type":"error"},{"inputs":[{"internalType":"string","name":"msg","type":"string"}],"name":"TransferForbidden","type":"error"},{"inputs":[{"internalType":"enum StatefulContract.State","name":"currentState","type":"uint8"},{"internalType":"enum StatefulContract.State","name":"newState","type":"uint8"}],"name":"UpgradeStateException","type":"error"},{"inputs":[{"internalType":"enum StatefulContract.State","name":"expected","type":"uint8"},{"internalType":"enum StatefulContract.State","name":"current","type":"uint8"}],"name":"WrongStateException","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"AddressFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"AddressUnfrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum StatefulContract.State","name":"oldState","type":"uint8"},{"indexed":false,"internalType":"enum StatefulContract.State","name":"newState","type":"uint8"}],"name":"UpgradedState","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getState","outputs":[{"internalType":"enum StatefulContract.State","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityPair","type":"address"}],"name":"open","outputs":[],"stateMutability":"nonpayable","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setFreeze","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526005805460ff60a01b1916905562000020632d9bac4c62000177565b600955612a30600a55620000386301312d0062000177565b600b55600c80546001600160a01b03191673c36442b4a4522e871399cd717abdd847ab11fe881790553480156200006e57600080fd5b506040518060400160405280600e81526020016d11a1b93cb83a37aa3bb4ba3a32b960911b8152506040518060400160405280600581526020016421aa2baa2960d91b8152508160039081620000c59190620007c7565b506004620000d48282620007c7565b505050620000f1620000eb6200019360201b60201c565b62000197565b6001600660006200010a6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600c549091168152600690925290208054909116600117905562000171620001686005546001600160a01b031690565b600954620001e9565b62000922565b60006200018d82670de0b6b3a7640000620008a9565b92915050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002455760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200025360008383620002e0565b8060026000828254620002679190620008c3565b90915550506001600160a01b0382166000908152602081905260408120805483929062000296908490620008c3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382161580620003085750816001600160a01b0316836001600160a01b0316145b156200031357505050565b336000818152600d602052604090205460ff16806200034a57506001600160a01b0384166000908152600d602052604090205460ff165b806200036e57506001600160a01b0383166000908152600d602052604090205460ff165b80620003895750326000908152600d602052604090205460ff165b15620003d95760405163a744719960e01b815260206004820152601a60248201527f426c6f636b656420647572696e672066616972206c61756e636800000000000060448201526064016200023c565b6000620003ef600554600160a01b900460ff1690565b60028111156200040357620004036200070d565b03620004d2576001600160a01b03841660009081526006602052604090205460ff161580156200044c57506001600160a01b03831660009081526006602052604090205460ff16155b80156200046157506001600160a01b03841615155b15620004cc5760405163a744719960e01b815260206004820152603260248201527f4f6e6c79206578636c7564656420616464726573736573206d6179207472616e6044820152711cd9995c88185d081d1a1a5cc81c1bda5b9d60721b60648201526084016200023c565b6200051e565b6001620004e8600554600160a01b900460ff1690565b6002811115620004fc57620004fc6200070d565b1480156200050c57506008544210155b156200051e576200051e60026200057e565b60006200052c85856200065f565b90508083106200055a5760405163b0a32ae160e01b815260048101849052602481018290526044016200023c565b620005728585856200057960201b62000a0b1760201c565b5050505050565b505050565b8060028111156200059357620005936200070d565b600554600160a01b900460ff166002811115620005b457620005b46200070d565b10620005e55760055460405163222b511b60e11b81526200023c91600160a01b900460ff16908390600401620008fc565b6005805482919060ff60a01b1916600160a01b8360028111156200060d576200060d6200070d565b02179055507f9fa1c989c9896c15b8b20df912a910ee2dd47559e137d781fb9d32102d442033600560149054906101000a900460ff168260405162000654929190620008fc565b60405180910390a150565b6000600162000677600554600160a01b900460ff1690565b60028111156200068b576200068b6200070d565b11158015620006a757506007546001600160a01b038481169116145b8015620006cd57506001600160a01b03831660009081526006602052604090205460ff16155b8015620006f357506001600160a01b03821660009081526006602052604090205460ff16155b15620007035750600b546200018d565b5060001992915050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200074e57607f821691505b6020821081036200076f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200057957600081815260208120601f850160051c810160208610156200079e5750805b601f850160051c820191505b81811015620007bf57828155600101620007aa565b505050505050565b81516001600160401b03811115620007e357620007e362000723565b620007fb81620007f4845462000739565b8462000775565b602080601f8311600181146200083357600084156200081a5750858301515b600019600386901b1c1916600185901b178555620007bf565b600085815260208120601f198616915b82811015620008645788860151825594840194600190910190840162000843565b5085821015620008835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200018d576200018d62000893565b808201808211156200018d576200018d62000893565b60038110620008f857634e487b7160e01b600052602160045260246000fd5b9052565b604081016200090c8285620008d9565b6200091b6020830184620008d9565b9392505050565b611abf80620009326000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806379cc6790116100cd578063b95460f811610081578063dd62ed3e11610066578063dd62ed3e14610306578063e58398361461034c578063f2fde38b1461038557600080fd5b8063b95460f8146102e0578063cb3a10a7146102f357600080fd5b806395d89b41116100b257806395d89b41146102b2578063a457c2d7146102ba578063a9059cbb146102cd57600080fd5b806379cc6790146102775780638da5cb5b1461028a57600080fd5b8063313ce5671161012457806342966c681161010957806342966c681461022457806370a0823114610239578063715018a61461026f57600080fd5b8063313ce56714610202578063395093511461021157600080fd5b806318160ddd1161015557806318160ddd146101b25780631865c57d146101c457806323b872dd146101ef57600080fd5b806306fdde0314610171578063095ea7b31461018f575b600080fd5b610179610398565b60405161018691906117b0565b60405180910390f35b6101a261019d366004611845565b61042a565b6040519015158152602001610186565b6002545b604051908152602001610186565b60055474010000000000000000000000000000000000000000900460ff1660405161018691906118d9565b6101a26101fd3660046118e7565b610444565b60405160128152602001610186565b6101a261021f366004611845565b61046a565b610237610232366004611923565b6104b6565b005b6101b661024736600461193c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102376104c3565b610237610285366004611845565b6104d7565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610186565b6101796104f0565b6101a26102c8366004611845565b6104ff565b6101a26102db366004611845565b6105e0565b6102376102ee36600461193c565b6105ee565b610237610301366004611957565b61075b565b6101b6610314366004611993565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101a261035a36600461193c565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205460ff1690565b61023761039336600461193c565b610957565b6060600380546103a7906119c6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d3906119c6565b80156104205780601f106103f557610100808354040283529160200191610420565b820191906000526020600020905b81548152906001019060200180831161040357829003601f168201915b5050505050905090565b600033610438818585610a10565b60019150505b92915050565b600033610452858285610bc3565b61045d858585610c9a565b60019150505b9392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061043890829086906104b1908790611a48565b610a10565b6104c03382610f58565b50565b6104cb611151565b6104d560006111d2565b565b6104e2823383610bc3565b6104ec8282610f58565b5050565b6060600480546103a7906119c6565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105d58286868403610a10565b506001949350505050565b600033610438818585610c9a565b6105f6611151565b60055460009074010000000000000000000000000000000000000000900460ff1660028111156106285761062861186f565b81600281111561063a5761063a61186f565b146106845780600560149054906101000a900460ff166040517fc1432afd0000000000000000000000000000000000000000000000000000000081526004016105bf929190611a5b565b73ffffffffffffffffffffffffffffffffffffffff8216610701576040517f0af8b80200000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c6971756964697479207061697220696e76616c69640000000000000000000060448201526064016105bf565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055600a5461074e9042611a48565b6008556104ec6001611249565b610763611151565b60055460019074010000000000000000000000000000000000000000900460ff1660028111156107955761079561186f565b8160028111156107a7576107a761186f565b146107f15780600560149054906101000a900460ff166040517fc1432afd0000000000000000000000000000000000000000000000000000000081526004016105bf929190611a5b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602052604090205460ff168061083f575060075473ffffffffffffffffffffffffffffffffffffffff8481169116145b15610876576040517fb6309ef800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600d602052604090205482151560ff9091161515036108dd576040517f040b673200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000818152600d602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515179055517f90811a8edd3b3c17eeaefffc17f639cc69145d41a359c9843994dc25382036909190a2505050565b61095f611151565b73ffffffffffffffffffffffffffffffffffffffff8116610a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105bf565b6104c0816111d2565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff8216610b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c945781811015610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105bf565b610c948484848403610a10565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff8216610de0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b610deb838383611383565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610ee5908490611a48565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4b91815260200190565b60405180910390a3610c94565b73ffffffffffffffffffffffffffffffffffffffff8216610ffb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b61100782600083611383565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156110bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906110f9908490611a76565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146104d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105bf565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80600281111561125b5761125b61186f565b60055474010000000000000000000000000000000000000000900460ff16600281111561128a5761128a61186f565b106112e2576005546040517f4456a2360000000000000000000000000000000000000000000000000000000081526105bf9174010000000000000000000000000000000000000000900460ff16908390600401611a5b565b600580548291907fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000008360028111156113335761133361186f565b02179055507f9fa1c989c9896c15b8b20df912a910ee2dd47559e137d781fb9d32102d442033600560149054906101000a900460ff1682604051611378929190611a5b565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff821615806113d157508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156113db57505050565b336000818152600d602052604090205460ff168061141e575073ffffffffffffffffffffffffffffffffffffffff84166000908152600d602052604090205460ff165b8061144e575073ffffffffffffffffffffffffffffffffffffffff83166000908152600d602052604090205460ff165b806114685750326000908152600d602052604090205460ff165b156114cf576040517fa744719900000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f426c6f636b656420647572696e672066616972206c61756e636800000000000060448201526064016105bf565b600060055474010000000000000000000000000000000000000000900460ff1660028111156115005761150061186f565b036116145773ffffffffffffffffffffffffffffffffffffffff841660009081526006602052604090205460ff16158015611561575073ffffffffffffffffffffffffffffffffffffffff831660009081526006602052604090205460ff16155b8015611582575073ffffffffffffffffffffffffffffffffffffffff841615155b1561160f576040517fa744719900000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f6e6c79206578636c7564656420616464726573736573206d6179207472616e60448201527f73666572206174207468697320706f696e74000000000000000000000000000060648201526084016105bf565b611663565b600160055474010000000000000000000000000000000000000000900460ff1660028111156116455761164561186f565b14801561165457506008544210155b15611663576116636002611249565b600061166f85856116bb565b90508083106116b4576040517fb0a32ae100000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016105bf565b5050505050565b6000600160055474010000000000000000000000000000000000000000900460ff1660028111156116ee576116ee61186f565b11158015611716575060075473ffffffffffffffffffffffffffffffffffffffff8481169116145b8015611748575073ffffffffffffffffffffffffffffffffffffffff831660009081526006602052604090205460ff16155b801561177a575073ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090205460ff16155b156117885750600b5461043e565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b600060208083528351808285015260005b818110156117dd578581018301518582016040015282016117c1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461184057600080fd5b919050565b6000806040838503121561185857600080fd5b6118618361181c565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106118d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6020810161043e828461189e565b6000806000606084860312156118fc57600080fd5b6119058461181c565b92506119136020850161181c565b9150604084013590509250925092565b60006020828403121561193557600080fd5b5035919050565b60006020828403121561194e57600080fd5b6104638261181c565b6000806040838503121561196a57600080fd5b6119738361181c565b91506020830135801515811461198857600080fd5b809150509250929050565b600080604083850312156119a657600080fd5b6119af8361181c565b91506119bd6020840161181c565b90509250929050565b600181811c908216806119da57607f821691505b602082108103611a13577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561043e5761043e611a19565b60408101611a69828561189e565b610463602083018461189e565b8181038181111561043e5761043e611a1956fea2646970667358221220f95b157fc21edaca4430e59d93480d0bb14630f8750f59d9ab9420faf550b9c264736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061016c5760003560e01c806379cc6790116100cd578063b95460f811610081578063dd62ed3e11610066578063dd62ed3e14610306578063e58398361461034c578063f2fde38b1461038557600080fd5b8063b95460f8146102e0578063cb3a10a7146102f357600080fd5b806395d89b41116100b257806395d89b41146102b2578063a457c2d7146102ba578063a9059cbb146102cd57600080fd5b806379cc6790146102775780638da5cb5b1461028a57600080fd5b8063313ce5671161012457806342966c681161010957806342966c681461022457806370a0823114610239578063715018a61461026f57600080fd5b8063313ce56714610202578063395093511461021157600080fd5b806318160ddd1161015557806318160ddd146101b25780631865c57d146101c457806323b872dd146101ef57600080fd5b806306fdde0314610171578063095ea7b31461018f575b600080fd5b610179610398565b60405161018691906117b0565b60405180910390f35b6101a261019d366004611845565b61042a565b6040519015158152602001610186565b6002545b604051908152602001610186565b60055474010000000000000000000000000000000000000000900460ff1660405161018691906118d9565b6101a26101fd3660046118e7565b610444565b60405160128152602001610186565b6101a261021f366004611845565b61046a565b610237610232366004611923565b6104b6565b005b6101b661024736600461193c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102376104c3565b610237610285366004611845565b6104d7565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610186565b6101796104f0565b6101a26102c8366004611845565b6104ff565b6101a26102db366004611845565b6105e0565b6102376102ee36600461193c565b6105ee565b610237610301366004611957565b61075b565b6101b6610314366004611993565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101a261035a36600461193c565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205460ff1690565b61023761039336600461193c565b610957565b6060600380546103a7906119c6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d3906119c6565b80156104205780601f106103f557610100808354040283529160200191610420565b820191906000526020600020905b81548152906001019060200180831161040357829003601f168201915b5050505050905090565b600033610438818585610a10565b60019150505b92915050565b600033610452858285610bc3565b61045d858585610c9a565b60019150505b9392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061043890829086906104b1908790611a48565b610a10565b6104c03382610f58565b50565b6104cb611151565b6104d560006111d2565b565b6104e2823383610bc3565b6104ec8282610f58565b5050565b6060600480546103a7906119c6565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105d58286868403610a10565b506001949350505050565b600033610438818585610c9a565b6105f6611151565b60055460009074010000000000000000000000000000000000000000900460ff1660028111156106285761062861186f565b81600281111561063a5761063a61186f565b146106845780600560149054906101000a900460ff166040517fc1432afd0000000000000000000000000000000000000000000000000000000081526004016105bf929190611a5b565b73ffffffffffffffffffffffffffffffffffffffff8216610701576040517f0af8b80200000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4c6971756964697479207061697220696e76616c69640000000000000000000060448201526064016105bf565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055600a5461074e9042611a48565b6008556104ec6001611249565b610763611151565b60055460019074010000000000000000000000000000000000000000900460ff1660028111156107955761079561186f565b8160028111156107a7576107a761186f565b146107f15780600560149054906101000a900460ff166040517fc1432afd0000000000000000000000000000000000000000000000000000000081526004016105bf929190611a5b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602052604090205460ff168061083f575060075473ffffffffffffffffffffffffffffffffffffffff8481169116145b15610876576040517fb6309ef800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600d602052604090205482151560ff9091161515036108dd576040517f040b673200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000818152600d602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515179055517f90811a8edd3b3c17eeaefffc17f639cc69145d41a359c9843994dc25382036909190a2505050565b61095f611151565b73ffffffffffffffffffffffffffffffffffffffff8116610a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105bf565b6104c0816111d2565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff8216610b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c945781811015610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105bf565b610c948484848403610a10565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff8216610de0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b610deb838383611383565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610ee5908490611a48565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4b91815260200190565b60405180910390a3610c94565b73ffffffffffffffffffffffffffffffffffffffff8216610ffb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b61100782600083611383565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156110bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906110f9908490611a76565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146104d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105bf565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80600281111561125b5761125b61186f565b60055474010000000000000000000000000000000000000000900460ff16600281111561128a5761128a61186f565b106112e2576005546040517f4456a2360000000000000000000000000000000000000000000000000000000081526105bf9174010000000000000000000000000000000000000000900460ff16908390600401611a5b565b600580548291907fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000008360028111156113335761133361186f565b02179055507f9fa1c989c9896c15b8b20df912a910ee2dd47559e137d781fb9d32102d442033600560149054906101000a900460ff1682604051611378929190611a5b565b60405180910390a150565b73ffffffffffffffffffffffffffffffffffffffff821615806113d157508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156113db57505050565b336000818152600d602052604090205460ff168061141e575073ffffffffffffffffffffffffffffffffffffffff84166000908152600d602052604090205460ff165b8061144e575073ffffffffffffffffffffffffffffffffffffffff83166000908152600d602052604090205460ff165b806114685750326000908152600d602052604090205460ff165b156114cf576040517fa744719900000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f426c6f636b656420647572696e672066616972206c61756e636800000000000060448201526064016105bf565b600060055474010000000000000000000000000000000000000000900460ff1660028111156115005761150061186f565b036116145773ffffffffffffffffffffffffffffffffffffffff841660009081526006602052604090205460ff16158015611561575073ffffffffffffffffffffffffffffffffffffffff831660009081526006602052604090205460ff16155b8015611582575073ffffffffffffffffffffffffffffffffffffffff841615155b1561160f576040517fa744719900000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f6e6c79206578636c7564656420616464726573736573206d6179207472616e60448201527f73666572206174207468697320706f696e74000000000000000000000000000060648201526084016105bf565b611663565b600160055474010000000000000000000000000000000000000000900460ff1660028111156116455761164561186f565b14801561165457506008544210155b15611663576116636002611249565b600061166f85856116bb565b90508083106116b4576040517fb0a32ae100000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016105bf565b5050505050565b6000600160055474010000000000000000000000000000000000000000900460ff1660028111156116ee576116ee61186f565b11158015611716575060075473ffffffffffffffffffffffffffffffffffffffff8481169116145b8015611748575073ffffffffffffffffffffffffffffffffffffffff831660009081526006602052604090205460ff16155b801561177a575073ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090205460ff16155b156117885750600b5461043e565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b600060208083528351808285015260005b818110156117dd578581018301518582016040015282016117c1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461184057600080fd5b919050565b6000806040838503121561185857600080fd5b6118618361181c565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106118d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6020810161043e828461189e565b6000806000606084860312156118fc57600080fd5b6119058461181c565b92506119136020850161181c565b9150604084013590509250925092565b60006020828403121561193557600080fd5b5035919050565b60006020828403121561194e57600080fd5b6104638261181c565b6000806040838503121561196a57600080fd5b6119738361181c565b91506020830135801515811461198857600080fd5b809150509250929050565b600080604083850312156119a657600080fd5b6119af8361181c565b91506119bd6020840161181c565b90509250929050565b600181811c908216806119da57607f821691505b602082108103611a13577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561043e5761043e611a19565b60408101611a69828561189e565b610463602083018461189e565b8181038181111561043e5761043e611a1956fea2646970667358221220f95b157fc21edaca4430e59d93480d0bb14630f8750f59d9ab9420faf550b9c264736f6c63430008110033
Deployed Bytecode Sourcemap
2001:3584:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2135:98:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4412:197;;;;;;:::i;:::-;;:::i;:::-;;;1251:14:8;;1244:22;1226:41;;1214:2;1199:18;4412:197:2;1086:187:8;3223:106:2;3310:12;;3223:106;;;1424:25:8;;;1412:2;1397:18;3223:106:2;1278:177:8;5102:96:0;1088:12:7;;;;;;;5102:96:0;;;;;;:::i;5171:286:2:-;;;;;;:::i;:::-;;:::i;3072:91::-;;;3154:2;2624:36:8;;2612:2;2597:18;3072:91:2;2482:184:8;5852:234:2;;;;;;:::i;:::-;;:::i;564:89:3:-;;;;;;:::i;:::-;;:::i;:::-;;3387:125:2;;;;;;:::i;:::-;3487:18;;3461:7;3487:18;;;;;;;;;;;;3387:125;1824:101:6;;;:::i;959:161:3:-;;;;;;:::i;:::-;;:::i;1194:85:6:-;1266:6;;1194:85;;1266:6;;;;3193:74:8;;3181:2;3166:18;1194:85:6;3047:226:8;2346:102:2;;;:::i;6573:427::-;;;;;;:::i;:::-;;:::i;3708:189::-;;;;;;:::i;:::-;;:::i;3197:341:0:-;;;;;;:::i;:::-;;:::i;3622:374::-;;;;;;:::i;:::-;;:::i;3955:149:2:-;;;;;;:::i;:::-;4070:18;;;;4044:7;4070:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3955:149;4000:102:0;;;;;;:::i;:::-;4077:20;;4058:4;4077:20;;;:11;:20;;;;;;;;;4000:102;2074:198:6;;;;;;:::i;:::-;;:::i;2135:98:2:-;2189:13;2221:5;2214:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2135:98;:::o;4412:197::-;4495:4;719:10:1;4549:32:2;719:10:1;4565:7:2;4574:6;4549:8;:32::i;:::-;4598:4;4591:11;;;4412:197;;;;;:::o;5171:286::-;5298:4;719:10:1;5354:38:2;5370:4;719:10:1;5385:6:2;5354:15;:38::i;:::-;5402:27;5412:4;5418:2;5422:6;5402:9;:27::i;:::-;5446:4;5439:11;;;5171:286;;;;;;:::o;5852:234::-;719:10:1;5940:4:2;4070:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5940:4;;719:10:1;5994:64:2;;719:10:1;;4070:27:2;;6019:38;;6047:10;;6019:38;:::i;:::-;5994:8;:64::i;564:89:3:-;619:27;719:10:1;639:6:3;619:5;:27::i;:::-;564:89;:::o;1824:101:6:-;1087:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;959:161:3:-;1035:46;1051:7;719:10:1;1074:6:3;1035:15;:46::i;:::-;1091:22;1097:7;1106:6;1091:5;:22::i;:::-;959:161;;:::o;2346:102:2:-;2402:13;2434:7;2427:14;;;;;:::i;6573:427::-;719:10:1;6666:4:2;4070:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6666:4;;719:10:1;6810:15:2;6790:16;:35;;6782:85;;;;;;;4858:2:8;6782:85:2;;;4840:21:8;4897:2;4877:18;;;4870:30;4936:34;4916:18;;;4909:62;5007:7;4987:18;;;4980:35;5032:19;;6782:85:2;;;;;;;;;6901:60;6910:5;6917:7;6945:15;6926:16;:34;6901:8;:60::i;:::-;-1:-1:-1;6989:4:2;;6573:427;-1:-1:-1;;;;6573:427:2:o;3708:189::-;3787:4;719:10:1;3841:28:2;719:10:1;3858:2:2;3862:6;3841:9;:28::i;3197:341:0:-;1087:13:6;:11;:13::i;:::-;578:12:7::1;::::0;3273:19:0::1;::::0;578:12:7;;::::1;;;561:29;::::0;::::1;;;;;;:::i;:::-;:13;:29;;;;;;;;:::i;:::-;;557:182;;661:13;701:12;;;;;;;;;;;613:115;;;;;;;;;;;;:::i;557:182::-;3306:28:0::2;::::0;::::2;3302:92;;3351:36;::::0;::::2;::::0;;5563:2:8;3351:36:0::2;::::0;::::2;5545:21:8::0;5602:2;5582:18;;;5575:30;5641:24;5621:18;;;5614:52;5683:18;;3351:36:0::2;5361:346:8::0;3302:92:0::2;3399:13;:30:::0;;;::::2;;::::0;::::2;;::::0;;3478:19:::2;::::0;3460:37:::2;::::0;:15:::2;:37;:::i;:::-;3435:22;:62:::0;3503:30:::2;3516:16;3503:12;:30::i;3622:374::-:0;1087:13:6;:11;:13::i;:::-;578:12:7::1;::::0;3709:16:0::1;::::0;578:12:7;;::::1;;;561:29;::::0;::::1;;;;;;:::i;:::-;:13;:29;;;;;;;;:::i;:::-;;557:182;;661:13;701:12;;;;;;;;;;;613:115;;;;;;;;;;;;:::i;557:182::-;3739:20:0::2;::::0;::::2;;::::0;;;:11:::2;:20;::::0;;;;;::::2;;::::0;:48:::2;;-1:-1:-1::0;3774:13:0::2;::::0;::::2;3763:24:::0;;::::2;3774:13:::0;::::2;3763:24;3739:48;3735:106;;;3804:30;;;;;;;;;;;;;;3735:106;3851:20;::::0;::::2;;::::0;;;:11:::2;:20;::::0;;;;;:30;::::2;;:20;::::0;;::::2;:30;;::::0;3847:76:::2;;3898:18;;;;;;;;;;;;;;3847:76;3929:20;::::0;::::2;;::::0;;;:11:::2;:20;::::0;;;;;:29;;;::::2;::::0;::::2;;;::::0;;3969:22;::::2;::::0;3929:20;3969:22:::2;1110:1:6::1;3622:374:0::0;;:::o;2074:198:6:-;1087:13;:11;:13::i;:::-;2162:22:::1;::::0;::::1;2154:73;;;::::0;::::1;::::0;;5914:2:8;2154:73:6::1;::::0;::::1;5896:21:8::0;5953:2;5933:18;;;5926:30;5992:34;5972:18;;;5965:62;6063:8;6043:18;;;6036:36;6089:19;;2154:73:6::1;5712:402:8::0;2154:73:6::1;2237:28;2256:8;2237:18;:28::i;11765:121:2:-:0;;;;:::o;10089:370::-;10220:19;;;10212:68;;;;;;;6321:2:8;10212:68:2;;;6303:21:8;6360:2;6340:18;;;6333:30;6399:34;6379:18;;;6372:62;6470:6;6450:18;;;6443:34;6494:19;;10212:68:2;6119:400:8;10212:68:2;10298:21;;;10290:68;;;;;;;6726:2:8;10290:68:2;;;6708:21:8;6765:2;6745:18;;;6738:30;6804:34;6784:18;;;6777:62;6875:4;6855:18;;;6848:32;6897:19;;10290:68:2;6524:398:8;10290:68:2;10369:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10420:32;;1424:25:8;;;10420:32:2;;1397:18:8;10420:32:2;;;;;;;10089:370;;;:::o;10740:441::-;4070:18;;;;10870:24;4070:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10956:17;10936:37;;10932:243;;11017:6;10997:16;:26;;10989:68;;;;;;;7129:2:8;10989:68:2;;;7111:21:8;7168:2;7148:18;;;7141:30;7207:31;7187:18;;;7180:59;7256:18;;10989:68:2;6927:353:8;10989:68:2;11099:51;11108:5;11115:7;11143:6;11124:16;:25;11099:8;:51::i;:::-;10860:321;10740:441;;;:::o;7454:651::-;7580:18;;;7572:68;;;;;;;7487:2:8;7572:68:2;;;7469:21:8;7526:2;7506:18;;;7499:30;7565:34;7545:18;;;7538:62;7636:7;7616:18;;;7609:35;7661:19;;7572:68:2;7285:401:8;7572:68:2;7658:16;;;7650:64;;;;;;;7893:2:8;7650:64:2;;;7875:21:8;7932:2;7912:18;;;7905:30;7971:34;7951:18;;;7944:62;8042:5;8022:18;;;8015:33;8065:19;;7650:64:2;7691:399:8;7650:64:2;7725:38;7746:4;7752:2;7756:6;7725:20;:38::i;:::-;7796:15;;;7774:19;7796:15;;;;;;;;;;;7829:21;;;;7821:72;;;;;;;8297:2:8;7821:72:2;;;8279:21:8;8336:2;8316:18;;;8309:30;8375:34;8355:18;;;8348:62;8446:8;8426:18;;;8419:36;8472:19;;7821:72:2;8095:402:8;7821:72:2;7927:15;;;;:9;:15;;;;;;;;;;;7945:20;;;7927:38;;7985:13;;;;;;;;:23;;7959:6;;7927:9;7985:23;;7959:6;;7985:23;:::i;:::-;;;;;;;;8039:2;8024:26;;8033:4;8024:26;;;8043:6;8024:26;;;;1424:25:8;;1412:2;1397:18;;1278:177;8024:26:2;;;;;;;;8061:37;11765:121;9090:576;9173:21;;;9165:67;;;;;;;8704:2:8;9165:67:2;;;8686:21:8;8743:2;8723:18;;;8716:30;8782:34;8762:18;;;8755:62;8853:3;8833:18;;;8826:31;8874:19;;9165:67:2;8502:397:8;9165:67:2;9243:49;9264:7;9281:1;9285:6;9243:20;:49::i;:::-;9328:18;;;9303:22;9328:18;;;;;;;;;;;9364:24;;;;9356:71;;;;;;;9106:2:8;9356:71:2;;;9088:21:8;9145:2;9125:18;;;9118:30;9184:34;9164:18;;;9157:62;9255:4;9235:18;;;9228:32;9277:19;;9356:71:2;8904:398:8;9356:71:2;9461:18;;;:9;:18;;;;;;;;;;9482:23;;;9461:44;;9525:12;:22;;9499:6;;9461:9;9525:22;;9499:6;;9525:22;:::i;:::-;;;;-1:-1:-1;;9563:37:2;;1424:25:8;;;9589:1:2;;9563:37;;;;;;1412:2:8;1397:18;9563:37:2;;;;;;;11765:121;;;:::o;1352:130:6:-;1266:6;;1415:23;1266:6;719:10:1;1415:23:6;1407:68;;;;;;;9642:2:8;1407:68:6;;;9624:21:8;;;9661:18;;;9654:30;9720:34;9700:18;;;9693:62;9772:18;;1407:68:6;9440:356:8;2426:187:6;2518:6;;;;2534:17;;;;;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;1113:292:7:-;1190:8;1174:24;;;;;;;;:::i;:::-;:12;;;;;;;:24;;;;;;;;:::i;:::-;;1170:144;;1280:12;;1258:45;;;;;;;1280:12;;;;;;1294:8;;1258:45;;;:::i;1170:144::-;1323:12;:23;;1338:8;;1323:12;:23;;;1338:8;1323:23;;;;;;;;:::i;:::-;;;;;;1361:37;1375:12;;;;;;;;;;;1389:8;1361:37;;;;;;;:::i;:::-;;;;;;;;1113:292;:::o;4106:992:0:-;4230:16;;;;;:30;;;4258:2;4250:10;;:4;:10;;;4230:30;4226:57;;;4106:992;;;:::o;4226:57::-;719:10:1;4289:15:0;4337:20;;;:11;:20;;;;;;;;;:47;;-1:-1:-1;4367:17:0;;;;;;;:11;:17;;;;;;;;4337:47;:72;;;-1:-1:-1;4394:15:0;;;;;;;:11;:15;;;;;;;;4337:72;:104;;;-1:-1:-1;4431:9:0;4419:22;;;;:11;:22;;;;;;;;4337:104;4326:579;;;4463:47;;;;;10003:2:8;4463:47:0;;;9985:21:8;10042:2;10022:18;;;10015:30;10081:28;10061:18;;;10054:56;10127:18;;4463:47:0;9801:350:8;4326:579:0;4542:19;1088:12:7;;;;;;;4527:34:0;;;;;;;;:::i;:::-;;4523:382;;4576:17;;;;;;;:11;:17;;;;;;;;4575:18;:38;;;;-1:-1:-1;4598:15:0;;;;;;;:11;:15;;;;;;;;4597:16;4575:38;:60;;;;-1:-1:-1;4617:18:0;;;;;4575:60;4571:183;;;4654:91;;;;;10358:2:8;4654:91:0;;;10340:21:8;10397:2;10377:18;;;10370:30;10436:34;10416:18;;;10409:62;10507:20;10487:18;;;10480:48;10545:19;;4654:91:0;10156:414:8;4571:183:0;4523:382;;;4792:16;1088:12:7;;;;;;;4777:31:0;;;;;;;;:::i;:::-;;:82;;;;;4837:22;;4818:15;:41;;4777:82;4766:139;;;4874:24;4887:10;4874:12;:24::i;:::-;4911:21;4935:19;4945:4;4951:2;4935:9;:19::i;:::-;4911:43;;4974:13;4964:6;:23;4960:83;;5004:32;;;;;;;;10749:25:8;;;10790:18;;;10783:34;;;10722:18;;5004:32:0;10575:248:8;4960:83:0;4220:878;;4106:992;;;:::o;5202:273::-;5269:7;5310:16;1088:12:7;;;;;;;5295:31:0;;;;;;;;:::i;:::-;;;:62;;;;-1:-1:-1;5344:13:0;;;5336:21;;;5344:13;;5336:21;5295:62;:90;;;;-1:-1:-1;5368:17:0;;;;;;;:11;:17;;;;;;;;5367:18;5295:90;:116;;;;-1:-1:-1;5396:15:0;;;;;;;:11;:15;;;;;;;;5395:16;5295:116;5284:166;;;-1:-1:-1;5433:10:0;;5426:17;;5284:166;-1:-1:-1;2195:66:0;5202:273;;;;:::o;14:607:8:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:196::-;694:20;;754:42;743:54;;733:65;;723:93;;812:1;809;802:12;723:93;626:196;;;:::o;827:254::-;895:6;903;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;995:29;1014:9;995:29;:::i;:::-;985:39;1071:2;1056:18;;;;1043:32;;-1:-1:-1;;;827:254:8:o;1460:184::-;1512:77;1509:1;1502:88;1609:4;1606:1;1599:15;1633:4;1630:1;1623:15;1649:290;1726:1;1719:5;1716:12;1706:200;;1762:77;1759:1;1752:88;1863:4;1860:1;1853:15;1891:4;1888:1;1881:15;1706:200;1915:18;;1649:290::o;1944:200::-;2086:2;2071:18;;2098:40;2075:9;2120:6;2098:40;:::i;2149:328::-;2226:6;2234;2242;2295:2;2283:9;2274:7;2270:23;2266:32;2263:52;;;2311:1;2308;2301:12;2263:52;2334:29;2353:9;2334:29;:::i;:::-;2324:39;;2382:38;2416:2;2405:9;2401:18;2382:38;:::i;:::-;2372:48;;2467:2;2456:9;2452:18;2439:32;2429:42;;2149:328;;;;;:::o;2671:180::-;2730:6;2783:2;2771:9;2762:7;2758:23;2754:32;2751:52;;;2799:1;2796;2789:12;2751:52;-1:-1:-1;2822:23:8;;2671:180;-1:-1:-1;2671:180:8:o;2856:186::-;2915:6;2968:2;2956:9;2947:7;2943:23;2939:32;2936:52;;;2984:1;2981;2974:12;2936:52;3007:29;3026:9;3007:29;:::i;3278:347::-;3343:6;3351;3404:2;3392:9;3383:7;3379:23;3375:32;3372:52;;;3420:1;3417;3410:12;3372:52;3443:29;3462:9;3443:29;:::i;:::-;3433:39;;3522:2;3511:9;3507:18;3494:32;3569:5;3562:13;3555:21;3548:5;3545:32;3535:60;;3591:1;3588;3581:12;3535:60;3614:5;3604:15;;;3278:347;;;;;:::o;3630:260::-;3698:6;3706;3759:2;3747:9;3738:7;3734:23;3730:32;3727:52;;;3775:1;3772;3765:12;3727:52;3798:29;3817:9;3798:29;:::i;:::-;3788:39;;3846:38;3880:2;3869:9;3865:18;3846:38;:::i;:::-;3836:48;;3630:260;;;;;:::o;3895:437::-;3974:1;3970:12;;;;4017;;;4038:61;;4092:4;4084:6;4080:17;4070:27;;4038:61;4145:2;4137:6;4134:14;4114:18;4111:38;4108:218;;4182:77;4179:1;4172:88;4283:4;4280:1;4273:15;4311:4;4308:1;4301:15;4108:218;;3895:437;;;:::o;4337:184::-;4389:77;4386:1;4379:88;4486:4;4483:1;4476:15;4510:4;4507:1;4500:15;4526:125;4591:9;;;4612:10;;;4609:36;;;4625:18;;:::i;5062:294::-;5240:2;5225:18;;5252:40;5229:9;5274:6;5252:40;:::i;:::-;5301:49;5346:2;5335:9;5331:18;5323:6;5301:49;:::i;9307:128::-;9374:9;;;9395:11;;;9392:37;;;9409:18;;:::i
Swarm Source
ipfs://f95b157fc21edaca4430e59d93480d0bb14630f8750f59d9ab9420faf550b9c2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.