Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 HAHA
Holders
64
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HaHaToken
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-16 */ // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ 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. 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 { 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); } } // File: @openzeppelin/contracts/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.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); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @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.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 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}. * * 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 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 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; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _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; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _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; // Overflow not possible: amount <= accountBalance <= totalSupply. _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 {} } // File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/ERC20Pausable.sol) pragma solidity ^0.8.0; /** * @dev ERC20 token with pausable token transfers, minting and burning. * * Useful for scenarios such as preventing trades until the end of an evaluation * period, or having an emergency switch for freezing all token transfers in the * event of a large bug. * * IMPORTANT: This contract does not include public pause and unpause functions. In * addition to inheriting this contract, you must define both functions, invoking the * {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate * access control, e.g. using {AccessControl} or {Ownable}. Not doing so will * make the contract unpausable. */ abstract contract ERC20Pausable is ERC20, Pausable { /** * @dev See {ERC20-_beforeTokenTransfer}. * * Requirements: * * - the contract must not be paused. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override { super._beforeTokenTransfer(from, to, amount); require(!paused(), "ERC20Pausable: token transfer while paused"); } } // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract HaHaToken is ERC20Pausable, Ownable { mapping(address => bool) public blacklists; constructor(uint256 _totalSupply) ERC20("Haha", "HAHA") { _mint(msg.sender, _totalSupply); } function pause() external onlyOwner { _pause(); } function unpause() external onlyOwner { _unpause(); } function burn(uint256 value) external { _burn(msg.sender, value); } function _beforeTokenTransfer(address from, address to, uint256 amount) override internal virtual { super._beforeTokenTransfer(from, to, amount); require(!_isBlacklist(from) && !_isBlacklist(to), "blacklisted"); } function blacklist(address _address, bool _isBlacklisting) external onlyOwner { blacklists[_address] = _isBlacklisting; } function _isBlacklist(address _address) internal virtual returns (bool) { return blacklists[_address]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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":"address","name":"account","type":"address"}],"name":"Unpaused","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":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","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":[{"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801562000010575f80fd5b5060405162002923380380620029238339818101604052810190620000369190620004ea565b6040518060400160405280600481526020017f48616861000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f48414841000000000000000000000000000000000000000000000000000000008152508160039081620000b3919062000775565b508060049081620000c5919062000775565b5050505f60055f6101000a81548160ff02191690831515021790555062000101620000f56200011a60201b60201c565b6200012160201b60201c565b620001133382620001e660201b60201c565b5062000a6c565b5f33905090565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000257576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024e90620008b7565b60405180910390fd5b6200026a5f83836200034b60201b60201c565b8060025f8282546200027d919062000904565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032c91906200094f565b60405180910390a3620003475f8383620003d260201b60201c565b5050565b6200035e838383620003d760201b60201c565b6200036f836200044260201b60201c565b1580156200038b575062000389826200044260201b60201c565b155b620003cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003c490620009b8565b60405180910390fd5b505050565b505050565b620003ea8383836200049460201b60201c565b620003fa6200049960201b60201c565b156200043d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004349062000a4c565b60405180910390fd5b505050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b505050565b5f60055f9054906101000a900460ff16905090565b5f80fd5b5f819050919050565b620004c681620004b2565b8114620004d1575f80fd5b50565b5f81519050620004e481620004bb565b92915050565b5f60208284031215620005025762000501620004ae565b5b5f6200051184828501620004d4565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200059657607f821691505b602082108103620005ac57620005ab62000551565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005d3565b6200061c8683620005d3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200065d620006576200065184620004b2565b62000634565b620004b2565b9050919050565b5f819050919050565b62000678836200063d565b62000690620006878262000664565b848454620005df565b825550505050565b5f90565b620006a662000698565b620006b38184846200066d565b505050565b5b81811015620006da57620006ce5f826200069c565b600181019050620006b9565b5050565b601f8211156200072957620006f381620005b2565b620006fe84620005c4565b810160208510156200070e578190505b620007266200071d85620005c4565b830182620006b8565b50505b505050565b5f82821c905092915050565b5f6200074b5f19846008026200072e565b1980831691505092915050565b5f6200076583836200073a565b9150826002028217905092915050565b62000780826200051a565b67ffffffffffffffff8111156200079c576200079b62000524565b5b620007a882546200057e565b620007b5828285620006de565b5f60209050601f831160018114620007eb575f8415620007d6578287015190505b620007e2858262000758565b86555062000851565b601f198416620007fb86620005b2565b5f5b828110156200082457848901518255600182019150602085019450602081019050620007fd565b8683101562000844578489015162000840601f8916826200073a565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6200089f601f8362000859565b9150620008ac8262000869565b602082019050919050565b5f6020820190508181035f830152620008d08162000891565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200091082620004b2565b91506200091d83620004b2565b9250828201905080821115620009385762000937620008d7565b5b92915050565b6200094981620004b2565b82525050565b5f602082019050620009645f8301846200093e565b92915050565b7f626c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f620009a0600b8362000859565b9150620009ad826200096a565b602082019050919050565b5f6020820190508181035f830152620009d18162000992565b9050919050565b7f45524332305061757361626c653a20746f6b656e207472616e736665722077685f8201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b5f62000a34602a8362000859565b915062000a4182620009d8565b604082019050919050565b5f6020820190508181035f83015262000a658162000a26565b9050919050565b611ea98062000a7a5f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c80635c975abb116100ab57806395d89b411161006f57806395d89b411461030a578063a457c2d714610328578063a9059cbb14610358578063dd62ed3e14610388578063f2fde38b146103b85761012a565b80635c975abb1461028a57806370a08231146102a8578063715018a6146102d85780638456cb59146102e25780638da5cb5b146102ec5761012a565b8063313ce567116100f2578063313ce567146101fa57806339509351146102185780633f4ba83a14610248578063404e51291461025257806342966c681461026e5761012a565b806306fdde031461012e578063095ea7b31461014c57806316c021291461017c57806318160ddd146101ac57806323b872dd146101ca575b5f80fd5b6101366103d4565b6040516101439190611330565b60405180910390f35b610166600480360381019061016191906113e1565b610464565b6040516101739190611439565b60405180910390f35b61019660048036038101906101919190611452565b610486565b6040516101a39190611439565b60405180910390f35b6101b46104a3565b6040516101c1919061148c565b60405180910390f35b6101e460048036038101906101df91906114a5565b6104ac565b6040516101f19190611439565b60405180910390f35b6102026104da565b60405161020f9190611510565b60405180910390f35b610232600480360381019061022d91906113e1565b6104e2565b60405161023f9190611439565b60405180910390f35b610250610518565b005b61026c60048036038101906102679190611553565b61052a565b005b61028860048036038101906102839190611591565b61058a565b005b610292610597565b60405161029f9190611439565b60405180910390f35b6102c260048036038101906102bd9190611452565b6105ac565b6040516102cf919061148c565b60405180910390f35b6102e06105f1565b005b6102ea610604565b005b6102f4610616565b60405161030191906115cb565b60405180910390f35b61031261063f565b60405161031f9190611330565b60405180910390f35b610342600480360381019061033d91906113e1565b6106cf565b60405161034f9190611439565b60405180910390f35b610372600480360381019061036d91906113e1565b610744565b60405161037f9190611439565b60405180910390f35b6103a2600480360381019061039d91906115e4565b610766565b6040516103af919061148c565b60405180910390f35b6103d260048036038101906103cd9190611452565b6107e8565b005b6060600380546103e39061164f565b80601f016020809104026020016040519081016040528092919081815260200182805461040f9061164f565b801561045a5780601f106104315761010080835404028352916020019161045a565b820191905f5260205f20905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b5f8061046e61086a565b905061047b818585610871565b600191505092915050565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b5f806104b661086a565b90506104c3858285610a34565b6104ce858585610abf565b60019150509392505050565b5f6012905090565b5f806104ec61086a565b905061050d8185856104fe8589610766565b61050891906116ac565b610871565b600191505092915050565b610520610d2b565b610528610da9565b565b610532610d2b565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6105943382610e0a565b50565b5f60055f9054906101000a900460ff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6105f9610d2b565b6106025f610fcd565b565b61060c610d2b565b610614611092565b565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461064e9061164f565b80601f016020809104026020016040519081016040528092919081815260200182805461067a9061164f565b80156106c55780601f1061069c576101008083540402835291602001916106c5565b820191905f5260205f20905b8154815290600101906020018083116106a857829003601f168201915b5050505050905090565b5f806106d961086a565b90505f6106e68286610766565b90508381101561072b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107229061174f565b60405180910390fd5b6107388286868403610871565b60019250505092915050565b5f8061074e61086a565b905061075b818585610abf565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6107f0610d2b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361085e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610855906117dd565b60405180910390fd5b61086781610fcd565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d69061186b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361094d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610944906118f9565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a27919061148c565b60405180910390a3505050565b5f610a3f8484610766565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ab95781811015610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290611961565b60405180910390fd5b610ab88484848403610871565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b24906119ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290611a7d565b60405180910390fd5b610ba68383836110f4565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2090611b0b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d12919061148c565b60405180910390a3610d2584848461115f565b50505050565b610d3361086a565b73ffffffffffffffffffffffffffffffffffffffff16610d51610616565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e90611b73565b60405180910390fd5b565b610db1611164565b5f60055f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610df361086a565b604051610e0091906115cb565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90611c01565b60405180910390fd5b610e83825f836110f4565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90611c8f565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fb5919061148c565b60405180910390a3610fc8835f8461115f565b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61109a6111ad565b600160055f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110dd61086a565b6040516110ea91906115cb565b60405180910390a1565b6110ff8383836111f7565b6111088361124f565b15801561111b57506111198261124f565b155b61115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190611cf7565b60405180910390fd5b505050565b505050565b61116c610597565b6111ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a290611d5f565b60405180910390fd5b565b6111b5610597565b156111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90611dc7565b60405180910390fd5b565b6112028383836112a1565b61120a610597565b1561124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190611e55565b60405180910390fd5b505050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156112dd5780820151818401526020810190506112c2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611302826112a6565b61130c81856112b0565b935061131c8185602086016112c0565b611325816112e8565b840191505092915050565b5f6020820190508181035f83015261134881846112f8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61137d82611354565b9050919050565b61138d81611373565b8114611397575f80fd5b50565b5f813590506113a881611384565b92915050565b5f819050919050565b6113c0816113ae565b81146113ca575f80fd5b50565b5f813590506113db816113b7565b92915050565b5f80604083850312156113f7576113f6611350565b5b5f6114048582860161139a565b9250506020611415858286016113cd565b9150509250929050565b5f8115159050919050565b6114338161141f565b82525050565b5f60208201905061144c5f83018461142a565b92915050565b5f6020828403121561146757611466611350565b5b5f6114748482850161139a565b91505092915050565b611486816113ae565b82525050565b5f60208201905061149f5f83018461147d565b92915050565b5f805f606084860312156114bc576114bb611350565b5b5f6114c98682870161139a565b93505060206114da8682870161139a565b92505060406114eb868287016113cd565b9150509250925092565b5f60ff82169050919050565b61150a816114f5565b82525050565b5f6020820190506115235f830184611501565b92915050565b6115328161141f565b811461153c575f80fd5b50565b5f8135905061154d81611529565b92915050565b5f806040838503121561156957611568611350565b5b5f6115768582860161139a565b92505060206115878582860161153f565b9150509250929050565b5f602082840312156115a6576115a5611350565b5b5f6115b3848285016113cd565b91505092915050565b6115c581611373565b82525050565b5f6020820190506115de5f8301846115bc565b92915050565b5f80604083850312156115fa576115f9611350565b5b5f6116078582860161139a565b92505060206116188582860161139a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061166657607f821691505b60208210810361167957611678611622565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116b6826113ae565b91506116c1836113ae565b92508282019050808211156116d9576116d861167f565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6117396025836112b0565b9150611744826116df565b604082019050919050565b5f6020820190508181035f8301526117668161172d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6117c76026836112b0565b91506117d28261176d565b604082019050919050565b5f6020820190508181035f8301526117f4816117bb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6118556024836112b0565b9150611860826117fb565b604082019050919050565b5f6020820190508181035f83015261188281611849565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6118e36022836112b0565b91506118ee82611889565b604082019050919050565b5f6020820190508181035f830152611910816118d7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61194b601d836112b0565b915061195682611917565b602082019050919050565b5f6020820190508181035f8301526119788161193f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6119d96025836112b0565b91506119e48261197f565b604082019050919050565b5f6020820190508181035f830152611a06816119cd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611a676023836112b0565b9150611a7282611a0d565b604082019050919050565b5f6020820190508181035f830152611a9481611a5b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611af56026836112b0565b9150611b0082611a9b565b604082019050919050565b5f6020820190508181035f830152611b2281611ae9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611b5d6020836112b0565b9150611b6882611b29565b602082019050919050565b5f6020820190508181035f830152611b8a81611b51565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f611beb6021836112b0565b9150611bf682611b91565b604082019050919050565b5f6020820190508181035f830152611c1881611bdf565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f611c796022836112b0565b9150611c8482611c1f565b604082019050919050565b5f6020820190508181035f830152611ca681611c6d565b9050919050565b7f626c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f611ce1600b836112b0565b9150611cec82611cad565b602082019050919050565b5f6020820190508181035f830152611d0e81611cd5565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f611d496014836112b0565b9150611d5482611d15565b602082019050919050565b5f6020820190508181035f830152611d7681611d3d565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f611db16010836112b0565b9150611dbc82611d7d565b602082019050919050565b5f6020820190508181035f830152611dde81611da5565b9050919050565b7f45524332305061757361626c653a20746f6b656e207472616e736665722077685f8201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b5f611e3f602a836112b0565b9150611e4a82611de5565b604082019050919050565b5f6020820190508181035f830152611e6c81611e33565b905091905056fea264697066735822122084e80f4e636246e91470fd2657860eeceb61c413a748f66fb24321bedf2babe664736f6c63430008140033000000000000000000000000000000000000000c9f2c9cd04674edea40000000
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061012a575f3560e01c80635c975abb116100ab57806395d89b411161006f57806395d89b411461030a578063a457c2d714610328578063a9059cbb14610358578063dd62ed3e14610388578063f2fde38b146103b85761012a565b80635c975abb1461028a57806370a08231146102a8578063715018a6146102d85780638456cb59146102e25780638da5cb5b146102ec5761012a565b8063313ce567116100f2578063313ce567146101fa57806339509351146102185780633f4ba83a14610248578063404e51291461025257806342966c681461026e5761012a565b806306fdde031461012e578063095ea7b31461014c57806316c021291461017c57806318160ddd146101ac57806323b872dd146101ca575b5f80fd5b6101366103d4565b6040516101439190611330565b60405180910390f35b610166600480360381019061016191906113e1565b610464565b6040516101739190611439565b60405180910390f35b61019660048036038101906101919190611452565b610486565b6040516101a39190611439565b60405180910390f35b6101b46104a3565b6040516101c1919061148c565b60405180910390f35b6101e460048036038101906101df91906114a5565b6104ac565b6040516101f19190611439565b60405180910390f35b6102026104da565b60405161020f9190611510565b60405180910390f35b610232600480360381019061022d91906113e1565b6104e2565b60405161023f9190611439565b60405180910390f35b610250610518565b005b61026c60048036038101906102679190611553565b61052a565b005b61028860048036038101906102839190611591565b61058a565b005b610292610597565b60405161029f9190611439565b60405180910390f35b6102c260048036038101906102bd9190611452565b6105ac565b6040516102cf919061148c565b60405180910390f35b6102e06105f1565b005b6102ea610604565b005b6102f4610616565b60405161030191906115cb565b60405180910390f35b61031261063f565b60405161031f9190611330565b60405180910390f35b610342600480360381019061033d91906113e1565b6106cf565b60405161034f9190611439565b60405180910390f35b610372600480360381019061036d91906113e1565b610744565b60405161037f9190611439565b60405180910390f35b6103a2600480360381019061039d91906115e4565b610766565b6040516103af919061148c565b60405180910390f35b6103d260048036038101906103cd9190611452565b6107e8565b005b6060600380546103e39061164f565b80601f016020809104026020016040519081016040528092919081815260200182805461040f9061164f565b801561045a5780601f106104315761010080835404028352916020019161045a565b820191905f5260205f20905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b5f8061046e61086a565b905061047b818585610871565b600191505092915050565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b5f806104b661086a565b90506104c3858285610a34565b6104ce858585610abf565b60019150509392505050565b5f6012905090565b5f806104ec61086a565b905061050d8185856104fe8589610766565b61050891906116ac565b610871565b600191505092915050565b610520610d2b565b610528610da9565b565b610532610d2b565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6105943382610e0a565b50565b5f60055f9054906101000a900460ff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6105f9610d2b565b6106025f610fcd565b565b61060c610d2b565b610614611092565b565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461064e9061164f565b80601f016020809104026020016040519081016040528092919081815260200182805461067a9061164f565b80156106c55780601f1061069c576101008083540402835291602001916106c5565b820191905f5260205f20905b8154815290600101906020018083116106a857829003601f168201915b5050505050905090565b5f806106d961086a565b90505f6106e68286610766565b90508381101561072b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107229061174f565b60405180910390fd5b6107388286868403610871565b60019250505092915050565b5f8061074e61086a565b905061075b818585610abf565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6107f0610d2b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361085e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610855906117dd565b60405180910390fd5b61086781610fcd565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d69061186b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361094d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610944906118f9565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a27919061148c565b60405180910390a3505050565b5f610a3f8484610766565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ab95781811015610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290611961565b60405180910390fd5b610ab88484848403610871565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b24906119ef565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290611a7d565b60405180910390fd5b610ba68383836110f4565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2090611b0b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d12919061148c565b60405180910390a3610d2584848461115f565b50505050565b610d3361086a565b73ffffffffffffffffffffffffffffffffffffffff16610d51610616565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e90611b73565b60405180910390fd5b565b610db1611164565b5f60055f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610df361086a565b604051610e0091906115cb565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90611c01565b60405180910390fd5b610e83825f836110f4565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90611c8f565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fb5919061148c565b60405180910390a3610fc8835f8461115f565b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61109a6111ad565b600160055f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110dd61086a565b6040516110ea91906115cb565b60405180910390a1565b6110ff8383836111f7565b6111088361124f565b15801561111b57506111198261124f565b155b61115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190611cf7565b60405180910390fd5b505050565b505050565b61116c610597565b6111ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a290611d5f565b60405180910390fd5b565b6111b5610597565b156111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90611dc7565b60405180910390fd5b565b6112028383836112a1565b61120a610597565b1561124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190611e55565b60405180910390fd5b505050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156112dd5780820151818401526020810190506112c2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611302826112a6565b61130c81856112b0565b935061131c8185602086016112c0565b611325816112e8565b840191505092915050565b5f6020820190508181035f83015261134881846112f8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61137d82611354565b9050919050565b61138d81611373565b8114611397575f80fd5b50565b5f813590506113a881611384565b92915050565b5f819050919050565b6113c0816113ae565b81146113ca575f80fd5b50565b5f813590506113db816113b7565b92915050565b5f80604083850312156113f7576113f6611350565b5b5f6114048582860161139a565b9250506020611415858286016113cd565b9150509250929050565b5f8115159050919050565b6114338161141f565b82525050565b5f60208201905061144c5f83018461142a565b92915050565b5f6020828403121561146757611466611350565b5b5f6114748482850161139a565b91505092915050565b611486816113ae565b82525050565b5f60208201905061149f5f83018461147d565b92915050565b5f805f606084860312156114bc576114bb611350565b5b5f6114c98682870161139a565b93505060206114da8682870161139a565b92505060406114eb868287016113cd565b9150509250925092565b5f60ff82169050919050565b61150a816114f5565b82525050565b5f6020820190506115235f830184611501565b92915050565b6115328161141f565b811461153c575f80fd5b50565b5f8135905061154d81611529565b92915050565b5f806040838503121561156957611568611350565b5b5f6115768582860161139a565b92505060206115878582860161153f565b9150509250929050565b5f602082840312156115a6576115a5611350565b5b5f6115b3848285016113cd565b91505092915050565b6115c581611373565b82525050565b5f6020820190506115de5f8301846115bc565b92915050565b5f80604083850312156115fa576115f9611350565b5b5f6116078582860161139a565b92505060206116188582860161139a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061166657607f821691505b60208210810361167957611678611622565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116b6826113ae565b91506116c1836113ae565b92508282019050808211156116d9576116d861167f565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6117396025836112b0565b9150611744826116df565b604082019050919050565b5f6020820190508181035f8301526117668161172d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6117c76026836112b0565b91506117d28261176d565b604082019050919050565b5f6020820190508181035f8301526117f4816117bb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6118556024836112b0565b9150611860826117fb565b604082019050919050565b5f6020820190508181035f83015261188281611849565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6118e36022836112b0565b91506118ee82611889565b604082019050919050565b5f6020820190508181035f830152611910816118d7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61194b601d836112b0565b915061195682611917565b602082019050919050565b5f6020820190508181035f8301526119788161193f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6119d96025836112b0565b91506119e48261197f565b604082019050919050565b5f6020820190508181035f830152611a06816119cd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611a676023836112b0565b9150611a7282611a0d565b604082019050919050565b5f6020820190508181035f830152611a9481611a5b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611af56026836112b0565b9150611b0082611a9b565b604082019050919050565b5f6020820190508181035f830152611b2281611ae9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611b5d6020836112b0565b9150611b6882611b29565b602082019050919050565b5f6020820190508181035f830152611b8a81611b51565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f611beb6021836112b0565b9150611bf682611b91565b604082019050919050565b5f6020820190508181035f830152611c1881611bdf565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f611c796022836112b0565b9150611c8482611c1f565b604082019050919050565b5f6020820190508181035f830152611ca681611c6d565b9050919050565b7f626c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f611ce1600b836112b0565b9150611cec82611cad565b602082019050919050565b5f6020820190508181035f830152611d0e81611cd5565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f611d496014836112b0565b9150611d5482611d15565b602082019050919050565b5f6020820190508181035f830152611d7681611d3d565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f611db16010836112b0565b9150611dbc82611d7d565b602082019050919050565b5f6020820190508181035f830152611dde81611da5565b9050919050565b7f45524332305061757361626c653a20746f6b656e207472616e736665722077685f8201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b5f611e3f602a836112b0565b9150611e4a82611de5565b604082019050919050565b5f6020820190508181035f830152611e6c81611e33565b905091905056fea264697066735822122084e80f4e636246e91470fd2657860eeceb61c413a748f66fb24321bedf2babe664736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000c9f2c9cd04674edea40000000
-----Decoded View---------------
Arg [0] : _totalSupply (uint256): 1000000000000000000000000000000
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000c9f2c9cd04674edea40000000
Deployed Bytecode Sourcemap
24329:992:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11969:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14329:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24387:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13098:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15110:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12940:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15780:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24621:67;;;:::i;:::-;;25051:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24702:84;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5259:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13269:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2769:103;;;:::i;:::-;;24552:63;;;:::i;:::-;;2128:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12188:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16521:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13602:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13858:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3027:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11969:100;12023:13;12056:5;12049:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11969:100;:::o;14329:201::-;14412:4;14429:13;14445:12;:10;:12::i;:::-;14429:28;;14468:32;14477:5;14484:7;14493:6;14468:8;:32::i;:::-;14518:4;14511:11;;;14329:201;;;;:::o;24387:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;13098:108::-;13159:7;13186:12;;13179:19;;13098:108;:::o;15110:261::-;15207:4;15224:15;15242:12;:10;:12::i;:::-;15224:30;;15265:38;15281:4;15287:7;15296:6;15265:15;:38::i;:::-;15314:27;15324:4;15330:2;15334:6;15314:9;:27::i;:::-;15359:4;15352:11;;;15110:261;;;;;:::o;12940:93::-;12998:5;13023:2;13016:9;;12940:93;:::o;15780:238::-;15868:4;15885:13;15901:12;:10;:12::i;:::-;15885:28;;15924:64;15933:5;15940:7;15977:10;15949:25;15959:5;15966:7;15949:9;:25::i;:::-;:38;;;;:::i;:::-;15924:8;:64::i;:::-;16006:4;15999:11;;;15780:238;;;;:::o;24621:67::-;2014:13;:11;:13::i;:::-;24670:10:::1;:8;:10::i;:::-;24621:67::o:0;25051:135::-;2014:13;:11;:13::i;:::-;25163:15:::1;25140:10;:20;25151:8;25140:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;25051:135:::0;;:::o;24702:84::-;24751:24;24757:10;24769:5;24751;:24::i;:::-;24702:84;:::o;5259:86::-;5306:4;5330:7;;;;;;;;;;;5323:14;;5259:86;:::o;13269:127::-;13343:7;13370:9;:18;13380:7;13370:18;;;;;;;;;;;;;;;;13363:25;;13269:127;;;:::o;2769:103::-;2014:13;:11;:13::i;:::-;2834:30:::1;2861:1;2834:18;:30::i;:::-;2769:103::o:0;24552:63::-;2014:13;:11;:13::i;:::-;24599:8:::1;:6;:8::i;:::-;24552:63::o:0;2128:87::-;2174:7;2201:6;;;;;;;;;;;2194:13;;2128:87;:::o;12188:104::-;12244:13;12277:7;12270:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12188:104;:::o;16521:436::-;16614:4;16631:13;16647:12;:10;:12::i;:::-;16631:28;;16670:24;16697:25;16707:5;16714:7;16697:9;:25::i;:::-;16670:52;;16761:15;16741:16;:35;;16733:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;16854:60;16863:5;16870:7;16898:15;16879:16;:34;16854:8;:60::i;:::-;16945:4;16938:11;;;;16521:436;;;;:::o;13602:193::-;13681:4;13698:13;13714:12;:10;:12::i;:::-;13698:28;;13737;13747:5;13754:2;13758:6;13737:9;:28::i;:::-;13783:4;13776:11;;;13602:193;;;;:::o;13858:151::-;13947:7;13974:11;:18;13986:5;13974:18;;;;;;;;;;;;;;;:27;13993:7;13974:27;;;;;;;;;;;;;;;;13967:34;;13858:151;;;;:::o;3027:201::-;2014:13;:11;:13::i;:::-;3136:1:::1;3116:22;;:8;:22;;::::0;3108:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3192:28;3211:8;3192:18;:28::i;:::-;3027:201:::0;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;20514:346::-;20633:1;20616:19;;:5;:19;;;20608:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20714:1;20695:21;;:7;:21;;;20687:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20798:6;20768:11;:18;20780:5;20768:18;;;;;;;;;;;;;;;:27;20787:7;20768:27;;;;;;;;;;;;;;;:36;;;;20836:7;20820:32;;20829:5;20820:32;;;20845:6;20820:32;;;;;;:::i;:::-;;;;;;;;20514:346;;;:::o;21151:419::-;21252:24;21279:25;21289:5;21296:7;21279:9;:25::i;:::-;21252:52;;21339:17;21319:16;:37;21315:248;;21401:6;21381:16;:26;;21373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21485:51;21494:5;21501:7;21529:6;21510:16;:25;21485:8;:51::i;:::-;21315:248;21241:329;21151:419;;;:::o;17427:806::-;17540:1;17524:18;;:4;:18;;;17516:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17617:1;17603:16;;:2;:16;;;17595:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17672:38;17693:4;17699:2;17703:6;17672:20;:38::i;:::-;17723:19;17745:9;:15;17755:4;17745:15;;;;;;;;;;;;;;;;17723:37;;17794:6;17779:11;:21;;17771:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;17911:6;17897:11;:20;17879:9;:15;17889:4;17879:15;;;;;;;;;;;;;;;:38;;;;18114:6;18097:9;:13;18107:2;18097:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;18164:2;18149:26;;18158:4;18149:26;;;18168:6;18149:26;;;;;;:::i;:::-;;;;;;;;18188:37;18208:4;18214:2;18218:6;18188:19;:37::i;:::-;17505:728;17427:806;;;:::o;2293:132::-;2368:12;:10;:12::i;:::-;2357:23;;:7;:5;:7::i;:::-;:23;;;2349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2293:132::o;6114:120::-;5123:16;:14;:16::i;:::-;6183:5:::1;6173:7;;:15;;;;;;;;;;;;;;;;;;6204:22;6213:12;:10;:12::i;:::-;6204:22;;;;;;:::i;:::-;;;;;;;;6114:120::o:0;19401:675::-;19504:1;19485:21;;:7;:21;;;19477:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19557:49;19578:7;19595:1;19599:6;19557:20;:49::i;:::-;19619:22;19644:9;:18;19654:7;19644:18;;;;;;;;;;;;;;;;19619:43;;19699:6;19681:14;:24;;19673:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19818:6;19801:14;:23;19780:9;:18;19790:7;19780:18;;;;;;;;;;;;;;;:44;;;;19935:6;19919:12;;:22;;;;;;;;;;;19996:1;19970:37;;19979:7;19970:37;;;20000:6;19970:37;;;;;;:::i;:::-;;;;;;;;20020:48;20040:7;20057:1;20061:6;20020:19;:48::i;:::-;19466:610;19401:675;;:::o;3388:191::-;3462:16;3481:6;;;;;;;;;;;3462:25;;3507:8;3498:6;;:17;;;;;;;;;;;;;;;;;;3562:8;3531:40;;3552:8;3531:40;;;;;;;;;;;;3451:128;3388:191;:::o;5855:118::-;4864:19;:17;:19::i;:::-;5925:4:::1;5915:7;;:14;;;;;;;;;;;;;;;;;;5945:20;5952:12;:10;:12::i;:::-;5945:20;;;;;;:::i;:::-;;;;;;;;5855:118::o:0;24798:245::-;24907:44;24934:4;24940:2;24944:6;24907:26;:44::i;:::-;24973:18;24986:4;24973:12;:18::i;:::-;24972:19;:40;;;;;24996:16;25009:2;24996:12;:16::i;:::-;24995:17;24972:40;24964:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24798:245;;;:::o;22865:90::-;;;;:::o;5603:108::-;5670:8;:6;:8::i;:::-;5662:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;5603:108::o;5418:::-;5489:8;:6;:8::i;:::-;5488:9;5480:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5418:108::o;24019:238::-;24128:44;24155:4;24161:2;24165:6;24128:26;:44::i;:::-;24194:8;:6;:8::i;:::-;24193:9;24185:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24019:238;;;:::o;25194:118::-;25260:4;25284:10;:20;25295:8;25284:20;;;;;;;;;;;;;;;;;;;;;;;;;25277:27;;25194:118;;;:::o;22170:91::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:180::-;7138:77;7135:1;7128:88;7235:4;7232:1;7225:15;7259:4;7256:1;7249:15;7276:320;7320:6;7357:1;7351:4;7347:12;7337:22;;7404:1;7398:4;7394:12;7425:18;7415:81;;7481:4;7473:6;7469:17;7459:27;;7415:81;7543:2;7535:6;7532:14;7512:18;7509:38;7506:84;;7562:18;;:::i;:::-;7506:84;7327:269;7276:320;;;:::o;7602:180::-;7650:77;7647:1;7640:88;7747:4;7744:1;7737:15;7771:4;7768:1;7761:15;7788:191;7828:3;7847:20;7865:1;7847:20;:::i;:::-;7842:25;;7881:20;7899:1;7881:20;:::i;:::-;7876:25;;7924:1;7921;7917:9;7910:16;;7945:3;7942:1;7939:10;7936:36;;;7952:18;;:::i;:::-;7936:36;7788:191;;;;:::o;7985:224::-;8125:34;8121:1;8113:6;8109:14;8102:58;8194:7;8189:2;8181:6;8177:15;8170:32;7985:224;:::o;8215:366::-;8357:3;8378:67;8442:2;8437:3;8378:67;:::i;:::-;8371:74;;8454:93;8543:3;8454:93;:::i;:::-;8572:2;8567:3;8563:12;8556:19;;8215:366;;;:::o;8587:419::-;8753:4;8791:2;8780:9;8776:18;8768:26;;8840:9;8834:4;8830:20;8826:1;8815:9;8811:17;8804:47;8868:131;8994:4;8868:131;:::i;:::-;8860:139;;8587:419;;;:::o;9012:225::-;9152:34;9148:1;9140:6;9136:14;9129:58;9221:8;9216:2;9208:6;9204:15;9197:33;9012:225;:::o;9243:366::-;9385:3;9406:67;9470:2;9465:3;9406:67;:::i;:::-;9399:74;;9482:93;9571:3;9482:93;:::i;:::-;9600:2;9595:3;9591:12;9584:19;;9243:366;;;:::o;9615:419::-;9781:4;9819:2;9808:9;9804:18;9796:26;;9868:9;9862:4;9858:20;9854:1;9843:9;9839:17;9832:47;9896:131;10022:4;9896:131;:::i;:::-;9888:139;;9615:419;;;:::o;10040:223::-;10180:34;10176:1;10168:6;10164:14;10157:58;10249:6;10244:2;10236:6;10232:15;10225:31;10040:223;:::o;10269:366::-;10411:3;10432:67;10496:2;10491:3;10432:67;:::i;:::-;10425:74;;10508:93;10597:3;10508:93;:::i;:::-;10626:2;10621:3;10617:12;10610:19;;10269:366;;;:::o;10641:419::-;10807:4;10845:2;10834:9;10830:18;10822:26;;10894:9;10888:4;10884:20;10880:1;10869:9;10865:17;10858:47;10922:131;11048:4;10922:131;:::i;:::-;10914:139;;10641:419;;;:::o;11066:221::-;11206:34;11202:1;11194:6;11190:14;11183:58;11275:4;11270:2;11262:6;11258:15;11251:29;11066:221;:::o;11293:366::-;11435:3;11456:67;11520:2;11515:3;11456:67;:::i;:::-;11449:74;;11532:93;11621:3;11532:93;:::i;:::-;11650:2;11645:3;11641:12;11634:19;;11293:366;;;:::o;11665:419::-;11831:4;11869:2;11858:9;11854:18;11846:26;;11918:9;11912:4;11908:20;11904:1;11893:9;11889:17;11882:47;11946:131;12072:4;11946:131;:::i;:::-;11938:139;;11665:419;;;:::o;12090:179::-;12230:31;12226:1;12218:6;12214:14;12207:55;12090:179;:::o;12275:366::-;12417:3;12438:67;12502:2;12497:3;12438:67;:::i;:::-;12431:74;;12514:93;12603:3;12514:93;:::i;:::-;12632:2;12627:3;12623:12;12616:19;;12275:366;;;:::o;12647:419::-;12813:4;12851:2;12840:9;12836:18;12828:26;;12900:9;12894:4;12890:20;12886:1;12875:9;12871:17;12864:47;12928:131;13054:4;12928:131;:::i;:::-;12920:139;;12647:419;;;:::o;13072:224::-;13212:34;13208:1;13200:6;13196:14;13189:58;13281:7;13276:2;13268:6;13264:15;13257:32;13072:224;:::o;13302:366::-;13444:3;13465:67;13529:2;13524:3;13465:67;:::i;:::-;13458:74;;13541:93;13630:3;13541:93;:::i;:::-;13659:2;13654:3;13650:12;13643:19;;13302:366;;;:::o;13674:419::-;13840:4;13878:2;13867:9;13863:18;13855:26;;13927:9;13921:4;13917:20;13913:1;13902:9;13898:17;13891:47;13955:131;14081:4;13955:131;:::i;:::-;13947:139;;13674:419;;;:::o;14099:222::-;14239:34;14235:1;14227:6;14223:14;14216:58;14308:5;14303:2;14295:6;14291:15;14284:30;14099:222;:::o;14327:366::-;14469:3;14490:67;14554:2;14549:3;14490:67;:::i;:::-;14483:74;;14566:93;14655:3;14566:93;:::i;:::-;14684:2;14679:3;14675:12;14668:19;;14327:366;;;:::o;14699:419::-;14865:4;14903:2;14892:9;14888:18;14880:26;;14952:9;14946:4;14942:20;14938:1;14927:9;14923:17;14916:47;14980:131;15106:4;14980:131;:::i;:::-;14972:139;;14699:419;;;:::o;15124:225::-;15264:34;15260:1;15252:6;15248:14;15241:58;15333:8;15328:2;15320:6;15316:15;15309:33;15124:225;:::o;15355:366::-;15497:3;15518:67;15582:2;15577:3;15518:67;:::i;:::-;15511:74;;15594:93;15683:3;15594:93;:::i;:::-;15712:2;15707:3;15703:12;15696:19;;15355:366;;;:::o;15727:419::-;15893:4;15931:2;15920:9;15916:18;15908:26;;15980:9;15974:4;15970:20;15966:1;15955:9;15951:17;15944:47;16008:131;16134:4;16008:131;:::i;:::-;16000:139;;15727:419;;;:::o;16152:182::-;16292:34;16288:1;16280:6;16276:14;16269:58;16152:182;:::o;16340:366::-;16482:3;16503:67;16567:2;16562:3;16503:67;:::i;:::-;16496:74;;16579:93;16668:3;16579:93;:::i;:::-;16697:2;16692:3;16688:12;16681:19;;16340:366;;;:::o;16712:419::-;16878:4;16916:2;16905:9;16901:18;16893:26;;16965:9;16959:4;16955:20;16951:1;16940:9;16936:17;16929:47;16993:131;17119:4;16993:131;:::i;:::-;16985:139;;16712:419;;;:::o;17137:220::-;17277:34;17273:1;17265:6;17261:14;17254:58;17346:3;17341:2;17333:6;17329:15;17322:28;17137:220;:::o;17363:366::-;17505:3;17526:67;17590:2;17585:3;17526:67;:::i;:::-;17519:74;;17602:93;17691:3;17602:93;:::i;:::-;17720:2;17715:3;17711:12;17704:19;;17363:366;;;:::o;17735:419::-;17901:4;17939:2;17928:9;17924:18;17916:26;;17988:9;17982:4;17978:20;17974:1;17963:9;17959:17;17952:47;18016:131;18142:4;18016:131;:::i;:::-;18008:139;;17735:419;;;:::o;18160:221::-;18300:34;18296:1;18288:6;18284:14;18277:58;18369:4;18364:2;18356:6;18352:15;18345:29;18160:221;:::o;18387:366::-;18529:3;18550:67;18614:2;18609:3;18550:67;:::i;:::-;18543:74;;18626:93;18715:3;18626:93;:::i;:::-;18744:2;18739:3;18735:12;18728:19;;18387:366;;;:::o;18759:419::-;18925:4;18963:2;18952:9;18948:18;18940:26;;19012:9;19006:4;19002:20;18998:1;18987:9;18983:17;18976:47;19040:131;19166:4;19040:131;:::i;:::-;19032:139;;18759:419;;;:::o;19184:161::-;19324:13;19320:1;19312:6;19308:14;19301:37;19184:161;:::o;19351:366::-;19493:3;19514:67;19578:2;19573:3;19514:67;:::i;:::-;19507:74;;19590:93;19679:3;19590:93;:::i;:::-;19708:2;19703:3;19699:12;19692:19;;19351:366;;;:::o;19723:419::-;19889:4;19927:2;19916:9;19912:18;19904:26;;19976:9;19970:4;19966:20;19962:1;19951:9;19947:17;19940:47;20004:131;20130:4;20004:131;:::i;:::-;19996:139;;19723:419;;;:::o;20148:170::-;20288:22;20284:1;20276:6;20272:14;20265:46;20148:170;:::o;20324:366::-;20466:3;20487:67;20551:2;20546:3;20487:67;:::i;:::-;20480:74;;20563:93;20652:3;20563:93;:::i;:::-;20681:2;20676:3;20672:12;20665:19;;20324:366;;;:::o;20696:419::-;20862:4;20900:2;20889:9;20885:18;20877:26;;20949:9;20943:4;20939:20;20935:1;20924:9;20920:17;20913:47;20977:131;21103:4;20977:131;:::i;:::-;20969:139;;20696:419;;;:::o;21121:166::-;21261:18;21257:1;21249:6;21245:14;21238:42;21121:166;:::o;21293:366::-;21435:3;21456:67;21520:2;21515:3;21456:67;:::i;:::-;21449:74;;21532:93;21621:3;21532:93;:::i;:::-;21650:2;21645:3;21641:12;21634:19;;21293:366;;;:::o;21665:419::-;21831:4;21869:2;21858:9;21854:18;21846:26;;21918:9;21912:4;21908:20;21904:1;21893:9;21889:17;21882:47;21946:131;22072:4;21946:131;:::i;:::-;21938:139;;21665:419;;;:::o;22090:229::-;22230:34;22226:1;22218:6;22214:14;22207:58;22299:12;22294:2;22286:6;22282:15;22275:37;22090:229;:::o;22325:366::-;22467:3;22488:67;22552:2;22547:3;22488:67;:::i;:::-;22481:74;;22564:93;22653:3;22564:93;:::i;:::-;22682:2;22677:3;22673:12;22666:19;;22325:366;;;:::o;22697:419::-;22863:4;22901:2;22890:9;22886:18;22878:26;;22950:9;22944:4;22940:20;22936:1;22925:9;22921:17;22914:47;22978:131;23104:4;22978:131;:::i;:::-;22970:139;;22697:419;;;:::o
Swarm Source
ipfs://84e80f4e636246e91470fd2657860eeceb61c413a748f66fb24321bedf2babe6
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.