Polygon Sponsored slots available. Book your slot here!
ERC-20
Metaverse
Overview
Max Total Supply
35,000,000,000 PME
Holders
8,214 (0.00%)
Market
Price
$0.0021 @ 0.003816 POL (-24.57%)
Onchain Market Cap
$71,783,379.50
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 6 Decimals)
Balance
277,725 PMEValue
$569.60 ( ~1,059.9084 POL) [0.0008%]Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
PMETokenV2
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2024-05-01 */ // File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity ^0.8.20; /** * @dev Standard ERC20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; /** * @dev Interface for the optional metadata functions from the ERC20 standard. */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of 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. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * 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 returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `value`. */ function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } /** * @dev See {IERC20-transferFrom}. * * 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 `value`. * - the caller must have allowance for ``from``'s tokens of at least * `value`. */ function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } /** * @dev Moves a `value` amount of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 value) internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } /** * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding * this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } /** * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } /** * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply. * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } /** * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. * * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. */ function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } /** * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event. * * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any * `Approval` event during `transferFrom` operations. * * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to * true using the following override: * ``` * function _approve(address owner, address spender, uint256 value, bool) internal virtual override { * super._approve(owner, spender, value, true); * } * ``` * * Requirements are the same as {_approve}. */ function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } /** * @dev Updates `owner` s allowance for `spender` based on spent `value`. * * Does not update the allowance value in case of infinite allowance. * Revert if not enough allowance is available. * * Does not emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } // File: contracts/token.sol pragma solidity 0.8.20; /** * @title PMETokenV2 * @dev Extends ERC20 token with additional features like whitelisting, blacklisting, and balance blocking. */ contract PMETokenV2 is ERC20, Ownable { struct UserSettings { bool whitelistEnabled; // Flag indicating whether whitelist is enabled for the user mapping(address => bool) whitelist; // Mapping of whitelisted addresses for the user mapping(address => uint256) whiteListTransferAble; } mapping(address => UserSettings) private _userSettings; // Mapping of user settings mapping(address => uint256) private _blockedBalances; // Mapping of blocked balances for addresses mapping(address => bool) private _blacklist; // Mapping of blacklisted addresses event WhitelistAdded(address indexed user, address indexed allowedAddress); // Event emitted when an address is added to whitelist event WhitelistRemoved(address indexed user, address indexed disallowedAddress); // Event emitted when an address is removed from whitelist event BalanceBlocked(address indexed account, uint256 amount); // Event emitted when balance is blocked for an account event BalanceUnblocked(address indexed account, uint256 amount); // Event emitted when blocked balance is unblocked for an account event Blacklisted(address indexed account); // Event emitted when an account is blacklisted event RemovedFromBlacklist(address indexed account); // Event emitted when an account is removed from blacklist event Mint(address indexed to, uint256 amount); // Event emitted when tokens are minted /** * @dev Constructor function to initialize the ERC20 token with a name and symbol. * @param name_ The name of the token * @param symbol_ The symbol of the token */ constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_) Ownable(msg.sender){} function decimals() public pure override returns (uint8) { return 6; } /** * @dev Overrides the transfer function to include additional checks for blacklist and whitelist. */ function transfer(address recipient, uint256 amount) public override returns (bool) { require(!_blacklist[msg.sender], "Sender is blacklisted"); require(!_blacklist[recipient], "Recipient is blacklisted"); if (_userSettings[msg.sender].whitelistEnabled){ require(_userSettings[msg.sender].whitelist[recipient], "Recipient is not whitelisted"); require(_userSettings[msg.sender].whiteListTransferAble[recipient] >= amount, "Insufficient transferable amount"); _userSettings[msg.sender].whiteListTransferAble[recipient] -= amount; } require(balanceOf(msg.sender) - _blockedBalances[msg.sender] >= amount, "Transfer amount exceeds unblocked balance"); return super.transfer(recipient, amount); } /** * @dev Overrides the transferFrom function to include additional checks for blacklist and whitelist. */ function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { require(!_blacklist[sender], "Sender is blacklisted"); require(!_blacklist[recipient], "Recipient is blacklisted"); if (_userSettings[sender].whitelistEnabled){ require(_userSettings[sender].whitelist[recipient], "Recipient is not whitelisted"); require(_userSettings[sender].whiteListTransferAble[recipient] >= amount, "Insufficient transferable amount"); _userSettings[sender].whiteListTransferAble[recipient] -= amount; } require(balanceOf(sender) - _blockedBalances[sender] >= amount, "Transfer amount exceeds unblocked balance"); return super.transferFrom(sender, recipient, amount); } /** * @dev Adds an address to the whitelist. */ function addToWhitelist(address user, address allowedAddress, uint256 amount) external onlyOwner { require(_userSettings[user].whitelistEnabled, "Whitelist is not enabled"); require(!(_userSettings[user].whitelist[allowedAddress]), "Address is already whitelisted"); _userSettings[user].whitelist[allowedAddress] = true; _userSettings[user].whiteListTransferAble[allowedAddress] = amount; emit WhitelistAdded(user, allowedAddress); } /** * @dev Adds multiple addresses to the whitelist. */ function batchAddToWhitelist(address user, address[] memory allowedAddresses, uint256[] memory amounts) external onlyOwner { require(_userSettings[user].whitelistEnabled, "Whitelist is not enabled"); for (uint256 i = 0; i < allowedAddresses.length; i++) { require(!(_userSettings[user].whitelist[allowedAddresses[i]]), "Address is already whitelisted"); _userSettings[user].whitelist[allowedAddresses[i]] = true; _userSettings[user].whiteListTransferAble[allowedAddresses[i]] = amounts[i]; emit WhitelistAdded(user, allowedAddresses[i]); } } /** * @dev Removes an address from the whitelist. */ function removeFromWhitelist(address user, address disallowedAddress) external onlyOwner { require(_userSettings[user].whitelistEnabled, "Whitelist is not enabled"); require(_userSettings[user].whitelist[disallowedAddress], "Address is not whitelisted"); delete _userSettings[user].whitelist[disallowedAddress]; delete _userSettings[user].whiteListTransferAble[disallowedAddress]; emit WhitelistRemoved(user, disallowedAddress); } /** * @dev Removes multiple addresses from the whitelist. */ function batchRemoveFromWhitelist(address user, address[] memory disallowedAddresses) external onlyOwner { require(_userSettings[user].whitelistEnabled, "Whitelist is not enabled"); for (uint256 i = 0; i < disallowedAddresses.length; i++) { require(_userSettings[user].whitelist[disallowedAddresses[i]], "Address is not whitelisted"); delete _userSettings[user].whitelist[disallowedAddresses[i]]; delete _userSettings[user].whiteListTransferAble[disallowedAddresses[i]]; emit WhitelistRemoved(user, disallowedAddresses[i]); } } /** * @dev Enables whitelist for a user. */ function enableWhitelist(address user) external onlyOwner { require(!(_userSettings[user].whitelistEnabled), "Whitelist is already enabled"); _userSettings[user].whitelistEnabled = true; } /** * @dev Disables whitelist for a user. */ function disableWhitelist(address user) external onlyOwner { require(_userSettings[user].whitelistEnabled, "Whitelist is already disabled"); _userSettings[user].whitelistEnabled = false; } /** * @dev Blocks balance for an account. */ function blockBalance(address account, uint256 amount) external onlyOwner { require(amount > 0, "Amount must be greater than zero"); require(_blockedBalances[account] + amount <= balanceOf(account), "Insufficient balance"); _blockedBalances[account] += amount; emit BalanceBlocked(account, amount); } /** * @dev Unblocks balance for an account. */ function unblockBalance(address account, uint256 amount) external onlyOwner { require(_blockedBalances[account] >= amount, "Insufficient blocked balance"); require(amount > 0, "Amount must be greater than zero"); require(_blockedBalances[account] - amount >= 0, "Blocked balance cannot be negative"); _blockedBalances[account] -= amount; emit BalanceUnblocked(account, amount); } /** * @dev Blacklists an account. */ function blacklist(address account) external onlyOwner { _blacklist[account] = true; emit Blacklisted(account); } /** * @dev Removes an account from the blacklist. */ function removeFromBlacklist(address account) external onlyOwner { _blacklist[account] = false; emit RemovedFromBlacklist(account); } /** * @dev Checks if an account is blacklisted. */ function isBlacklisted(address account) external view returns (bool) { return _blacklist[account]; } /** * @dev Gets the blocked balance for an account. */ function getBlockedBalance(address account) external view returns (uint256) { return _blockedBalances[account]; } /** * @dev Mints tokens and sends them to the specified account. */ function mint(address to, uint256 amount) external onlyOwner { require(!_blacklist[to], "To is blacklisted"); require(amount > 0, "Amount must be greater than zero"); _mint(to, amount); emit Mint(to, amount); } function getWhitelistedAmount(address user, address whitelistedUser) external view returns (uint256) { return _userSettings[user].whiteListTransferAble[whitelistedUser]; } function burn(uint256 amount) external returns(bool){ if(balanceOf(msg.sender) < amount) revert ("You dont own enough tokens"); _burn(msg.sender, amount); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceBlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceUnblocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","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":"account","type":"address"}],"name":"RemovedFromBlacklist","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":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"allowedAddress","type":"address"}],"name":"WhitelistAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"disallowedAddress","type":"address"}],"name":"WhitelistRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"allowedAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"value","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":"user","type":"address"},{"internalType":"address[]","name":"allowedAddresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchAddToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address[]","name":"disallowedAddresses","type":"address[]"}],"name":"batchRemoveFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"blockBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"disableWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"enableWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getBlockedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"whitelistedUser","type":"address"}],"name":"getWhitelistedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"disallowedAddress","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unblockBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801562000010575f80fd5b50604051620043ea380380620043ea833981810160405281019062000036919062000334565b33828281600390816200004a9190620005ee565b5080600490816200005c9190620005ee565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000d2575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000c9919062000715565b60405180910390fd5b620000e381620000ec60201b60201c565b50505062000730565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200021082620001c8565b810181811067ffffffffffffffff82111715620002325762000231620001d8565b5b80604052505050565b5f62000246620001af565b905062000254828262000205565b919050565b5f67ffffffffffffffff821115620002765762000275620001d8565b5b6200028182620001c8565b9050602081019050919050565b5f5b83811015620002ad57808201518184015260208101905062000290565b5f8484015250505050565b5f620002ce620002c88462000259565b6200023b565b905082815260208101848484011115620002ed57620002ec620001c4565b5b620002fa8482856200028e565b509392505050565b5f82601f830112620003195762000318620001c0565b5b81516200032b848260208601620002b8565b91505092915050565b5f80604083850312156200034d576200034c620001b8565b5b5f83015167ffffffffffffffff8111156200036d576200036c620001bc565b5b6200037b8582860162000302565b925050602083015167ffffffffffffffff8111156200039f576200039e620001bc565b5b620003ad8582860162000302565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200040657607f821691505b6020821081036200041c576200041b620003c1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000443565b6200048c868362000443565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004d6620004d0620004ca84620004a4565b620004ad565b620004a4565b9050919050565b5f819050919050565b620004f183620004b6565b620005096200050082620004dd565b8484546200044f565b825550505050565b5f90565b6200051f62000511565b6200052c818484620004e6565b505050565b5b818110156200055357620005475f8262000515565b60018101905062000532565b5050565b601f821115620005a2576200056c8162000422565b620005778462000434565b8101602085101562000587578190505b6200059f620005968562000434565b83018262000531565b50505b505050565b5f82821c905092915050565b5f620005c45f1984600802620005a7565b1980831691505092915050565b5f620005de8383620005b3565b9150826002028217905092915050565b620005f982620003b7565b67ffffffffffffffff811115620006155762000614620001d8565b5b620006218254620003ee565b6200062e82828562000557565b5f60209050601f83116001811462000664575f84156200064f578287015190505b6200065b8582620005d1565b865550620006ca565b601f198416620006748662000422565b5f5b828110156200069d5784890151825560018201915060208501945060208101905062000676565b86831015620006bd5784890151620006b9601f891682620005b3565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620006fd82620006d2565b9050919050565b6200070f81620006f1565b82525050565b5f6020820190506200072a5f83018462000704565b92915050565b613cac806200073e5f395ff3fe608060405234801561000f575f80fd5b50600436106101a7575f3560e01c80638da5cb5b116100f7578063dd2015df11610095578063f2fde38b1161006f578063f2fde38b146104c7578063f8d3277d146104e3578063f9f92be4146104ff578063fe575a871461051b576101a7565b8063dd2015df1461045f578063dd62ed3e1461047b578063e09e83e3146104ab576101a7565b8063a48ce321116100d1578063a48ce321146103c7578063a9059cbb146103f7578063ac10386914610427578063b04653dc14610443576101a7565b80638da5cb5b1461035b57806395d89b4114610379578063990c75ed14610397576101a7565b806340c10f1911610164578063537df3b61161013e578063537df3b6146102e95780636e5cbede1461030557806370a0823114610321578063715018a614610351576101a7565b806340c10f191461028157806342966c681461029d5780634bdf79ce146102cd576101a7565b806306fdde03146101ab578063095ea7b3146101c957806318160ddd146101f95780631f33dea91461021757806323b872dd14610233578063313ce56714610263575b5f80fd5b6101b361054b565b6040516101c09190612e98565b60405180910390f35b6101e360048036038101906101de9190612f56565b6105db565b6040516101f09190612fae565b60405180910390f35b6102016105fd565b60405161020e9190612fd6565b60405180910390f35b610231600480360381019061022c9190612f56565b610606565b005b61024d60048036038101906102489190612fef565b610788565b60405161025a9190612fae565b60405180910390f35b61026b610bac565b604051610278919061305a565b60405180910390f35b61029b60048036038101906102969190612f56565b610bb4565b005b6102b760048036038101906102b29190613073565b610ce4565b6040516102c49190612fae565b60405180910390f35b6102e760048036038101906102e29190612f56565b610d43565b005b61030360048036038101906102fe919061309e565b610f3d565b005b61031f600480360381019061031a919061309e565b610fdf565b005b61033b6004803603810190610336919061309e565b6110cb565b6040516103489190612fd6565b60405180910390f35b610359611110565b005b610363611123565b60405161037091906130d8565b60405180910390f35b61038161114b565b60405161038e9190612e98565b60405180910390f35b6103b160048036038101906103ac91906130f1565b6111db565b6040516103be9190612fd6565b60405180910390f35b6103e160048036038101906103dc919061309e565b611260565b6040516103ee9190612fd6565b60405180910390f35b610411600480360381019061040c9190612f56565b6112a6565b60405161041e9190612fae565b60405180910390f35b610441600480360381019061043c919061326f565b6116c8565b005b61045d60048036038101906104589190613389565b611a0f565b005b6104796004803603810190610474919061309e565b611d7d565b005b610495600480360381019061049091906130f1565b611e6b565b6040516104a29190612fd6565b60405180910390f35b6104c560048036038101906104c09190612fef565b611eed565b005b6104e160048036038101906104dc919061309e565b6121ba565b005b6104fd60048036038101906104f891906130f1565b61223e565b005b6105196004803603810190610514919061309e565b6124fe565b005b6105356004803603810190610530919061309e565b6125a1565b6040516105429190612fae565b60405180910390f35b60606003805461055a9061343e565b80601f01602080910402602001604051908101604052809291908181526020018280546105869061343e565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b5050505050905090565b5f806105e56125f3565b90506105f28185856125fa565b600191505092915050565b5f600254905090565b61060e61260c565b5f8111610650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610647906134b8565b60405180910390fd5b610659826110cb565b8160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106a29190613503565b11156106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106da90613580565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461072f9190613503565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f7bb7882a07e09ff504371e16d2555086aff99b75beeb5e8075dcc8d709bcaa1f8260405161077c9190612fd6565b60405180910390a25050565b5f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080a906135e8565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089490613650565b60405180910390fd5b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff1615610b055760065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac906136b8565b60405180910390fd5b8160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6a90613720565b60405180910390fd5b8160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610afd919061373e565b925050819055505b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b4d866110cb565b610b57919061373e565b1015610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f906137e1565b60405180910390fd5b610ba3848484612693565b90509392505050565b5f6006905090565b610bbc61260c565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90613849565b60405180910390fd5b5f8111610c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f906134b8565b60405180910390fd5b610c9282826126c1565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688582604051610cd89190612fd6565b60405180910390a25050565b5f81610cef336110cb565b1015610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d27906138b1565b60405180910390fd5b610d3a3383612740565b60019050919050565b610d4b61260c565b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290613919565b60405180910390fd5b5f8111610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906134b8565b60405180910390fd5b5f8160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e57919061373e565b1015610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f906139a7565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610ee4919061373e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f5dd0f10c7a58451175357aa97958f987a40249ad4e586020cc512b5fcc221c2f82604051610f319190612fd6565b60405180910390a25050565b610f4561260c565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f2b6bf71b58b3583add364b3d9060ebf8019650f65f5be35f5464b9cb3e4ba2d460405160405180910390a250565b610fe761260c565b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff16611072576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106990613a0f565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff02191690831515021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61111861260c565b6111215f6127bf565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461115a9061343e565b80601f01602080910402602001604051908101604052809291908181526020018280546111869061343e565b80156111d15780601f106111a8576101008083540402835291602001916111d1565b820191905f5260205f20905b8154815290600101906020018083116111b457829003601f168201915b5050505050905090565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611328906135e8565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b290613650565b60405180910390fd5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff16156116235760065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca906136b8565b60405180910390fd5b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890613720565b60405180910390fd5b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161b919061373e565b925050819055505b8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461166b336110cb565b611675919061373e565b10156116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad906137e1565b60405180910390fd5b6116c08383612882565b905092915050565b6116d061260c565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff1661175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613a77565b60405180910390fd5b5f5b8151811015611a0a5760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8383815181106117ba576117b9613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e90613b0c565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f83838151811061189b5761189a613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f83838151811061193f5761193e613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905581818151811061199657611995613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fe0fcf303ba3014f7bddb92283585b57ae29a68f05ceb43d0a0c1b92ad80c613c60405160405180910390a38080611a0290613b2a565b91505061175d565b505050565b611a1761260c565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff16611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9990613a77565b60405180910390fd5b5f5b8251811015611d775760065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f848381518110611b0157611b00613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690613bbb565b60405180910390fd5b600160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f858481518110611be557611be4613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550818181518110611c4f57611c4e613a95565b5b602002602001015160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f858481518110611cab57611caa613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550828181518110611d0357611d02613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f67385d0e3f500ff9deddc1292262190d227a7c30ebc71bdf4362662f6493f6ec60405160405180910390a38080611d6f90613b2a565b915050611aa4565b50505050565b611d8561260c565b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff1615611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0890613c23565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff02191690831515021790555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ef561260c565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff16611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790613a77565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203f90613bbb565b60405180910390fd5b600160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f67385d0e3f500ff9deddc1292262190d227a7c30ebc71bdf4362662f6493f6ec60405160405180910390a3505050565b6121c261260c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612232575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161222991906130d8565b60405180910390fd5b61223b816127bf565b50565b61224661260c565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff166122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c890613a77565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f90613b0c565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905560065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90558073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fe0fcf303ba3014f7bddb92283585b57ae29a68f05ceb43d0a0c1b92ad80c613c60405160405180910390a35050565b61250661260c565b600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a250565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b61260783838360016128a4565b505050565b6126146125f3565b73ffffffffffffffffffffffffffffffffffffffff16612632611123565b73ffffffffffffffffffffffffffffffffffffffff1614612691576126556125f3565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161268891906130d8565b60405180910390fd5b565b5f8061269d6125f3565b90506126aa858285612a73565b6126b5858585612b05565b60019150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612731575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161272891906130d8565b60405180910390fd5b61273c5f8383612bf5565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127b0575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016127a791906130d8565b60405180910390fd5b6127bb825f83612bf5565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8061288c6125f3565b9050612899818585612b05565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612914575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161290b91906130d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612984575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161297b91906130d8565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612a6d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612a649190612fd6565b60405180910390a35b50505050565b5f612a7e8484611e6b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612aff5781811015612af0578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401612ae793929190613c41565b60405180910390fd5b612afe84848484035f6128a4565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b75575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401612b6c91906130d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612be5575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401612bdc91906130d8565b60405180910390fd5b612bf0838383612bf5565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c45578060025f828254612c399190613503565b92505081905550612d13565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612cce578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612cc593929190613c41565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d5a578060025f8282540392505081905550612da4565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e019190612fd6565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e45578082015181840152602081019050612e2a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e6a82612e0e565b612e748185612e18565b9350612e84818560208601612e28565b612e8d81612e50565b840191505092915050565b5f6020820190508181035f830152612eb08184612e60565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ef282612ec9565b9050919050565b612f0281612ee8565b8114612f0c575f80fd5b50565b5f81359050612f1d81612ef9565b92915050565b5f819050919050565b612f3581612f23565b8114612f3f575f80fd5b50565b5f81359050612f5081612f2c565b92915050565b5f8060408385031215612f6c57612f6b612ec1565b5b5f612f7985828601612f0f565b9250506020612f8a85828601612f42565b9150509250929050565b5f8115159050919050565b612fa881612f94565b82525050565b5f602082019050612fc15f830184612f9f565b92915050565b612fd081612f23565b82525050565b5f602082019050612fe95f830184612fc7565b92915050565b5f805f6060848603121561300657613005612ec1565b5b5f61301386828701612f0f565b935050602061302486828701612f0f565b925050604061303586828701612f42565b9150509250925092565b5f60ff82169050919050565b6130548161303f565b82525050565b5f60208201905061306d5f83018461304b565b92915050565b5f6020828403121561308857613087612ec1565b5b5f61309584828501612f42565b91505092915050565b5f602082840312156130b3576130b2612ec1565b5b5f6130c084828501612f0f565b91505092915050565b6130d281612ee8565b82525050565b5f6020820190506130eb5f8301846130c9565b92915050565b5f806040838503121561310757613106612ec1565b5b5f61311485828601612f0f565b925050602061312585828601612f0f565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61316982612e50565b810181811067ffffffffffffffff8211171561318857613187613133565b5b80604052505050565b5f61319a612eb8565b90506131a68282613160565b919050565b5f67ffffffffffffffff8211156131c5576131c4613133565b5b602082029050602081019050919050565b5f80fd5b5f6131ec6131e7846131ab565b613191565b9050808382526020820190506020840283018581111561320f5761320e6131d6565b5b835b8181101561323857806132248882612f0f565b845260208401935050602081019050613211565b5050509392505050565b5f82601f8301126132565761325561312f565b5b81356132668482602086016131da565b91505092915050565b5f806040838503121561328557613284612ec1565b5b5f61329285828601612f0f565b925050602083013567ffffffffffffffff8111156132b3576132b2612ec5565b5b6132bf85828601613242565b9150509250929050565b5f67ffffffffffffffff8211156132e3576132e2613133565b5b602082029050602081019050919050565b5f613306613301846132c9565b613191565b90508083825260208201905060208402830185811115613329576133286131d6565b5b835b81811015613352578061333e8882612f42565b84526020840193505060208101905061332b565b5050509392505050565b5f82601f8301126133705761336f61312f565b5b81356133808482602086016132f4565b91505092915050565b5f805f606084860312156133a05761339f612ec1565b5b5f6133ad86828701612f0f565b935050602084013567ffffffffffffffff8111156133ce576133cd612ec5565b5b6133da86828701613242565b925050604084013567ffffffffffffffff8111156133fb576133fa612ec5565b5b6134078682870161335c565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061345557607f821691505b60208210810361346857613467613411565b5b50919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f6134a2602083612e18565b91506134ad8261346e565b602082019050919050565b5f6020820190508181035f8301526134cf81613496565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61350d82612f23565b915061351883612f23565b92508282019050808211156135305761352f6134d6565b5b92915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f61356a601483612e18565b915061357582613536565b602082019050919050565b5f6020820190508181035f8301526135978161355e565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f6135d2601583612e18565b91506135dd8261359e565b602082019050919050565b5f6020820190508181035f8301526135ff816135c6565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f61363a601883612e18565b915061364582613606565b602082019050919050565b5f6020820190508181035f8301526136678161362e565b9050919050565b7f526563697069656e74206973206e6f742077686974656c6973746564000000005f82015250565b5f6136a2601c83612e18565b91506136ad8261366e565b602082019050919050565b5f6020820190508181035f8301526136cf81613696565b9050919050565b7f496e73756666696369656e74207472616e7366657261626c6520616d6f756e745f82015250565b5f61370a602083612e18565b9150613715826136d6565b602082019050919050565b5f6020820190508181035f830152613737816136fe565b9050919050565b5f61374882612f23565b915061375383612f23565b925082820390508181111561376b5761376a6134d6565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320756e626c6f636b655f8201527f642062616c616e63650000000000000000000000000000000000000000000000602082015250565b5f6137cb602983612e18565b91506137d682613771565b604082019050919050565b5f6020820190508181035f8301526137f8816137bf565b9050919050565b7f546f20697320626c61636b6c69737465640000000000000000000000000000005f82015250565b5f613833601183612e18565b915061383e826137ff565b602082019050919050565b5f6020820190508181035f83015261386081613827565b9050919050565b7f596f7520646f6e74206f776e20656e6f75676820746f6b656e730000000000005f82015250565b5f61389b601a83612e18565b91506138a682613867565b602082019050919050565b5f6020820190508181035f8301526138c88161388f565b9050919050565b7f496e73756666696369656e7420626c6f636b65642062616c616e6365000000005f82015250565b5f613903601c83612e18565b915061390e826138cf565b602082019050919050565b5f6020820190508181035f830152613930816138f7565b9050919050565b7f426c6f636b65642062616c616e63652063616e6e6f74206265206e65676174695f8201527f7665000000000000000000000000000000000000000000000000000000000000602082015250565b5f613991602283612e18565b915061399c82613937565b604082019050919050565b5f6020820190508181035f8301526139be81613985565b9050919050565b7f57686974656c69737420697320616c72656164792064697361626c65640000005f82015250565b5f6139f9601d83612e18565b9150613a04826139c5565b602082019050919050565b5f6020820190508181035f830152613a26816139ed565b9050919050565b7f57686974656c697374206973206e6f7420656e61626c656400000000000000005f82015250565b5f613a61601883612e18565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f41646472657373206973206e6f742077686974656c69737465640000000000005f82015250565b5f613af6601a83612e18565b9150613b0182613ac2565b602082019050919050565b5f6020820190508181035f830152613b2381613aea565b9050919050565b5f613b3482612f23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b6657613b656134d6565b5b600182019050919050565b7f4164647265737320697320616c72656164792077686974656c697374656400005f82015250565b5f613ba5601e83612e18565b9150613bb082613b71565b602082019050919050565b5f6020820190508181035f830152613bd281613b99565b9050919050565b7f57686974656c69737420697320616c726561647920656e61626c6564000000005f82015250565b5f613c0d601c83612e18565b9150613c1882613bd9565b602082019050919050565b5f6020820190508181035f830152613c3a81613c01565b9050919050565b5f606082019050613c545f8301866130c9565b613c616020830185612fc7565b613c6e6040830184612fc7565b94935050505056fea26469706673582212206305c3ad63a236a3306a5bd35f1dcedaf7b0b05ed26987353cbfc9f03cbef71b64736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000d50434f204d6574617665727365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003504d450000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106101a7575f3560e01c80638da5cb5b116100f7578063dd2015df11610095578063f2fde38b1161006f578063f2fde38b146104c7578063f8d3277d146104e3578063f9f92be4146104ff578063fe575a871461051b576101a7565b8063dd2015df1461045f578063dd62ed3e1461047b578063e09e83e3146104ab576101a7565b8063a48ce321116100d1578063a48ce321146103c7578063a9059cbb146103f7578063ac10386914610427578063b04653dc14610443576101a7565b80638da5cb5b1461035b57806395d89b4114610379578063990c75ed14610397576101a7565b806340c10f1911610164578063537df3b61161013e578063537df3b6146102e95780636e5cbede1461030557806370a0823114610321578063715018a614610351576101a7565b806340c10f191461028157806342966c681461029d5780634bdf79ce146102cd576101a7565b806306fdde03146101ab578063095ea7b3146101c957806318160ddd146101f95780631f33dea91461021757806323b872dd14610233578063313ce56714610263575b5f80fd5b6101b361054b565b6040516101c09190612e98565b60405180910390f35b6101e360048036038101906101de9190612f56565b6105db565b6040516101f09190612fae565b60405180910390f35b6102016105fd565b60405161020e9190612fd6565b60405180910390f35b610231600480360381019061022c9190612f56565b610606565b005b61024d60048036038101906102489190612fef565b610788565b60405161025a9190612fae565b60405180910390f35b61026b610bac565b604051610278919061305a565b60405180910390f35b61029b60048036038101906102969190612f56565b610bb4565b005b6102b760048036038101906102b29190613073565b610ce4565b6040516102c49190612fae565b60405180910390f35b6102e760048036038101906102e29190612f56565b610d43565b005b61030360048036038101906102fe919061309e565b610f3d565b005b61031f600480360381019061031a919061309e565b610fdf565b005b61033b6004803603810190610336919061309e565b6110cb565b6040516103489190612fd6565b60405180910390f35b610359611110565b005b610363611123565b60405161037091906130d8565b60405180910390f35b61038161114b565b60405161038e9190612e98565b60405180910390f35b6103b160048036038101906103ac91906130f1565b6111db565b6040516103be9190612fd6565b60405180910390f35b6103e160048036038101906103dc919061309e565b611260565b6040516103ee9190612fd6565b60405180910390f35b610411600480360381019061040c9190612f56565b6112a6565b60405161041e9190612fae565b60405180910390f35b610441600480360381019061043c919061326f565b6116c8565b005b61045d60048036038101906104589190613389565b611a0f565b005b6104796004803603810190610474919061309e565b611d7d565b005b610495600480360381019061049091906130f1565b611e6b565b6040516104a29190612fd6565b60405180910390f35b6104c560048036038101906104c09190612fef565b611eed565b005b6104e160048036038101906104dc919061309e565b6121ba565b005b6104fd60048036038101906104f891906130f1565b61223e565b005b6105196004803603810190610514919061309e565b6124fe565b005b6105356004803603810190610530919061309e565b6125a1565b6040516105429190612fae565b60405180910390f35b60606003805461055a9061343e565b80601f01602080910402602001604051908101604052809291908181526020018280546105869061343e565b80156105d15780601f106105a8576101008083540402835291602001916105d1565b820191905f5260205f20905b8154815290600101906020018083116105b457829003601f168201915b5050505050905090565b5f806105e56125f3565b90506105f28185856125fa565b600191505092915050565b5f600254905090565b61060e61260c565b5f8111610650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610647906134b8565b60405180910390fd5b610659826110cb565b8160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106a29190613503565b11156106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106da90613580565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461072f9190613503565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f7bb7882a07e09ff504371e16d2555086aff99b75beeb5e8075dcc8d709bcaa1f8260405161077c9190612fd6565b60405180910390a25050565b5f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080a906135e8565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089490613650565b60405180910390fd5b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff1615610b055760065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac906136b8565b60405180910390fd5b8160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6a90613720565b60405180910390fd5b8160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610afd919061373e565b925050819055505b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b4d866110cb565b610b57919061373e565b1015610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f906137e1565b60405180910390fd5b610ba3848484612693565b90509392505050565b5f6006905090565b610bbc61260c565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90613849565b60405180910390fd5b5f8111610c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f906134b8565b60405180910390fd5b610c9282826126c1565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688582604051610cd89190612fd6565b60405180910390a25050565b5f81610cef336110cb565b1015610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d27906138b1565b60405180910390fd5b610d3a3383612740565b60019050919050565b610d4b61260c565b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290613919565b60405180910390fd5b5f8111610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906134b8565b60405180910390fd5b5f8160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e57919061373e565b1015610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f906139a7565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610ee4919061373e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f5dd0f10c7a58451175357aa97958f987a40249ad4e586020cc512b5fcc221c2f82604051610f319190612fd6565b60405180910390a25050565b610f4561260c565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f2b6bf71b58b3583add364b3d9060ebf8019650f65f5be35f5464b9cb3e4ba2d460405160405180910390a250565b610fe761260c565b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff16611072576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106990613a0f565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff02191690831515021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61111861260c565b6111215f6127bf565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461115a9061343e565b80601f01602080910402602001604051908101604052809291908181526020018280546111869061343e565b80156111d15780601f106111a8576101008083540402835291602001916111d1565b820191905f5260205f20905b8154815290600101906020018083116111b457829003601f168201915b5050505050905090565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611328906135e8565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b290613650565b60405180910390fd5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff16156116235760065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca906136b8565b60405180910390fd5b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890613720565b60405180910390fd5b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161b919061373e565b925050819055505b8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461166b336110cb565b611675919061373e565b10156116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad906137e1565b60405180910390fd5b6116c08383612882565b905092915050565b6116d061260c565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff1661175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290613a77565b60405180910390fd5b5f5b8151811015611a0a5760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8383815181106117ba576117b9613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e90613b0c565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f83838151811061189b5761189a613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f83838151811061193f5761193e613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905581818151811061199657611995613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fe0fcf303ba3014f7bddb92283585b57ae29a68f05ceb43d0a0c1b92ad80c613c60405160405180910390a38080611a0290613b2a565b91505061175d565b505050565b611a1761260c565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff16611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9990613a77565b60405180910390fd5b5f5b8251811015611d775760065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f848381518110611b0157611b00613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690613bbb565b60405180910390fd5b600160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f858481518110611be557611be4613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550818181518110611c4f57611c4e613a95565b5b602002602001015160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f858481518110611cab57611caa613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550828181518110611d0357611d02613a95565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f67385d0e3f500ff9deddc1292262190d227a7c30ebc71bdf4362662f6493f6ec60405160405180910390a38080611d6f90613b2a565b915050611aa4565b50505050565b611d8561260c565b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff1615611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0890613c23565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff02191690831515021790555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ef561260c565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff16611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790613a77565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612048576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203f90613bbb565b60405180910390fd5b600160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f67385d0e3f500ff9deddc1292262190d227a7c30ebc71bdf4362662f6493f6ec60405160405180910390a3505050565b6121c261260c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612232575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161222991906130d8565b60405180910390fd5b61223b816127bf565b50565b61224661260c565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff166122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c890613a77565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f90613b0c565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905560065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90558073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fe0fcf303ba3014f7bddb92283585b57ae29a68f05ceb43d0a0c1b92ad80c613c60405160405180910390a35050565b61250661260c565b600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a250565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b61260783838360016128a4565b505050565b6126146125f3565b73ffffffffffffffffffffffffffffffffffffffff16612632611123565b73ffffffffffffffffffffffffffffffffffffffff1614612691576126556125f3565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161268891906130d8565b60405180910390fd5b565b5f8061269d6125f3565b90506126aa858285612a73565b6126b5858585612b05565b60019150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612731575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161272891906130d8565b60405180910390fd5b61273c5f8383612bf5565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127b0575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016127a791906130d8565b60405180910390fd5b6127bb825f83612bf5565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8061288c6125f3565b9050612899818585612b05565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612914575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161290b91906130d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612984575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161297b91906130d8565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612a6d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612a649190612fd6565b60405180910390a35b50505050565b5f612a7e8484611e6b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612aff5781811015612af0578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401612ae793929190613c41565b60405180910390fd5b612afe84848484035f6128a4565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b75575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401612b6c91906130d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612be5575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401612bdc91906130d8565b60405180910390fd5b612bf0838383612bf5565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c45578060025f828254612c399190613503565b92505081905550612d13565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612cce578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612cc593929190613c41565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d5a578060025f8282540392505081905550612da4565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e019190612fd6565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e45578082015181840152602081019050612e2a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e6a82612e0e565b612e748185612e18565b9350612e84818560208601612e28565b612e8d81612e50565b840191505092915050565b5f6020820190508181035f830152612eb08184612e60565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ef282612ec9565b9050919050565b612f0281612ee8565b8114612f0c575f80fd5b50565b5f81359050612f1d81612ef9565b92915050565b5f819050919050565b612f3581612f23565b8114612f3f575f80fd5b50565b5f81359050612f5081612f2c565b92915050565b5f8060408385031215612f6c57612f6b612ec1565b5b5f612f7985828601612f0f565b9250506020612f8a85828601612f42565b9150509250929050565b5f8115159050919050565b612fa881612f94565b82525050565b5f602082019050612fc15f830184612f9f565b92915050565b612fd081612f23565b82525050565b5f602082019050612fe95f830184612fc7565b92915050565b5f805f6060848603121561300657613005612ec1565b5b5f61301386828701612f0f565b935050602061302486828701612f0f565b925050604061303586828701612f42565b9150509250925092565b5f60ff82169050919050565b6130548161303f565b82525050565b5f60208201905061306d5f83018461304b565b92915050565b5f6020828403121561308857613087612ec1565b5b5f61309584828501612f42565b91505092915050565b5f602082840312156130b3576130b2612ec1565b5b5f6130c084828501612f0f565b91505092915050565b6130d281612ee8565b82525050565b5f6020820190506130eb5f8301846130c9565b92915050565b5f806040838503121561310757613106612ec1565b5b5f61311485828601612f0f565b925050602061312585828601612f0f565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61316982612e50565b810181811067ffffffffffffffff8211171561318857613187613133565b5b80604052505050565b5f61319a612eb8565b90506131a68282613160565b919050565b5f67ffffffffffffffff8211156131c5576131c4613133565b5b602082029050602081019050919050565b5f80fd5b5f6131ec6131e7846131ab565b613191565b9050808382526020820190506020840283018581111561320f5761320e6131d6565b5b835b8181101561323857806132248882612f0f565b845260208401935050602081019050613211565b5050509392505050565b5f82601f8301126132565761325561312f565b5b81356132668482602086016131da565b91505092915050565b5f806040838503121561328557613284612ec1565b5b5f61329285828601612f0f565b925050602083013567ffffffffffffffff8111156132b3576132b2612ec5565b5b6132bf85828601613242565b9150509250929050565b5f67ffffffffffffffff8211156132e3576132e2613133565b5b602082029050602081019050919050565b5f613306613301846132c9565b613191565b90508083825260208201905060208402830185811115613329576133286131d6565b5b835b81811015613352578061333e8882612f42565b84526020840193505060208101905061332b565b5050509392505050565b5f82601f8301126133705761336f61312f565b5b81356133808482602086016132f4565b91505092915050565b5f805f606084860312156133a05761339f612ec1565b5b5f6133ad86828701612f0f565b935050602084013567ffffffffffffffff8111156133ce576133cd612ec5565b5b6133da86828701613242565b925050604084013567ffffffffffffffff8111156133fb576133fa612ec5565b5b6134078682870161335c565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061345557607f821691505b60208210810361346857613467613411565b5b50919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f6134a2602083612e18565b91506134ad8261346e565b602082019050919050565b5f6020820190508181035f8301526134cf81613496565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61350d82612f23565b915061351883612f23565b92508282019050808211156135305761352f6134d6565b5b92915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f61356a601483612e18565b915061357582613536565b602082019050919050565b5f6020820190508181035f8301526135978161355e565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f6135d2601583612e18565b91506135dd8261359e565b602082019050919050565b5f6020820190508181035f8301526135ff816135c6565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f61363a601883612e18565b915061364582613606565b602082019050919050565b5f6020820190508181035f8301526136678161362e565b9050919050565b7f526563697069656e74206973206e6f742077686974656c6973746564000000005f82015250565b5f6136a2601c83612e18565b91506136ad8261366e565b602082019050919050565b5f6020820190508181035f8301526136cf81613696565b9050919050565b7f496e73756666696369656e74207472616e7366657261626c6520616d6f756e745f82015250565b5f61370a602083612e18565b9150613715826136d6565b602082019050919050565b5f6020820190508181035f830152613737816136fe565b9050919050565b5f61374882612f23565b915061375383612f23565b925082820390508181111561376b5761376a6134d6565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320756e626c6f636b655f8201527f642062616c616e63650000000000000000000000000000000000000000000000602082015250565b5f6137cb602983612e18565b91506137d682613771565b604082019050919050565b5f6020820190508181035f8301526137f8816137bf565b9050919050565b7f546f20697320626c61636b6c69737465640000000000000000000000000000005f82015250565b5f613833601183612e18565b915061383e826137ff565b602082019050919050565b5f6020820190508181035f83015261386081613827565b9050919050565b7f596f7520646f6e74206f776e20656e6f75676820746f6b656e730000000000005f82015250565b5f61389b601a83612e18565b91506138a682613867565b602082019050919050565b5f6020820190508181035f8301526138c88161388f565b9050919050565b7f496e73756666696369656e7420626c6f636b65642062616c616e6365000000005f82015250565b5f613903601c83612e18565b915061390e826138cf565b602082019050919050565b5f6020820190508181035f830152613930816138f7565b9050919050565b7f426c6f636b65642062616c616e63652063616e6e6f74206265206e65676174695f8201527f7665000000000000000000000000000000000000000000000000000000000000602082015250565b5f613991602283612e18565b915061399c82613937565b604082019050919050565b5f6020820190508181035f8301526139be81613985565b9050919050565b7f57686974656c69737420697320616c72656164792064697361626c65640000005f82015250565b5f6139f9601d83612e18565b9150613a04826139c5565b602082019050919050565b5f6020820190508181035f830152613a26816139ed565b9050919050565b7f57686974656c697374206973206e6f7420656e61626c656400000000000000005f82015250565b5f613a61601883612e18565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f41646472657373206973206e6f742077686974656c69737465640000000000005f82015250565b5f613af6601a83612e18565b9150613b0182613ac2565b602082019050919050565b5f6020820190508181035f830152613b2381613aea565b9050919050565b5f613b3482612f23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b6657613b656134d6565b5b600182019050919050565b7f4164647265737320697320616c72656164792077686974656c697374656400005f82015250565b5f613ba5601e83612e18565b9150613bb082613b71565b602082019050919050565b5f6020820190508181035f830152613bd281613b99565b9050919050565b7f57686974656c69737420697320616c726561647920656e61626c6564000000005f82015250565b5f613c0d601c83612e18565b9150613c1882613bd9565b602082019050919050565b5f6020820190508181035f830152613c3a81613c01565b9050919050565b5f606082019050613c545f8301866130c9565b613c616020830185612fc7565b613c6e6040830184612fc7565b94935050505056fea26469706673582212206305c3ad63a236a3306a5bd35f1dcedaf7b0b05ed26987353cbfc9f03cbef71b64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000d50434f204d6574617665727365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003504d450000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): PCO Metaverse
Arg [1] : symbol_ (string): PME
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [3] : 50434f204d657461766572736500000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 504d450000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
26014:9262:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16478:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18771:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17580:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32856:341;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28914:794;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27778:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34620:251;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35072:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33269:429;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33974:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32575:211;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17742:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10091:103;;;:::i;:::-;;9416:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16688:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34879:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34400:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27991:790;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31614:611;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30345:625;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32294:211;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18310:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29781:483;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10349:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31048:480;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33760:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34206:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16478:91;16523:13;16556:5;16549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16478:91;:::o;18771:190::-;18844:4;18861:13;18877:12;:10;:12::i;:::-;18861:28;;18900:31;18909:5;18916:7;18925:5;18900:8;:31::i;:::-;18949:4;18942:11;;;18771:190;;;;:::o;17580:99::-;17632:7;17659:12;;17652:19;;17580:99;:::o;32856:341::-;9302:13;:11;:13::i;:::-;32958:1:::1;32949:6;:10;32941:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;33053:18;33063:7;33053:9;:18::i;:::-;33043:6;33015:16;:25;33032:7;33015:25;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;:56;;33007:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;33136:6;33107:16;:25;33124:7;33107:25;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;33173:7;33158:31;;;33182:6;33158:31;;;;;;:::i;:::-;;;;;;;;32856:341:::0;;:::o;28914:794::-;29012:4;29038:10;:18;29049:6;29038:18;;;;;;;;;;;;;;;;;;;;;;;;;29037:19;29029:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;29102:10;:21;29113:9;29102:21;;;;;;;;;;;;;;;;;;;;;;;;;29101:22;29093:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;29167:13;:21;29181:6;29167:21;;;;;;;;;;;;;;;:38;;;;;;;;;;;;29163:356;;;29229:13;:21;29243:6;29229:21;;;;;;;;;;;;;;;:31;;:42;29261:9;29229:42;;;;;;;;;;;;;;;;;;;;;;;;;29221:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;29385:6;29327:13;:21;29341:6;29327:21;;;;;;;;;;;;;;;:43;;:54;29371:9;29327:54;;;;;;;;;;;;;;;;:64;;29319:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;29501:6;29443:13;:21;29457:6;29443:21;;;;;;;;;;;;;;;:43;;:54;29487:9;29443:54;;;;;;;;;;;;;;;;:64;;;;;;;:::i;:::-;;;;;;;;29163:356;29585:6;29557:16;:24;29574:6;29557:24;;;;;;;;;;;;;;;;29537:17;29547:6;29537:9;:17::i;:::-;:44;;;;:::i;:::-;:54;;29529:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;29655:45;29674:6;29682:9;29693:6;29655:18;:45::i;:::-;29648:52;;28914:794;;;;;:::o;27778:84::-;27828:5;27853:1;27846:8;;27778:84;:::o;34620:251::-;9302:13;:11;:13::i;:::-;34701:10:::1;:14;34712:2;34701:14;;;;;;;;;;;;;;;;;;;;;;;;;34700:15;34692:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;34765:1;34756:6;:10;34748:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;34814:17;34820:2;34824:6;34814:5;:17::i;:::-;34852:2;34847:16;;;34856:6;34847:16;;;;;;:::i;:::-;;;;;;;;34620:251:::0;;:::o;35072:201::-;35119:4;35162:6;35138:21;35148:10;35138:9;:21::i;:::-;:30;35135:72;;;35170:37;;;;;;;;;;:::i;:::-;;;;;;;;35135:72;35218:25;35224:10;35236:6;35218:5;:25::i;:::-;35261:4;35254:11;;35072:201;;;:::o;33269:429::-;9302:13;:11;:13::i;:::-;33393:6:::1;33364:16;:25;33381:7;33364:25;;;;;;;;;;;;;;;;:35;;33356:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;33460:1;33451:6;:10;33443:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;33555:1;33545:6;33517:16;:25;33534:7;33517:25;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;:39;;33509:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;33635:6;33606:16;:25;33623:7;33606:25;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;33674:7;33657:33;;;33683:6;33657:33;;;;;;:::i;:::-;;;;;;;;33269:429:::0;;:::o;33974:156::-;9302:13;:11;:13::i;:::-;34072:5:::1;34050:10;:19;34061:7;34050:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;34114:7;34093:29;;;;;;;;;;;;33974:156:::0;:::o;32575:211::-;9302:13;:11;:13::i;:::-;32653::::1;:19;32667:4;32653:19;;;;;;;;;;;;;;;:36;;;;;;;;;;;;32645:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;32773:5;32734:13;:19;32748:4;32734:19;;;;;;;;;;;;;;;:36;;;:44;;;;;;;;;;;;;;;;;;32575:211:::0;:::o;17742:118::-;17807:7;17834:9;:18;17844:7;17834:18;;;;;;;;;;;;;;;;17827:25;;17742:118;;;:::o;10091:103::-;9302:13;:11;:13::i;:::-;10156:30:::1;10183:1;10156:18;:30::i;:::-;10091:103::o:0;9416:87::-;9462:7;9489:6;;;;;;;;;;;9482:13;;9416:87;:::o;16688:95::-;16735:13;16768:7;16761:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16688:95;:::o;34879:185::-;34971:7;34998:13;:19;35012:4;34998:19;;;;;;;;;;;;;;;:41;;:58;35040:15;34998:58;;;;;;;;;;;;;;;;34991:65;;34879:185;;;;:::o;34400:127::-;34467:7;34494:16;:25;34511:7;34494:25;;;;;;;;;;;;;;;;34487:32;;34400:127;;;:::o;27991:790::-;28069:4;28095:10;:22;28106:10;28095:22;;;;;;;;;;;;;;;;;;;;;;;;;28094:23;28086:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;28163:10;:21;28174:9;28163:21;;;;;;;;;;;;;;;;;;;;;;;;;28162:22;28154:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;28228:13;:25;28242:10;28228:25;;;;;;;;;;;;;;;:42;;;;;;;;;;;;28224:372;;;28294:13;:25;28308:10;28294:25;;;;;;;;;;;;;;;:35;;:46;28330:9;28294:46;;;;;;;;;;;;;;;;;;;;;;;;;28286:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;28458:6;28396:13;:25;28410:10;28396:25;;;;;;;;;;;;;;;:47;;:58;28444:9;28396:58;;;;;;;;;;;;;;;;:68;;28388:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;28578:6;28516:13;:25;28530:10;28516:25;;;;;;;;;;;;;;;:47;;:58;28564:9;28516:58;;;;;;;;;;;;;;;;:68;;;;;;;:::i;:::-;;;;;;;;28224:372;28670:6;28638:16;:28;28655:10;28638:28;;;;;;;;;;;;;;;;28614:21;28624:10;28614:9;:21::i;:::-;:52;;;;:::i;:::-;:62;;28606:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;28740:33;28755:9;28766:6;28740:14;:33::i;:::-;28733:40;;27991:790;;;;:::o;31614:611::-;9302:13;:11;:13::i;:::-;31738::::1;:19;31752:4;31738:19;;;;;;;;;;;;;;;:36;;;;;;;;;;;;31730:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31819:9;31814:404;31838:19;:26;31834:1;:30;31814:404;;;31894:13;:19;31908:4;31894:19;;;;;;;;;;;;;;;:29;;:53;31924:19;31944:1;31924:22;;;;;;;;:::i;:::-;;;;;;;;31894:53;;;;;;;;;;;;;;;;;;;;;;;;;31886:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;32000:13;:19;32014:4;32000:19;;;;;;;;;;;;;;;:29;;:53;32030:19;32050:1;32030:22;;;;;;;;:::i;:::-;;;;;;;;32000:53;;;;;;;;;;;;;;;;31993:60;;;;;;;;;;;32075:13;:19;32089:4;32075:19;;;;;;;;;;;;;;;:41;;:65;32117:19;32137:1;32117:22;;;;;;;;:::i;:::-;;;;;;;;32075:65;;;;;;;;;;;;;;;32068:72;;;32183:19;32203:1;32183:22;;;;;;;;:::i;:::-;;;;;;;;32160:46;;32177:4;32160:46;;;;;;;;;;;;31866:3;;;;;:::i;:::-;;;;31814:404;;;;31614:611:::0;;:::o;30345:625::-;9302:13;:11;:13::i;:::-;30487::::1;:19;30501:4;30487:19;;;;;;;;;;;;;;;:36;;;;;;;;;;;;30479:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30568:9;30563:400;30587:16;:23;30583:1;:27;30563:400;;;30642:13;:19;30656:4;30642:19;;;;;;;;;;;;;;;:29;;:50;30672:16;30689:1;30672:19;;;;;;;;:::i;:::-;;;;;;;;30642:50;;;;;;;;;;;;;;;;;;;;;;;;;30640:53;30632:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;30796:4;30743:13;:19;30757:4;30743:19;;;;;;;;;;;;;;;:29;;:50;30773:16;30790:1;30773:19;;;;;;;;:::i;:::-;;;;;;;;30743:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;30880:7;30888:1;30880:10;;;;;;;;:::i;:::-;;;;;;;;30815:13;:19;30829:4;30815:19;;;;;;;;;;;;;;;:41;;:62;30857:16;30874:1;30857:19;;;;;;;;:::i;:::-;;;;;;;;30815:62;;;;;;;;;;;;;;;:75;;;;30931:16;30948:1;30931:19;;;;;;;;:::i;:::-;;;;;;;;30910:41;;30925:4;30910:41;;;;;;;;;;;;30612:3;;;;;:::i;:::-;;;;30563:400;;;;30345:625:::0;;;:::o;32294:211::-;9302:13;:11;:13::i;:::-;32373::::1;:19;32387:4;32373:19;;;;;;;;;;;;;;;:36;;;;;;;;;;;;32371:39;32363:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;32493:4;32454:13;:19;32468:4;32454:19;;;;;;;;;;;;;;;:36;;;:43;;;;;;;;;;;;;;;;;;32294:211:::0;:::o;18310:142::-;18390:7;18417:11;:18;18429:5;18417:18;;;;;;;;;;;;;;;:27;18436:7;18417:27;;;;;;;;;;;;;;;;18410:34;;18310:142;;;;:::o;29781:483::-;9302:13;:11;:13::i;:::-;29897::::1;:19;29911:4;29897:19;;;;;;;;;;;;;;;:36;;;;;;;;;;;;29889:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29983:13;:19;29997:4;29983:19;;;;;;;;;;;;;;;:29;;:45;30013:14;29983:45;;;;;;;;;;;;;;;;;;;;;;;;;29981:48;29973:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;30123:4;30075:13;:19;30089:4;30075:19;;;;;;;;;;;;;;;:29;;:45;30105:14;30075:45;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;30198:6;30138:13;:19;30152:4;30138:19;;;;;;;;;;;;;;;:41;;:57;30180:14;30138:57;;;;;;;;;;;;;;;:66;;;;30241:14;30220:36;;30235:4;30220:36;;;;;;;;;;;;29781:483:::0;;;:::o;10349:220::-;9302:13;:11;:13::i;:::-;10454:1:::1;10434:22;;:8;:22;;::::0;10430:93:::1;;10508:1;10480:31;;;;;;;;;;;:::i;:::-;;;;;;;;10430:93;10533:28;10552:8;10533:18;:28::i;:::-;10349:220:::0;:::o;31048:480::-;9302:13;:11;:13::i;:::-;31156::::1;:19;31170:4;31156:19;;;;;;;;;;;;;;;:36;;;;;;;;;;;;31148:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31240:13;:19;31254:4;31240:19;;;;;;;;;;;;;;;:29;;:48;31270:17;31240:48;;;;;;;;;;;;;;;;;;;;;;;;;31232:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;31337:13;:19;31351:4;31337:19;;;;;;;;;;;;;;;:29;;:48;31367:17;31337:48;;;;;;;;;;;;;;;;31330:55;;;;;;;;;;;31403:13;:19;31417:4;31403:19;;;;;;;;;;;;;;;:41;;:60;31445:17;31403:60;;;;;;;;;;;;;;;31396:67;;;31502:17;31479:41;;31496:4;31479:41;;;;;;;;;;;;31048:480:::0;;:::o;33760:136::-;9302:13;:11;:13::i;:::-;33848:4:::1;33826:10;:19;33837:7;33826:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;33880:7;33868:20;;;;;;;;;;;;33760:136:::0;:::o;34206:114::-;34269:4;34293:10;:19;34304:7;34293:19;;;;;;;;;;;;;;;;;;;;;;;;;34286:26;;34206:114;;;:::o;7425:98::-;7478:7;7505:10;7498:17;;7425:98;:::o;23598:130::-;23683:37;23692:5;23699:7;23708:5;23715:4;23683:8;:37::i;:::-;23598:130;;;:::o;9581:166::-;9652:12;:10;:12::i;:::-;9641:23;;:7;:5;:7::i;:::-;:23;;;9637:103;;9715:12;:10;:12::i;:::-;9688:40;;;;;;;;;;;:::i;:::-;;;;;;;;9637:103;9581:166::o;19539:249::-;19626:4;19643:15;19661:12;:10;:12::i;:::-;19643:30;;19684:37;19700:4;19706:7;19715:5;19684:15;:37::i;:::-;19732:26;19742:4;19748:2;19752:5;19732:9;:26::i;:::-;19776:4;19769:11;;;19539:249;;;;;:::o;22293:213::-;22383:1;22364:21;;:7;:21;;;22360:93;;22438:1;22409:32;;;;;;;;;;;:::i;:::-;;;;;;;;22360:93;22463:35;22479:1;22483:7;22492:5;22463:7;:35::i;:::-;22293:213;;:::o;22834:211::-;22924:1;22905:21;;:7;:21;;;22901:91;;22977:1;22950:30;;;;;;;;;;;:::i;:::-;;;;;;;;22901:91;23002:35;23010:7;23027:1;23031:5;23002:7;:35::i;:::-;22834:211;;:::o;10729:191::-;10803:16;10822:6;;;;;;;;;;;10803:25;;10848:8;10839:6;;:17;;;;;;;;;;;;;;;;;;10903:8;10872:40;;10893:8;10872:40;;;;;;;;;;;;10792:128;10729:191;:::o;18065:182::-;18134:4;18151:13;18167:12;:10;:12::i;:::-;18151:28;;18190:27;18200:5;18207:2;18211:5;18190:9;:27::i;:::-;18235:4;18228:11;;;18065:182;;;;:::o;24579:443::-;24709:1;24692:19;;:5;:19;;;24688:91;;24764:1;24735:32;;;;;;;;;;;:::i;:::-;;;;;;;;24688:91;24812:1;24793:21;;:7;:21;;;24789:92;;24866:1;24838:31;;;;;;;;;;;:::i;:::-;;;;;;;;24789:92;24921:5;24891:11;:18;24903:5;24891:18;;;;;;;;;;;;;;;:27;24910:7;24891:27;;;;;;;;;;;;;;;:35;;;;24941:9;24937:78;;;24988:7;24972:31;;24981:5;24972:31;;;24997:5;24972:31;;;;;;:::i;:::-;;;;;;;;24937:78;24579:443;;;;:::o;25314:487::-;25414:24;25441:25;25451:5;25458:7;25441:9;:25::i;:::-;25414:52;;25501:17;25481:16;:37;25477:317;;25558:5;25539:16;:24;25535:132;;;25618:7;25627:16;25645:5;25591:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;25535:132;25710:57;25719:5;25726:7;25754:5;25735:16;:24;25761:5;25710:8;:57::i;:::-;25477:317;25403:398;25314:487;;;:::o;20173:308::-;20273:1;20257:18;;:4;:18;;;20253:88;;20326:1;20299:30;;;;;;;;;;;:::i;:::-;;;;;;;;20253:88;20369:1;20355:16;;:2;:16;;;20351:88;;20424:1;20395:32;;;;;;;;;;;:::i;:::-;;;;;;;;20351:88;20449:24;20457:4;20463:2;20467:5;20449:7;:24::i;:::-;20173:308;;;:::o;20805:1135::-;20911:1;20895:18;;:4;:18;;;20891:552;;21049:5;21033:12;;:21;;;;;;;:::i;:::-;;;;;;;;20891:552;;;21087:19;21109:9;:15;21119:4;21109:15;;;;;;;;;;;;;;;;21087:37;;21157:5;21143:11;:19;21139:117;;;21215:4;21221:11;21234:5;21190:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;21139:117;21411:5;21397:11;:19;21379:9;:15;21389:4;21379:15;;;;;;;;;;;;;;;:37;;;;21072:371;20891:552;21473:1;21459:16;;:2;:16;;;21455:435;;21641:5;21625:12;;:21;;;;;;;;;;;21455:435;;;21858:5;21841:9;:13;21851:2;21841:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;21455:435;21922:2;21907:25;;21916:4;21907:25;;;21926:5;21907:25;;;;;;:::i;:::-;;;;;;;;20805:1135;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652: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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:117::-;6464:1;6461;6454:12;6478:180;6526:77;6523:1;6516:88;6623:4;6620:1;6613:15;6647:4;6644:1;6637:15;6664:281;6747:27;6769:4;6747:27;:::i;:::-;6739:6;6735:40;6877:6;6865:10;6862:22;6841:18;6829:10;6826:34;6823:62;6820:88;;;6888:18;;:::i;:::-;6820:88;6928:10;6924:2;6917:22;6707:238;6664:281;;:::o;6951:129::-;6985:6;7012:20;;:::i;:::-;7002:30;;7041:33;7069:4;7061:6;7041:33;:::i;:::-;6951:129;;;:::o;7086:311::-;7163:4;7253:18;7245:6;7242:30;7239:56;;;7275:18;;:::i;:::-;7239:56;7325:4;7317:6;7313:17;7305:25;;7385:4;7379;7375:15;7367:23;;7086:311;;;:::o;7403:117::-;7512:1;7509;7502:12;7543:710;7639:5;7664:81;7680:64;7737:6;7680:64;:::i;:::-;7664:81;:::i;:::-;7655:90;;7765:5;7794:6;7787:5;7780:21;7828:4;7821:5;7817:16;7810:23;;7881:4;7873:6;7869:17;7861:6;7857:30;7910:3;7902:6;7899:15;7896:122;;;7929:79;;:::i;:::-;7896:122;8044:6;8027:220;8061:6;8056:3;8053:15;8027:220;;;8136:3;8165:37;8198:3;8186:10;8165:37;:::i;:::-;8160:3;8153:50;8232:4;8227:3;8223:14;8216:21;;8103:144;8087:4;8082:3;8078:14;8071:21;;8027:220;;;8031:21;7645:608;;7543:710;;;;;:::o;8276:370::-;8347:5;8396:3;8389:4;8381:6;8377:17;8373:27;8363:122;;8404:79;;:::i;:::-;8363:122;8521:6;8508:20;8546:94;8636:3;8628:6;8621:4;8613:6;8609:17;8546:94;:::i;:::-;8537:103;;8353:293;8276:370;;;;:::o;8652:684::-;8745:6;8753;8802:2;8790:9;8781:7;8777:23;8773:32;8770:119;;;8808:79;;:::i;:::-;8770:119;8928:1;8953:53;8998:7;8989:6;8978:9;8974:22;8953:53;:::i;:::-;8943:63;;8899:117;9083:2;9072:9;9068:18;9055:32;9114:18;9106:6;9103:30;9100:117;;;9136:79;;:::i;:::-;9100:117;9241:78;9311:7;9302:6;9291:9;9287:22;9241:78;:::i;:::-;9231:88;;9026:303;8652:684;;;;;:::o;9342:311::-;9419:4;9509:18;9501:6;9498:30;9495:56;;;9531:18;;:::i;:::-;9495:56;9581:4;9573:6;9569:17;9561:25;;9641:4;9635;9631:15;9623:23;;9342:311;;;:::o;9676:710::-;9772:5;9797:81;9813:64;9870:6;9813:64;:::i;:::-;9797:81;:::i;:::-;9788:90;;9898:5;9927:6;9920:5;9913:21;9961:4;9954:5;9950:16;9943:23;;10014:4;10006:6;10002:17;9994:6;9990:30;10043:3;10035:6;10032:15;10029:122;;;10062:79;;:::i;:::-;10029:122;10177:6;10160:220;10194:6;10189:3;10186:15;10160:220;;;10269:3;10298:37;10331:3;10319:10;10298:37;:::i;:::-;10293:3;10286:50;10365:4;10360:3;10356:14;10349:21;;10236:144;10220:4;10215:3;10211:14;10204:21;;10160:220;;;10164:21;9778:608;;9676:710;;;;;:::o;10409:370::-;10480:5;10529:3;10522:4;10514:6;10510:17;10506:27;10496:122;;10537:79;;:::i;:::-;10496:122;10654:6;10641:20;10679:94;10769:3;10761:6;10754:4;10746:6;10742:17;10679:94;:::i;:::-;10670:103;;10486:293;10409:370;;;;:::o;10785:1039::-;10912:6;10920;10928;10977:2;10965:9;10956:7;10952:23;10948:32;10945:119;;;10983:79;;:::i;:::-;10945:119;11103:1;11128:53;11173:7;11164:6;11153:9;11149:22;11128:53;:::i;:::-;11118:63;;11074:117;11258:2;11247:9;11243:18;11230:32;11289:18;11281:6;11278:30;11275:117;;;11311:79;;:::i;:::-;11275:117;11416:78;11486:7;11477:6;11466:9;11462:22;11416:78;:::i;:::-;11406:88;;11201:303;11571:2;11560:9;11556:18;11543:32;11602:18;11594:6;11591:30;11588:117;;;11624:79;;:::i;:::-;11588:117;11729:78;11799:7;11790:6;11779:9;11775:22;11729:78;:::i;:::-;11719:88;;11514:303;10785:1039;;;;;:::o;11830:180::-;11878:77;11875:1;11868:88;11975:4;11972:1;11965:15;11999:4;11996:1;11989:15;12016:320;12060:6;12097:1;12091:4;12087:12;12077:22;;12144:1;12138:4;12134:12;12165:18;12155:81;;12221:4;12213:6;12209:17;12199:27;;12155:81;12283:2;12275:6;12272:14;12252:18;12249:38;12246:84;;12302:18;;:::i;:::-;12246:84;12067:269;12016:320;;;:::o;12342:182::-;12482:34;12478:1;12470:6;12466:14;12459:58;12342:182;:::o;12530:366::-;12672:3;12693:67;12757:2;12752:3;12693:67;:::i;:::-;12686:74;;12769:93;12858:3;12769:93;:::i;:::-;12887:2;12882:3;12878:12;12871:19;;12530:366;;;:::o;12902:419::-;13068:4;13106:2;13095:9;13091:18;13083:26;;13155:9;13149:4;13145:20;13141:1;13130:9;13126:17;13119:47;13183:131;13309:4;13183:131;:::i;:::-;13175:139;;12902:419;;;:::o;13327:180::-;13375:77;13372:1;13365:88;13472:4;13469:1;13462:15;13496:4;13493:1;13486:15;13513:191;13553:3;13572:20;13590:1;13572:20;:::i;:::-;13567:25;;13606:20;13624:1;13606:20;:::i;:::-;13601:25;;13649:1;13646;13642:9;13635:16;;13670:3;13667:1;13664:10;13661:36;;;13677:18;;:::i;:::-;13661:36;13513:191;;;;:::o;13710:170::-;13850:22;13846:1;13838:6;13834:14;13827:46;13710:170;:::o;13886:366::-;14028:3;14049:67;14113:2;14108:3;14049:67;:::i;:::-;14042:74;;14125:93;14214:3;14125:93;:::i;:::-;14243:2;14238:3;14234:12;14227:19;;13886:366;;;:::o;14258:419::-;14424:4;14462:2;14451:9;14447:18;14439:26;;14511:9;14505:4;14501:20;14497:1;14486:9;14482:17;14475:47;14539:131;14665:4;14539:131;:::i;:::-;14531:139;;14258:419;;;:::o;14683:171::-;14823:23;14819:1;14811:6;14807:14;14800:47;14683:171;:::o;14860:366::-;15002:3;15023:67;15087:2;15082:3;15023:67;:::i;:::-;15016:74;;15099:93;15188:3;15099:93;:::i;:::-;15217:2;15212:3;15208:12;15201:19;;14860:366;;;:::o;15232:419::-;15398:4;15436:2;15425:9;15421:18;15413:26;;15485:9;15479:4;15475:20;15471:1;15460:9;15456:17;15449:47;15513:131;15639:4;15513:131;:::i;:::-;15505:139;;15232:419;;;:::o;15657:174::-;15797:26;15793:1;15785:6;15781:14;15774:50;15657:174;:::o;15837:366::-;15979:3;16000:67;16064:2;16059:3;16000:67;:::i;:::-;15993:74;;16076:93;16165:3;16076:93;:::i;:::-;16194:2;16189:3;16185:12;16178:19;;15837:366;;;:::o;16209:419::-;16375:4;16413:2;16402:9;16398:18;16390:26;;16462:9;16456:4;16452:20;16448:1;16437:9;16433:17;16426:47;16490:131;16616:4;16490:131;:::i;:::-;16482:139;;16209:419;;;:::o;16634:178::-;16774:30;16770:1;16762:6;16758:14;16751:54;16634:178;:::o;16818:366::-;16960:3;16981:67;17045:2;17040:3;16981:67;:::i;:::-;16974:74;;17057:93;17146:3;17057:93;:::i;:::-;17175:2;17170:3;17166:12;17159:19;;16818:366;;;:::o;17190:419::-;17356:4;17394:2;17383:9;17379:18;17371:26;;17443:9;17437:4;17433:20;17429:1;17418:9;17414:17;17407:47;17471:131;17597:4;17471:131;:::i;:::-;17463:139;;17190:419;;;:::o;17615:182::-;17755:34;17751:1;17743:6;17739:14;17732:58;17615:182;:::o;17803:366::-;17945:3;17966:67;18030:2;18025:3;17966:67;:::i;:::-;17959:74;;18042:93;18131:3;18042:93;:::i;:::-;18160:2;18155:3;18151:12;18144:19;;17803:366;;;:::o;18175:419::-;18341:4;18379:2;18368:9;18364:18;18356:26;;18428:9;18422:4;18418:20;18414:1;18403:9;18399:17;18392:47;18456:131;18582:4;18456:131;:::i;:::-;18448:139;;18175:419;;;:::o;18600:194::-;18640:4;18660:20;18678:1;18660:20;:::i;:::-;18655:25;;18694:20;18712:1;18694:20;:::i;:::-;18689:25;;18738:1;18735;18731:9;18723:17;;18762:1;18756:4;18753:11;18750:37;;;18767:18;;:::i;:::-;18750:37;18600:194;;;;:::o;18800:228::-;18940:34;18936:1;18928:6;18924:14;18917:58;19009:11;19004:2;18996:6;18992:15;18985:36;18800:228;:::o;19034:366::-;19176:3;19197:67;19261:2;19256:3;19197:67;:::i;:::-;19190:74;;19273:93;19362:3;19273:93;:::i;:::-;19391:2;19386:3;19382:12;19375:19;;19034:366;;;:::o;19406:419::-;19572:4;19610:2;19599:9;19595:18;19587:26;;19659:9;19653:4;19649:20;19645:1;19634:9;19630:17;19623:47;19687:131;19813:4;19687:131;:::i;:::-;19679:139;;19406:419;;;:::o;19831:167::-;19971:19;19967:1;19959:6;19955:14;19948:43;19831:167;:::o;20004:366::-;20146:3;20167:67;20231:2;20226:3;20167:67;:::i;:::-;20160:74;;20243:93;20332:3;20243:93;:::i;:::-;20361:2;20356:3;20352:12;20345:19;;20004:366;;;:::o;20376:419::-;20542:4;20580:2;20569:9;20565:18;20557:26;;20629:9;20623:4;20619:20;20615:1;20604:9;20600:17;20593:47;20657:131;20783:4;20657:131;:::i;:::-;20649:139;;20376:419;;;:::o;20801:176::-;20941:28;20937:1;20929:6;20925:14;20918:52;20801:176;:::o;20983:366::-;21125:3;21146:67;21210:2;21205:3;21146:67;:::i;:::-;21139:74;;21222:93;21311:3;21222:93;:::i;:::-;21340:2;21335:3;21331:12;21324:19;;20983:366;;;:::o;21355:419::-;21521:4;21559:2;21548:9;21544:18;21536:26;;21608:9;21602:4;21598:20;21594:1;21583:9;21579:17;21572:47;21636:131;21762:4;21636:131;:::i;:::-;21628:139;;21355:419;;;:::o;21780:178::-;21920:30;21916:1;21908:6;21904:14;21897:54;21780:178;:::o;21964:366::-;22106:3;22127:67;22191:2;22186:3;22127:67;:::i;:::-;22120:74;;22203:93;22292:3;22203:93;:::i;:::-;22321:2;22316:3;22312:12;22305:19;;21964:366;;;:::o;22336:419::-;22502:4;22540:2;22529:9;22525:18;22517:26;;22589:9;22583:4;22579:20;22575:1;22564:9;22560:17;22553:47;22617:131;22743:4;22617:131;:::i;:::-;22609:139;;22336:419;;;:::o;22761:221::-;22901:34;22897:1;22889:6;22885:14;22878:58;22970:4;22965:2;22957:6;22953:15;22946:29;22761:221;:::o;22988:366::-;23130:3;23151:67;23215:2;23210:3;23151:67;:::i;:::-;23144:74;;23227:93;23316:3;23227:93;:::i;:::-;23345:2;23340:3;23336:12;23329:19;;22988:366;;;:::o;23360:419::-;23526:4;23564:2;23553:9;23549:18;23541:26;;23613:9;23607:4;23603:20;23599:1;23588:9;23584:17;23577:47;23641:131;23767:4;23641:131;:::i;:::-;23633:139;;23360:419;;;:::o;23785:179::-;23925:31;23921:1;23913:6;23909:14;23902:55;23785:179;:::o;23970:366::-;24112:3;24133:67;24197:2;24192:3;24133:67;:::i;:::-;24126:74;;24209:93;24298:3;24209:93;:::i;:::-;24327:2;24322:3;24318:12;24311:19;;23970:366;;;:::o;24342:419::-;24508:4;24546:2;24535:9;24531:18;24523:26;;24595:9;24589:4;24585:20;24581:1;24570:9;24566:17;24559:47;24623:131;24749:4;24623:131;:::i;:::-;24615:139;;24342:419;;;:::o;24767:174::-;24907:26;24903:1;24895:6;24891:14;24884:50;24767:174;:::o;24947:366::-;25089:3;25110:67;25174:2;25169:3;25110:67;:::i;:::-;25103:74;;25186:93;25275:3;25186:93;:::i;:::-;25304:2;25299:3;25295:12;25288:19;;24947:366;;;:::o;25319:419::-;25485:4;25523:2;25512:9;25508:18;25500:26;;25572:9;25566:4;25562:20;25558:1;25547:9;25543:17;25536:47;25600:131;25726:4;25600:131;:::i;:::-;25592:139;;25319:419;;;:::o;25744:180::-;25792:77;25789:1;25782:88;25889:4;25886:1;25879:15;25913:4;25910:1;25903:15;25930:176;26070:28;26066:1;26058:6;26054:14;26047:52;25930:176;:::o;26112:366::-;26254:3;26275:67;26339:2;26334:3;26275:67;:::i;:::-;26268:74;;26351:93;26440:3;26351:93;:::i;:::-;26469:2;26464:3;26460:12;26453:19;;26112:366;;;:::o;26484:419::-;26650:4;26688:2;26677:9;26673:18;26665:26;;26737:9;26731:4;26727:20;26723:1;26712:9;26708:17;26701:47;26765:131;26891:4;26765:131;:::i;:::-;26757:139;;26484:419;;;:::o;26909:233::-;26948:3;26971:24;26989:5;26971:24;:::i;:::-;26962:33;;27017:66;27010:5;27007:77;27004:103;;27087:18;;:::i;:::-;27004:103;27134:1;27127:5;27123:13;27116:20;;26909:233;;;:::o;27148:180::-;27288:32;27284:1;27276:6;27272:14;27265:56;27148:180;:::o;27334:366::-;27476:3;27497:67;27561:2;27556:3;27497:67;:::i;:::-;27490:74;;27573:93;27662:3;27573:93;:::i;:::-;27691:2;27686:3;27682:12;27675:19;;27334:366;;;:::o;27706:419::-;27872:4;27910:2;27899:9;27895:18;27887:26;;27959:9;27953:4;27949:20;27945:1;27934:9;27930:17;27923:47;27987:131;28113:4;27987:131;:::i;:::-;27979:139;;27706:419;;;:::o;28131:178::-;28271:30;28267:1;28259:6;28255:14;28248:54;28131:178;:::o;28315:366::-;28457:3;28478:67;28542:2;28537:3;28478:67;:::i;:::-;28471:74;;28554:93;28643:3;28554:93;:::i;:::-;28672:2;28667:3;28663:12;28656:19;;28315:366;;;:::o;28687:419::-;28853:4;28891:2;28880:9;28876:18;28868:26;;28940:9;28934:4;28930:20;28926:1;28915:9;28911:17;28904:47;28968:131;29094:4;28968:131;:::i;:::-;28960:139;;28687:419;;;:::o;29112:442::-;29261:4;29299:2;29288:9;29284:18;29276:26;;29312:71;29380:1;29369:9;29365:17;29356:6;29312:71;:::i;:::-;29393:72;29461:2;29450:9;29446:18;29437:6;29393:72;:::i;:::-;29475;29543:2;29532:9;29528:18;29519:6;29475:72;:::i;:::-;29112:442;;;;;;:::o
Swarm Source
ipfs://6305c3ad63a236a3306a5bd35f1dcedaf7b0b05ed26987353cbfc9f03cbef71b
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.