Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 MILKER
Holders
483
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
89,252.417625765958803236 MILKERValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Milkfriendtech
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-17 */ /** *Submitted for verification at Etherscan.io on 2023-08-27 */ pragma solidity 0.8.19; /// @notice Modern and gas efficient ERC20 + EIP-2612 implementation. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol) /// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) /// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it. abstract contract ERC20 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 amount); event Approval(address indexed owner, address indexed spender, uint256 amount); /*////////////////////////////////////////////////////////////// METADATA STORAGE //////////////////////////////////////////////////////////////*/ string public name; string public symbol; uint8 public immutable decimals; /*////////////////////////////////////////////////////////////// ERC20 STORAGE //////////////////////////////////////////////////////////////*/ uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; /*////////////////////////////////////////////////////////////// EIP-2612 STORAGE //////////////////////////////////////////////////////////////*/ uint256 internal immutable INITIAL_CHAIN_ID; bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR; mapping(address => uint256) public nonces; /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor( string memory _name, string memory _symbol, uint8 _decimals ) { name = _name; symbol = _symbol; decimals = _decimals; INITIAL_CHAIN_ID = block.chainid; INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator(); } /*////////////////////////////////////////////////////////////// ERC20 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 amount) public virtual returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address to, uint256 amount) public virtual returns (bool) { balanceOf[msg.sender] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(msg.sender, to, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual returns (bool) { uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals. if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount; balanceOf[from] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(from, to, amount); return true; } /*////////////////////////////////////////////////////////////// EIP-2612 LOGIC //////////////////////////////////////////////////////////////*/ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public virtual { require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED"); // Unchecked because the only math done is incrementing // the owner's nonce which cannot realistically overflow. unchecked { address recoveredAddress = ecrecover( keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR(), keccak256( abi.encode( keccak256( "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" ), owner, spender, value, nonces[owner]++, deadline ) ) ) ), v, r, s ); require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER"); allowance[recoveredAddress][spender] = value; } emit Approval(owner, spender, value); } function DOMAIN_SEPARATOR() public view virtual returns (bytes32) { return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator(); } function computeDomainSeparator() internal view virtual returns (bytes32) { return keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256("1"), block.chainid, address(this) ) ); } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 amount) internal virtual { totalSupply += amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(address(0), to, amount); } function _burn(address from, uint256 amount) internal virtual { balanceOf[from] -= amount; // Cannot underflow because a user's balance // will never be larger than the total supply. unchecked { totalSupply -= amount; } emit Transfer(from, address(0), amount); } } // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } /** * @title Milkfriendtech * @dev Token for Milkfriendtech */ contract Milkfriendtech is Ownable, ERC20 { IUniswapV2Router02 public router; IUniswapV2Factory public factory; IUniswapV2Pair public pair; uint private constant INITIAL_SUPPLY = 100_000_000 * 10**18; // // The tax to deduct, in basis points // uint public buyTaxBps = 500; uint public sellTaxBps = 500; uint public maxbuy = 0; // bool isSellingCollectedTaxes; event AntiBotEngaged(); event AntiBotDisengaged(); address public revenueWallet; bool public engagedOnce; bool public disengagedOnce; constructor() ERC20("Milkfriendtech", "MILKER", 18) { router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); factory = IUniswapV2Factory(router.factory()); _mint(msg.sender, INITIAL_SUPPLY); // Approve infinite spending by DEX, to sell tokens collected via tax. allowance[address(this)][address(router)] = type(uint).max; emit Approval(address(this), address(router), type(uint).max); pair = IUniswapV2Pair(factory.createPair(address(this), router.WETH())); } modifier lockTheSwap() { isSellingCollectedTaxes = true; _; isSellingCollectedTaxes = false; } receive() external payable {} fallback() external payable {} function burn(uint amount) external { _burn(msg.sender, amount); } function getMinSwapAmount() internal view returns (uint) { return (totalSupply * 2) / 10000; // 0.02% } function enableAntiSnipe() public onlyOwner { require(!engagedOnce, "this is a one shot function"); engagedOnce = true; buyTaxBps = 2500; sellTaxBps = 2500; emit AntiBotEngaged(); } function disableAntiSnipe() public onlyOwner { require(!disengagedOnce, "this is a one shot function"); disengagedOnce = true; buyTaxBps = 500; sellTaxBps = 500; emit AntiBotDisengaged(); } function setRevenueWallet(address wallet) public onlyOwner { require(wallet != address(0), "null address"); revenueWallet = wallet; } function setMaxBuy(uint _maxbuy) public onlyOwner { require(_maxbuy > 0, "Max buy is zero"); maxbuy = _maxbuy; } /** * @dev Calculate the amount of tax to apply to a transaction. * @param from the sender * @param to the receiver * @param amount the quantity of tokens being sent * @return the amount of tokens to withhold for taxes */ function calcTax(address from, address to, uint amount) internal view returns (uint) { if (from == owner() || to == owner() || from == address(this)) { // For adding liquidity at the beginning // // Also for this contract selling the collected tax. return 0; } else if (from == address(pair)) { // Buy from DEX, or adding liquidity. return amount * buyTaxBps / 10_000; } else if (to == address(pair)) { // Sell from DEX, or removing liquidity. return amount * sellTaxBps / 10_000; } else { // Sending to other wallets (e.g. OTC) is tax-free. return 0; } } /** * @dev Sell the balance accumulated from taxes. */ function sellCollectedTaxes() internal lockTheSwap { uint tokensToSwap = balanceOf[address(this)]; // Sell address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokensToSwap, 0, path, address(this), block.timestamp ); revenueWallet.call{value: (address(this).balance)}(""); } /** * @dev Transfer tokens from the caller to another address. * @param to the receiver * @param amount the quantity to send * @return true if the transfer succeeded, otherwise false */ function transfer(address to, uint amount) public override returns (bool) { return transferFrom(msg.sender, to, amount); } /** * @dev Transfer tokens from one address to another. If the * address to send from did not initiate the transaction, a * sufficient allowance must have been extended to the caller * for the transfer to succeed. * @param from the sender * @param to the receiver * @param amount the quantity to send * @return true if the transfer succeeded, otherwise false */ function transferFrom( address from, address to, uint amount ) public override returns (bool) { if (from != msg.sender) { // This is a typical transferFrom uint allowed = allowance[from][msg.sender]; // Saves gas for limited approvals. if (allowed != type(uint).max) allowance[from][msg.sender] = allowed - amount; } if(to != owner() && from != owner() && to != address(router) && to != address(pair)){ uint256 maxHolding = (totalSupply * maxbuy) / 10000; // 1.5% in basis points require(balanceOf[to] + amount <= maxHolding, "Recipient holding exceeds maximum allowed"); } // Only on sells because DEX has a LOCKED (reentrancy) // error if done during buys. // // isSellingCollectedTaxes prevents an infinite loop. if (balanceOf[address(this)] > getMinSwapAmount() && !isSellingCollectedTaxes && from != address(pair) && from != address(this)) { sellCollectedTaxes(); } uint tax = calcTax(from, to, amount); uint afterTaxAmount = amount - tax; balanceOf[from] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint value. unchecked { balanceOf[to] += afterTaxAmount; } emit Transfer(from, to, afterTaxAmount); if (tax > 0) { unchecked { balanceOf[address(this)] += tax; } // Any transfer to the contract can be viewed as tax emit Transfer(from, address(this), tax); } return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"AntiBotDisengaged","type":"event"},{"anonymous":false,"inputs":[],"name":"AntiBotEngaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAntiSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disengagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableAntiSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"engagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxbuy","type":"uint256"}],"name":"setMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setRevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526101f4600a556101f4600b556000600c553480156200002257600080fd5b506040518060400160405280600e81526020017f4d696c6b667269656e64746563680000000000000000000000000000000000008152506040518060400160405280600681526020017f4d494c4b455200000000000000000000000000000000000000000000000000008152506012620000b1620000a56200053560201b60201c565b6200053d60201b60201c565b8260019081620000c29190620009df565b508160029081620000d49190620009df565b508060ff1660808160ff16815250504660a08181525050620000fb6200060160201b60201c565b60c08181525050505050737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ee919062000b30565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200024b336a52b7d2dcc80cd2e40000006200069160201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051620003af919062000b73565b60405180910390a3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048a919062000b30565b6040518363ffffffff1660e01b8152600401620004a992919062000ba1565b6020604051808303816000875af1158015620004c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ef919062000b30565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000d78565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600160405162000635919062000c7d565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016200067695949392919062000cb1565b60405160208183030381529060405280519060200120905090565b8060036000828254620006a5919062000d3d565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000759919062000b73565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007e757607f821691505b602082108103620007fd57620007fc6200079f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000828565b62000873868362000828565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008c0620008ba620008b4846200088b565b62000895565b6200088b565b9050919050565b6000819050919050565b620008dc836200089f565b620008f4620008eb82620008c7565b84845462000835565b825550505050565b600090565b6200090b620008fc565b62000918818484620008d1565b505050565b5b8181101562000940576200093460008262000901565b6001810190506200091e565b5050565b601f8211156200098f57620009598162000803565b620009648462000818565b8101602085101562000974578190505b6200098c620009838562000818565b8301826200091d565b50505b505050565b600082821c905092915050565b6000620009b46000198460080262000994565b1980831691505092915050565b6000620009cf8383620009a1565b9150826002028217905092915050565b620009ea8262000765565b67ffffffffffffffff81111562000a065762000a0562000770565b5b62000a128254620007ce565b62000a1f82828562000944565b600060209050601f83116001811462000a57576000841562000a42578287015190505b62000a4e8582620009c1565b86555062000abe565b601f19841662000a678662000803565b60005b8281101562000a915784890151825560018201915060208501945060208101905062000a6a565b8683101562000ab1578489015162000aad601f891682620009a1565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000af88262000acb565b9050919050565b62000b0a8162000aeb565b811462000b1657600080fd5b50565b60008151905062000b2a8162000aff565b92915050565b60006020828403121562000b495762000b4862000ac6565b5b600062000b598482850162000b19565b91505092915050565b62000b6d816200088b565b82525050565b600060208201905062000b8a600083018462000b62565b92915050565b62000b9b8162000aeb565b82525050565b600060408201905062000bb8600083018562000b90565b62000bc7602083018462000b90565b9392505050565b600081905092915050565b60008190508160005260206000209050919050565b6000815462000bfd81620007ce565b62000c09818662000bce565b9450600182166000811462000c27576001811462000c3d5762000c74565b60ff198316865281151582028601935062000c74565b62000c488562000bd9565b60005b8381101562000c6c5781548189015260018201915060208101905062000c4b565b838801955050505b50505092915050565b600062000c8b828462000bee565b915081905092915050565b6000819050919050565b62000cab8162000c96565b82525050565b600060a08201905062000cc8600083018862000ca0565b62000cd7602083018762000ca0565b62000ce6604083018662000ca0565b62000cf5606083018562000b62565b62000d04608083018462000b90565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d4a826200088b565b915062000d57836200088b565b925082820190508082111562000d725762000d7162000d0e565b5b92915050565b60805160a05160c051612e1762000da86000396000610fbf01526000610f8b01526000610f650152612e176000f3fe6080604052600436106101c65760003560e01c80637ecebe00116100f7578063cffd129c11610095578063f35835b711610064578063f35835b714610640578063f53bc83514610657578063f887ea4014610680578063fb235f34146106ab576101cd565b8063cffd129c14610586578063d505accf146105b1578063dd62ed3e146105da578063f2fde38b14610617576101cd565b8063a8aa1b31116100d1578063a8aa1b31146104c8578063a9059cbb146104f3578063c45a015514610530578063c473413a1461055b576101cd565b80637ecebe00146104355780638da5cb5b1461047257806395d89b411461049d576101cd565b8063313ce56711610164578063444784251161013e578063444784251461038b57806370a08231146103b6578063715018a6146103f35780637d5ea21b1461040a576101cd565b8063313ce5671461030c5780633644e5151461033757806342966c6814610362576101cd565b806319b68610116101a057806319b686101461026257806323b872dd14610279578063270fd20a146102b65780633128cdac146102e1576101cd565b806306fdde03146101cf578063095ea7b3146101fa57806318160ddd14610237576101cd565b366101cd57005b005b3480156101db57600080fd5b506101e46106d4565b6040516101f19190611f43565b60405180910390f35b34801561020657600080fd5b50610221600480360381019061021c9190611ffe565b610762565b60405161022e9190612059565b60405180910390f35b34801561024357600080fd5b5061024c610854565b6040516102599190612083565b60405180910390f35b34801561026e57600080fd5b5061027761085a565b005b34801561028557600080fd5b506102a0600480360381019061029b919061209e565b61090d565b6040516102ad9190612059565b60405180910390f35b3480156102c257600080fd5b506102cb610f4a565b6040516102d89190612059565b60405180910390f35b3480156102ed57600080fd5b506102f6610f5d565b6040516103039190612083565b60405180910390f35b34801561031857600080fd5b50610321610f63565b60405161032e919061210d565b60405180910390f35b34801561034357600080fd5b5061034c610f87565b6040516103599190612141565b60405180910390f35b34801561036e57600080fd5b506103896004803603810190610384919061215c565b610fe4565b005b34801561039757600080fd5b506103a0610ff1565b6040516103ad9190612198565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906121b3565b611017565b6040516103ea9190612083565b60405180910390f35b3480156103ff57600080fd5b5061040861102f565b005b34801561041657600080fd5b5061041f611043565b60405161042c9190612059565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906121b3565b611056565b6040516104699190612083565b60405180910390f35b34801561047e57600080fd5b5061048761106e565b6040516104949190612198565b60405180910390f35b3480156104a957600080fd5b506104b2611097565b6040516104bf9190611f43565b60405180910390f35b3480156104d457600080fd5b506104dd611125565b6040516104ea919061223f565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190611ffe565b61114b565b6040516105279190612059565b60405180910390f35b34801561053c57600080fd5b50610545611160565b604051610552919061227b565b60405180910390f35b34801561056757600080fd5b50610570611186565b60405161057d9190612083565b60405180910390f35b34801561059257600080fd5b5061059b61118c565b6040516105a89190612083565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d391906122ee565b611192565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190612390565b61148b565b60405161060e9190612083565b60405180910390f35b34801561062357600080fd5b5061063e600480360381019061063991906121b3565b6114b0565b005b34801561064c57600080fd5b50610655611533565b005b34801561066357600080fd5b5061067e6004803603810190610679919061215c565b6115e6565b005b34801561068c57600080fd5b5061069561163b565b6040516106a291906123f1565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906121b3565b611661565b005b600180546106e19061243b565b80601f016020809104026020016040519081016040528092919081815260200182805461070d9061243b565b801561075a5780601f1061072f5761010080835404028352916020019161075a565b820191906000526020600020905b81548152906001019060200180831161073d57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108429190612083565b60405180910390a36001905092915050565b60035481565b61086261171c565b600d60169054906101000a900460ff16156108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a9906124b8565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610a79576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a775782816109f69190612507565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b610a8161106e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610aef5750610abf61106e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610b495750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ba35750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610c58576000612710600c54600354610bbd919061253b565b610bc791906125ac565b90508083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c1591906125dd565b1115610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90612683565b60405180910390fd5b505b610c6061179a565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015610cba5750600d60009054906101000a900460ff16155b8015610d145750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610d4c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610d5a57610d596117bd565b5b6000610d67858585611ad8565b905060008184610d779190612507565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dc89190612507565b9250508190555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e799190612083565b60405180910390a36000821115610f3d5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f349190612083565b60405180910390a35b6001925050509392505050565b600d60169054906101000a900460ff1681565b600c5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000004614610fbd57610fb8611c8b565b610fdf565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b610fee3382611d17565b50565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b61103761171c565b6110416000611de7565b565b600d60159054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600280546110a49061243b565b80601f01602080910402602001604051908101604052809291908181526020018280546110d09061243b565b801561111d5780601f106110f25761010080835404028352916020019161111d565b820191906000526020600020905b81548152906001019060200180831161110057829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061115833848461090d565b905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b428410156111d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cc906126ef565b60405180910390fd5b600060016111e1610f87565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016112699695949392919061270f565b604051602081830303815290604052805190602001206040516020016112909291906127e8565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516112c6949392919061281f565b6020604051602081039080840390855afa1580156112e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561135c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61139b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611392906128b0565b60405180910390fd5b85600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161147a9190612083565b60405180910390a350505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b6114b861171c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612942565b60405180910390fd5b61153081611de7565b50565b61153b61171c565b600d60159054906101000a900460ff161561158b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611582906124b8565b60405180910390fd5b6001600d60156101000a81548160ff0219169083151502179055506109c4600a819055506109c4600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b6115ee61171c565b60008111611631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611628906129ae565b60405180910390fd5b80600c8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61166961171c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90612a1a565b60405180910390fd5b80600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611724611eab565b73ffffffffffffffffffffffffffffffffffffffff1661174261106e565b73ffffffffffffffffffffffffffffffffffffffff1614611798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178f90612a86565b60405180910390fd5b565b600061271060026003546117ae919061253b565b6117b891906125ac565b905090565b6001600d60006101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600267ffffffffffffffff81111561183957611838612aa6565b5b6040519080825280602002602001820160405280156118675781602001602082028036833780820191505090505b509050308160008151811061187f5761187e612ad5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a9190612b19565b8160018151811061195e5761195d612ad5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016119fc959493929190612c3f565b600060405180830381600087803b158015611a1657600080fd5b505af1158015611a2a573d6000803e3d6000fd5b50505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611a7490612cca565b60006040518083038185875af1925050503d8060008114611ab1576040519150601f19603f3d011682016040523d82523d6000602084013e611ab6565b606091505b50505050506000600d60006101000a81548160ff021916908315150217905550565b6000611ae261106e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b4d5750611b1e61106e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611b8357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611b915760009050611c84565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c0857612710600a5483611bf7919061253b565b611c0191906125ac565b9050611c84565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7f57612710600b5483611c6e919061253b565b611c7891906125ac565b9050611c84565b600090505b9392505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051611cbd9190612d77565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611cfc959493929190612d8e565b60405160208183030381529060405280519060200120905090565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d669190612507565b9250508190555080600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ddb9190612083565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611eed578082015181840152602081019050611ed2565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f1582611eb3565b611f1f8185611ebe565b9350611f2f818560208601611ecf565b611f3881611ef9565b840191505092915050565b60006020820190508181036000830152611f5d8184611f0a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f9582611f6a565b9050919050565b611fa581611f8a565b8114611fb057600080fd5b50565b600081359050611fc281611f9c565b92915050565b6000819050919050565b611fdb81611fc8565b8114611fe657600080fd5b50565b600081359050611ff881611fd2565b92915050565b6000806040838503121561201557612014611f65565b5b600061202385828601611fb3565b925050602061203485828601611fe9565b9150509250929050565b60008115159050919050565b6120538161203e565b82525050565b600060208201905061206e600083018461204a565b92915050565b61207d81611fc8565b82525050565b60006020820190506120986000830184612074565b92915050565b6000806000606084860312156120b7576120b6611f65565b5b60006120c586828701611fb3565b93505060206120d686828701611fb3565b92505060406120e786828701611fe9565b9150509250925092565b600060ff82169050919050565b612107816120f1565b82525050565b600060208201905061212260008301846120fe565b92915050565b6000819050919050565b61213b81612128565b82525050565b60006020820190506121566000830184612132565b92915050565b60006020828403121561217257612171611f65565b5b600061218084828501611fe9565b91505092915050565b61219281611f8a565b82525050565b60006020820190506121ad6000830184612189565b92915050565b6000602082840312156121c9576121c8611f65565b5b60006121d784828501611fb3565b91505092915050565b6000819050919050565b60006122056122006121fb84611f6a565b6121e0565b611f6a565b9050919050565b6000612217826121ea565b9050919050565b60006122298261220c565b9050919050565b6122398161221e565b82525050565b60006020820190506122546000830184612230565b92915050565b60006122658261220c565b9050919050565b6122758161225a565b82525050565b6000602082019050612290600083018461226c565b92915050565b61229f816120f1565b81146122aa57600080fd5b50565b6000813590506122bc81612296565b92915050565b6122cb81612128565b81146122d657600080fd5b50565b6000813590506122e8816122c2565b92915050565b600080600080600080600060e0888a03121561230d5761230c611f65565b5b600061231b8a828b01611fb3565b975050602061232c8a828b01611fb3565b965050604061233d8a828b01611fe9565b955050606061234e8a828b01611fe9565b945050608061235f8a828b016122ad565b93505060a06123708a828b016122d9565b92505060c06123818a828b016122d9565b91505092959891949750929550565b600080604083850312156123a7576123a6611f65565b5b60006123b585828601611fb3565b92505060206123c685828601611fb3565b9150509250929050565b60006123db8261220c565b9050919050565b6123eb816123d0565b82525050565b600060208201905061240660008301846123e2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061245357607f821691505b6020821081036124665761246561240c565b5b50919050565b7f746869732069732061206f6e652073686f742066756e6374696f6e0000000000600082015250565b60006124a2601b83611ebe565b91506124ad8261246c565b602082019050919050565b600060208201905081810360008301526124d181612495565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061251282611fc8565b915061251d83611fc8565b9250828203905081811115612535576125346124d8565b5b92915050565b600061254682611fc8565b915061255183611fc8565b925082820261255f81611fc8565b91508282048414831517612576576125756124d8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125b782611fc8565b91506125c283611fc8565b9250826125d2576125d161257d565b5b828204905092915050565b60006125e882611fc8565b91506125f383611fc8565b925082820190508082111561260b5761260a6124d8565b5b92915050565b7f526563697069656e7420686f6c64696e672065786365656473206d6178696d7560008201527f6d20616c6c6f7765640000000000000000000000000000000000000000000000602082015250565b600061266d602983611ebe565b915061267882612611565b604082019050919050565b6000602082019050818103600083015261269c81612660565b9050919050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006126d9601783611ebe565b91506126e4826126a3565b602082019050919050565b60006020820190508181036000830152612708816126cc565b9050919050565b600060c0820190506127246000830189612132565b6127316020830188612189565b61273e6040830187612189565b61274b6060830186612074565b6127586080830185612074565b61276560a0830184612074565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006127b1600283612770565b91506127bc8261277b565b600282019050919050565b6000819050919050565b6127e26127dd82612128565b6127c7565b82525050565b60006127f3826127a4565b91506127ff82856127d1565b60208201915061280f82846127d1565b6020820191508190509392505050565b60006080820190506128346000830187612132565b61284160208301866120fe565b61284e6040830185612132565b61285b6060830184612132565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b600061289a600e83611ebe565b91506128a582612864565b602082019050919050565b600060208201905081810360008301526128c98161288d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061292c602683611ebe565b9150612937826128d0565b604082019050919050565b6000602082019050818103600083015261295b8161291f565b9050919050565b7f4d617820627579206973207a65726f0000000000000000000000000000000000600082015250565b6000612998600f83611ebe565b91506129a382612962565b602082019050919050565b600060208201905081810360008301526129c78161298b565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b6000612a04600c83611ebe565b9150612a0f826129ce565b602082019050919050565b60006020820190508181036000830152612a33816129f7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a70602083611ebe565b9150612a7b82612a3a565b602082019050919050565b60006020820190508181036000830152612a9f81612a63565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b1381611f9c565b92915050565b600060208284031215612b2f57612b2e611f65565b5b6000612b3d84828501612b04565b91505092915050565b6000819050919050565b6000612b6b612b66612b6184612b46565b6121e0565b611fc8565b9050919050565b612b7b81612b50565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bb681611f8a565b82525050565b6000612bc88383612bad565b60208301905092915050565b6000602082019050919050565b6000612bec82612b81565b612bf68185612b8c565b9350612c0183612b9d565b8060005b83811015612c32578151612c198882612bbc565b9750612c2483612bd4565b925050600181019050612c05565b5085935050505092915050565b600060a082019050612c546000830188612074565b612c616020830187612b72565b8181036040830152612c738186612be1565b9050612c826060830185612189565b612c8f6080830184612074565b9695505050505050565b600081905092915050565b50565b6000612cb4600083612c99565b9150612cbf82612ca4565b600082019050919050565b6000612cd582612ca7565b9150819050919050565b60008190508160005260206000209050919050565b60008154612d018161243b565b612d0b8186612c99565b94506001821660008114612d265760018114612d3b57612d6e565b60ff1983168652811515820286019350612d6e565b612d4485612cdf565b60005b83811015612d6657815481890152600182019150602081019050612d47565b838801955050505b50505092915050565b6000612d838284612cf4565b915081905092915050565b600060a082019050612da36000830188612132565b612db06020830187612132565b612dbd6040830186612132565b612dca6060830185612074565b612dd76080830184612189565b969550505050505056fea2646970667358221220a799c5fb00900af27ae4fc2a51ce5dd290147f79bfea5e8322fa9b594598cb6a64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101c65760003560e01c80637ecebe00116100f7578063cffd129c11610095578063f35835b711610064578063f35835b714610640578063f53bc83514610657578063f887ea4014610680578063fb235f34146106ab576101cd565b8063cffd129c14610586578063d505accf146105b1578063dd62ed3e146105da578063f2fde38b14610617576101cd565b8063a8aa1b31116100d1578063a8aa1b31146104c8578063a9059cbb146104f3578063c45a015514610530578063c473413a1461055b576101cd565b80637ecebe00146104355780638da5cb5b1461047257806395d89b411461049d576101cd565b8063313ce56711610164578063444784251161013e578063444784251461038b57806370a08231146103b6578063715018a6146103f35780637d5ea21b1461040a576101cd565b8063313ce5671461030c5780633644e5151461033757806342966c6814610362576101cd565b806319b68610116101a057806319b686101461026257806323b872dd14610279578063270fd20a146102b65780633128cdac146102e1576101cd565b806306fdde03146101cf578063095ea7b3146101fa57806318160ddd14610237576101cd565b366101cd57005b005b3480156101db57600080fd5b506101e46106d4565b6040516101f19190611f43565b60405180910390f35b34801561020657600080fd5b50610221600480360381019061021c9190611ffe565b610762565b60405161022e9190612059565b60405180910390f35b34801561024357600080fd5b5061024c610854565b6040516102599190612083565b60405180910390f35b34801561026e57600080fd5b5061027761085a565b005b34801561028557600080fd5b506102a0600480360381019061029b919061209e565b61090d565b6040516102ad9190612059565b60405180910390f35b3480156102c257600080fd5b506102cb610f4a565b6040516102d89190612059565b60405180910390f35b3480156102ed57600080fd5b506102f6610f5d565b6040516103039190612083565b60405180910390f35b34801561031857600080fd5b50610321610f63565b60405161032e919061210d565b60405180910390f35b34801561034357600080fd5b5061034c610f87565b6040516103599190612141565b60405180910390f35b34801561036e57600080fd5b506103896004803603810190610384919061215c565b610fe4565b005b34801561039757600080fd5b506103a0610ff1565b6040516103ad9190612198565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906121b3565b611017565b6040516103ea9190612083565b60405180910390f35b3480156103ff57600080fd5b5061040861102f565b005b34801561041657600080fd5b5061041f611043565b60405161042c9190612059565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906121b3565b611056565b6040516104699190612083565b60405180910390f35b34801561047e57600080fd5b5061048761106e565b6040516104949190612198565b60405180910390f35b3480156104a957600080fd5b506104b2611097565b6040516104bf9190611f43565b60405180910390f35b3480156104d457600080fd5b506104dd611125565b6040516104ea919061223f565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190611ffe565b61114b565b6040516105279190612059565b60405180910390f35b34801561053c57600080fd5b50610545611160565b604051610552919061227b565b60405180910390f35b34801561056757600080fd5b50610570611186565b60405161057d9190612083565b60405180910390f35b34801561059257600080fd5b5061059b61118c565b6040516105a89190612083565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d391906122ee565b611192565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190612390565b61148b565b60405161060e9190612083565b60405180910390f35b34801561062357600080fd5b5061063e600480360381019061063991906121b3565b6114b0565b005b34801561064c57600080fd5b50610655611533565b005b34801561066357600080fd5b5061067e6004803603810190610679919061215c565b6115e6565b005b34801561068c57600080fd5b5061069561163b565b6040516106a291906123f1565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906121b3565b611661565b005b600180546106e19061243b565b80601f016020809104026020016040519081016040528092919081815260200182805461070d9061243b565b801561075a5780601f1061072f5761010080835404028352916020019161075a565b820191906000526020600020905b81548152906001019060200180831161073d57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108429190612083565b60405180910390a36001905092915050565b60035481565b61086261171c565b600d60169054906101000a900460ff16156108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a9906124b8565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610a79576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a775782816109f69190612507565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b610a8161106e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610aef5750610abf61106e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610b495750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ba35750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610c58576000612710600c54600354610bbd919061253b565b610bc791906125ac565b90508083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c1591906125dd565b1115610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90612683565b60405180910390fd5b505b610c6061179a565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015610cba5750600d60009054906101000a900460ff16155b8015610d145750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610d4c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610d5a57610d596117bd565b5b6000610d67858585611ad8565b905060008184610d779190612507565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dc89190612507565b9250508190555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e799190612083565b60405180910390a36000821115610f3d5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f349190612083565b60405180910390a35b6001925050509392505050565b600d60169054906101000a900460ff1681565b600c5481565b7f000000000000000000000000000000000000000000000000000000000000001281565b60007f00000000000000000000000000000000000000000000000000000000000000014614610fbd57610fb8611c8b565b610fdf565b7f8fc9c9f84fed08c506383afb14d9d5f6c7a173b8008284d87ae335e112ff9ecd5b905090565b610fee3382611d17565b50565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b61103761171c565b6110416000611de7565b565b600d60159054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600280546110a49061243b565b80601f01602080910402602001604051908101604052809291908181526020018280546110d09061243b565b801561111d5780601f106110f25761010080835404028352916020019161111d565b820191906000526020600020905b81548152906001019060200180831161110057829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061115833848461090d565b905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b428410156111d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cc906126ef565b60405180910390fd5b600060016111e1610f87565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016112699695949392919061270f565b604051602081830303815290604052805190602001206040516020016112909291906127e8565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516112c6949392919061281f565b6020604051602081039080840390855afa1580156112e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561135c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61139b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611392906128b0565b60405180910390fd5b85600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161147a9190612083565b60405180910390a350505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b6114b861171c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612942565b60405180910390fd5b61153081611de7565b50565b61153b61171c565b600d60159054906101000a900460ff161561158b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611582906124b8565b60405180910390fd5b6001600d60156101000a81548160ff0219169083151502179055506109c4600a819055506109c4600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b6115ee61171c565b60008111611631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611628906129ae565b60405180910390fd5b80600c8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61166961171c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90612a1a565b60405180910390fd5b80600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611724611eab565b73ffffffffffffffffffffffffffffffffffffffff1661174261106e565b73ffffffffffffffffffffffffffffffffffffffff1614611798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178f90612a86565b60405180910390fd5b565b600061271060026003546117ae919061253b565b6117b891906125ac565b905090565b6001600d60006101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600267ffffffffffffffff81111561183957611838612aa6565b5b6040519080825280602002602001820160405280156118675781602001602082028036833780820191505090505b509050308160008151811061187f5761187e612ad5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a9190612b19565b8160018151811061195e5761195d612ad5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016119fc959493929190612c3f565b600060405180830381600087803b158015611a1657600080fd5b505af1158015611a2a573d6000803e3d6000fd5b50505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611a7490612cca565b60006040518083038185875af1925050503d8060008114611ab1576040519150601f19603f3d011682016040523d82523d6000602084013e611ab6565b606091505b50505050506000600d60006101000a81548160ff021916908315150217905550565b6000611ae261106e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b4d5750611b1e61106e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611b8357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611b915760009050611c84565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c0857612710600a5483611bf7919061253b565b611c0191906125ac565b9050611c84565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7f57612710600b5483611c6e919061253b565b611c7891906125ac565b9050611c84565b600090505b9392505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051611cbd9190612d77565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611cfc959493929190612d8e565b60405160208183030381529060405280519060200120905090565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d669190612507565b9250508190555080600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ddb9190612083565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611eed578082015181840152602081019050611ed2565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f1582611eb3565b611f1f8185611ebe565b9350611f2f818560208601611ecf565b611f3881611ef9565b840191505092915050565b60006020820190508181036000830152611f5d8184611f0a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f9582611f6a565b9050919050565b611fa581611f8a565b8114611fb057600080fd5b50565b600081359050611fc281611f9c565b92915050565b6000819050919050565b611fdb81611fc8565b8114611fe657600080fd5b50565b600081359050611ff881611fd2565b92915050565b6000806040838503121561201557612014611f65565b5b600061202385828601611fb3565b925050602061203485828601611fe9565b9150509250929050565b60008115159050919050565b6120538161203e565b82525050565b600060208201905061206e600083018461204a565b92915050565b61207d81611fc8565b82525050565b60006020820190506120986000830184612074565b92915050565b6000806000606084860312156120b7576120b6611f65565b5b60006120c586828701611fb3565b93505060206120d686828701611fb3565b92505060406120e786828701611fe9565b9150509250925092565b600060ff82169050919050565b612107816120f1565b82525050565b600060208201905061212260008301846120fe565b92915050565b6000819050919050565b61213b81612128565b82525050565b60006020820190506121566000830184612132565b92915050565b60006020828403121561217257612171611f65565b5b600061218084828501611fe9565b91505092915050565b61219281611f8a565b82525050565b60006020820190506121ad6000830184612189565b92915050565b6000602082840312156121c9576121c8611f65565b5b60006121d784828501611fb3565b91505092915050565b6000819050919050565b60006122056122006121fb84611f6a565b6121e0565b611f6a565b9050919050565b6000612217826121ea565b9050919050565b60006122298261220c565b9050919050565b6122398161221e565b82525050565b60006020820190506122546000830184612230565b92915050565b60006122658261220c565b9050919050565b6122758161225a565b82525050565b6000602082019050612290600083018461226c565b92915050565b61229f816120f1565b81146122aa57600080fd5b50565b6000813590506122bc81612296565b92915050565b6122cb81612128565b81146122d657600080fd5b50565b6000813590506122e8816122c2565b92915050565b600080600080600080600060e0888a03121561230d5761230c611f65565b5b600061231b8a828b01611fb3565b975050602061232c8a828b01611fb3565b965050604061233d8a828b01611fe9565b955050606061234e8a828b01611fe9565b945050608061235f8a828b016122ad565b93505060a06123708a828b016122d9565b92505060c06123818a828b016122d9565b91505092959891949750929550565b600080604083850312156123a7576123a6611f65565b5b60006123b585828601611fb3565b92505060206123c685828601611fb3565b9150509250929050565b60006123db8261220c565b9050919050565b6123eb816123d0565b82525050565b600060208201905061240660008301846123e2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061245357607f821691505b6020821081036124665761246561240c565b5b50919050565b7f746869732069732061206f6e652073686f742066756e6374696f6e0000000000600082015250565b60006124a2601b83611ebe565b91506124ad8261246c565b602082019050919050565b600060208201905081810360008301526124d181612495565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061251282611fc8565b915061251d83611fc8565b9250828203905081811115612535576125346124d8565b5b92915050565b600061254682611fc8565b915061255183611fc8565b925082820261255f81611fc8565b91508282048414831517612576576125756124d8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125b782611fc8565b91506125c283611fc8565b9250826125d2576125d161257d565b5b828204905092915050565b60006125e882611fc8565b91506125f383611fc8565b925082820190508082111561260b5761260a6124d8565b5b92915050565b7f526563697069656e7420686f6c64696e672065786365656473206d6178696d7560008201527f6d20616c6c6f7765640000000000000000000000000000000000000000000000602082015250565b600061266d602983611ebe565b915061267882612611565b604082019050919050565b6000602082019050818103600083015261269c81612660565b9050919050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006126d9601783611ebe565b91506126e4826126a3565b602082019050919050565b60006020820190508181036000830152612708816126cc565b9050919050565b600060c0820190506127246000830189612132565b6127316020830188612189565b61273e6040830187612189565b61274b6060830186612074565b6127586080830185612074565b61276560a0830184612074565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006127b1600283612770565b91506127bc8261277b565b600282019050919050565b6000819050919050565b6127e26127dd82612128565b6127c7565b82525050565b60006127f3826127a4565b91506127ff82856127d1565b60208201915061280f82846127d1565b6020820191508190509392505050565b60006080820190506128346000830187612132565b61284160208301866120fe565b61284e6040830185612132565b61285b6060830184612132565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b600061289a600e83611ebe565b91506128a582612864565b602082019050919050565b600060208201905081810360008301526128c98161288d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061292c602683611ebe565b9150612937826128d0565b604082019050919050565b6000602082019050818103600083015261295b8161291f565b9050919050565b7f4d617820627579206973207a65726f0000000000000000000000000000000000600082015250565b6000612998600f83611ebe565b91506129a382612962565b602082019050919050565b600060208201905081810360008301526129c78161298b565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b6000612a04600c83611ebe565b9150612a0f826129ce565b602082019050919050565b60006020820190508181036000830152612a33816129f7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a70602083611ebe565b9150612a7b82612a3a565b602082019050919050565b60006020820190508181036000830152612a9f81612a63565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b1381611f9c565b92915050565b600060208284031215612b2f57612b2e611f65565b5b6000612b3d84828501612b04565b91505092915050565b6000819050919050565b6000612b6b612b66612b6184612b46565b6121e0565b611fc8565b9050919050565b612b7b81612b50565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bb681611f8a565b82525050565b6000612bc88383612bad565b60208301905092915050565b6000602082019050919050565b6000612bec82612b81565b612bf68185612b8c565b9350612c0183612b9d565b8060005b83811015612c32578151612c198882612bbc565b9750612c2483612bd4565b925050600181019050612c05565b5085935050505092915050565b600060a082019050612c546000830188612074565b612c616020830187612b72565b8181036040830152612c738186612be1565b9050612c826060830185612189565b612c8f6080830184612074565b9695505050505050565b600081905092915050565b50565b6000612cb4600083612c99565b9150612cbf82612ca4565b600082019050919050565b6000612cd582612ca7565b9150819050919050565b60008190508160005260206000209050919050565b60008154612d018161243b565b612d0b8186612c99565b94506001821660008114612d265760018114612d3b57612d6e565b60ff1983168652811515820286019350612d6e565b612d4485612cdf565b60005b83811015612d6657815481890152600182019150602081019050612d47565b838801955050505b50505092915050565b6000612d838284612cf4565b915081905092915050565b600060a082019050612da36000830188612132565b612db06020830187612132565b612dbd6040830186612132565b612dca6060830185612074565b612dd76080830184612189565b969550505050505056fea2646970667358221220a799c5fb00900af27ae4fc2a51ce5dd290147f79bfea5e8322fa9b594598cb6a64736f6c63430008130033
Deployed Bytecode Sourcemap
18504:6540:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2555:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1361:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20324:239;;;;;;;;;;;;;:::i;:::-;;23291:1750;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19069:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18864:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1134:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5515:179;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19870:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19002:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1396:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9654:103;;;;;;;;;;;;;:::i;:::-;;19039:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1822:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9006:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1105:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18633:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22711:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18594:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18795:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18829:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3980:1527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1449:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9912:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20085:231;;;;;;;;;;;;;:::i;:::-;;20735:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18555:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20571:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1078:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2555:217::-;2629:4;2679:6;2646:9;:21;2656:10;2646:21;;;;;;;;;;;;;;;:30;2668:7;2646:30;;;;;;;;;;;;;;;:39;;;;2724:7;2703:37;;2712:10;2703:37;;;2733:6;2703:37;;;;;;:::i;:::-;;;;;;;;2760:4;2753:11;;2555:217;;;;:::o;1361:26::-;;;;:::o;20324:239::-;8892:13;:11;:13::i;:::-;20389:14:::1;;;;;;;;;;;20388:15;20380:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;20463:4;20446:14;;:21;;;;;;;;;;;;;;;;;;20490:3;20478:9;:15;;;;20517:3;20504:10;:16;;;;20536:19;;;;;;;;;;20324:239::o:0;23291:1750::-;23411:4;23440:10;23432:18;;:4;:18;;;23428:272;;23516:12;23531:9;:15;23541:4;23531:15;;;;;;;;;;;;;;;:27;23547:10;23531:27;;;;;;;;;;;;;;;;23516:42;;23626:14;23615:7;:25;23611:77;;23682:6;23672:7;:16;;;;:::i;:::-;23642:9;:15;23652:4;23642:15;;;;;;;;;;;;;;;:27;23658:10;23642:27;;;;;;;;;;;;;;;:46;;;;23611:77;23452:248;23428:272;23725:7;:5;:7::i;:::-;23719:13;;:2;:13;;;;:32;;;;;23744:7;:5;:7::i;:::-;23736:15;;:4;:15;;;;23719:32;:57;;;;;23769:6;;;;;;;;;;;23755:21;;:2;:21;;;;23719:57;:80;;;;;23794:4;;;;;;;;;;;23780:19;;:2;:19;;;;23719:80;23716:291;;;23815:18;23861:5;23851:6;;23837:11;;:20;;;;:::i;:::-;23836:30;;;;:::i;:::-;23815:51;;23939:10;23929:6;23913:9;:13;23923:2;23913:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:36;;23905:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;23800:207;23716:291;24228:18;:16;:18::i;:::-;24201:9;:24;24219:4;24201:24;;;;;;;;;;;;;;;;:45;:73;;;;;24251:23;;;;;;;;;;;24250:24;24201:73;:98;;;;;24294:4;;;;;;;;;;;24278:21;;:4;:21;;;;24201:98;:123;;;;;24319:4;24303:21;;:4;:21;;;;24201:123;24197:176;;;24341:20;:18;:20::i;:::-;24197:176;24385:8;24396:25;24404:4;24410:2;24414:6;24396:7;:25::i;:::-;24385:36;;24432:19;24463:3;24454:6;:12;;;;:::i;:::-;24432:34;;24498:6;24479:9;:15;24489:4;24479:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;24669:14;24652:9;:13;24662:2;24652:13;;;;;;;;;;;;;;;;:31;;;;;;;;;;;24727:2;24712:34;;24721:4;24712:34;;;24731:14;24712:34;;;;;;:::i;:::-;;;;;;;;24769:1;24763:3;:7;24759:251;;;24858:3;24830:9;:24;24848:4;24830:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;24987:4;24964:34;;24973:4;24964:34;;;24994:3;24964:34;;;;;;:::i;:::-;;;;;;;;24759:251;25029:4;25022:11;;;;23291:1750;;;;;:::o;19069:26::-;;;;;;;;;;;;;:::o;18864:22::-;;;;:::o;1134:31::-;;;:::o;5515:179::-;5572:7;5616:16;5599:13;:33;:87;;5662:24;:22;:24::i;:::-;5599:87;;;5635:24;5599:87;5592:94;;5515:179;:::o;19870:80::-;19917:25;19923:10;19935:6;19917:5;:25::i;:::-;19870:80;:::o;19002:28::-;;;;;;;;;;;;;:::o;1396:44::-;;;;;;;;;;;;;;;;;:::o;9654:103::-;8892:13;:11;:13::i;:::-;9719:30:::1;9746:1;9719:18;:30::i;:::-;9654:103::o:0;19039:23::-;;;;;;;;;;;;;:::o;1822:41::-;;;;;;;;;;;;;;;;;:::o;9006:87::-;9052:7;9079:6;;;;;;;;;;;9072:13;;9006:87;:::o;1105:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18633:26::-;;;;;;;;;;;;;:::o;22711:136::-;22779:4;22803:36;22816:10;22828:2;22832:6;22803:12;:36::i;:::-;22796:43;;22711:136;;;;:::o;18594:32::-;;;;;;;;;;;;;:::o;18795:27::-;;;;:::o;18829:28::-;;;;:::o;3980:1527::-;4208:15;4196:8;:27;;4188:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4421:24;4448:827;4588:18;:16;:18::i;:::-;4718:167;4920:5;4960:7;5002:5;5042:6;:13;5049:5;5042:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;5092:8;4673:458;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4633:525;;;;;;4508:673;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4476:724;;;;;;5219:1;5239;5259;4448:827;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4421:854;;5328:1;5300:30;;:16;:30;;;;:59;;;;;5354:5;5334:25;;:16;:25;;;5300:59;5292:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;5434:5;5395:9;:27;5405:16;5395:27;;;;;;;;;;;;;;;:36;5423:7;5395:36;;;;;;;;;;;;;;;:44;;;;4396:1055;5484:7;5468:31;;5477:5;5468:31;;;5493:5;5468:31;;;;;;:::i;:::-;;;;;;;;3980:1527;;;;;;;:::o;1449:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9912:201::-;8892:13;:11;:13::i;:::-;10021:1:::1;10001:22;;:8;:22;;::::0;9993:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10077:28;10096:8;10077:18;:28::i;:::-;9912:201:::0;:::o;20085:231::-;8892:13;:11;:13::i;:::-;20149:11:::1;;;;;;;;;;;20148:12;20140:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20217:4;20203:11;;:18;;;;;;;;;;;;;;;;;;20244:4;20232:9;:16;;;;20272:4;20259:10;:17;;;;20292:16;;;;;;;;;;20085:231::o:0;20735:135::-;8892:13;:11;:13::i;:::-;20814:1:::1;20804:7;:11;20796:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;20855:7;20846:6;:16;;;;20735:135:::0;:::o;18555:32::-;;;;;;;;;;;;;:::o;20571:156::-;8892:13;:11;:13::i;:::-;20667:1:::1;20649:20;;:6;:20;;::::0;20641:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20713:6;20697:13;;:22;;;;;;;;;;;;;;;;;;20571:156:::0;:::o;9171:132::-;9246:12;:10;:12::i;:::-;9235:23;;:7;:5;:7::i;:::-;:23;;;9227:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:132::o;19958:117::-;20009:4;20053:5;20048:1;20034:11;;:15;;;;:::i;:::-;20033:25;;;;:::i;:::-;20026:32;;19958:117;:::o;21958:524::-;19721:4;19695:23;;:30;;;;;;;;;;;;;;;;;;22022:17:::1;22042:9;:24;22060:4;22042:24;;;;;;;;;;;;;;;;22022:44;;22096:21;22134:1;22120:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22096:40;;22165:4;22147;22152:1;22147:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22191:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22181:4;22186:1;22181:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22217:6;;;;;;;;;;;:57;;;22289:12;22316:1;22332:4;22359;22379:15;22217:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22418:13;;;;;;;;;;;:18;;22445:21;22418:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22009:473;;19774:5:::0;19748:23;;:31;;;;;;;;;;;;;;;;;;21958:524::o;21143:735::-;21222:4;21251:7;:5;:7::i;:::-;21243:15;;:4;:15;;;:32;;;;21268:7;:5;:7::i;:::-;21262:13;;:2;:13;;;21243:32;:57;;;;21295:4;21279:21;;:4;:21;;;21243:57;21239:632;;;21460:1;21453:8;;;;21239:632;21499:4;;;;;;;;;;;21483:21;;:4;:21;;;21479:392;;21600:6;21588:9;;21579:6;:18;;;;:::i;:::-;:27;;;;:::i;:::-;21572:34;;;;21479:392;21642:4;;;;;;;;;;;21628:19;;:2;:19;;;21624:247;;21747:6;21734:10;;21725:6;:19;;;;:::i;:::-;:28;;;;:::i;:::-;21718:35;;;;21624:247;21858:1;21851:8;;21143:735;;;;;;:::o;5702:457::-;5767:7;5868:95;6002:4;5986:22;;;;;;:::i;:::-;;;;;;;;6031:14;6068:13;6112:4;5835:301;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5807:344;;;;;;5787:364;;5702:457;:::o;6702:338::-;6794:6;6775:9;:15;6785:4;6775:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;6963:6;6948:11;;:21;;;;;;;;;;;7021:1;6998:34;;7007:4;6998:34;;;7025:6;6998:34;;;;;;:::i;:::-;;;;;;;;6702:338;;:::o;10273:191::-;10347:16;10366:6;;;;;;;;;;;10347:25;;10392:8;10383:6;;:17;;;;;;;;;;;;;;;;;;10447:8;10416:40;;10437:8;10416:40;;;;;;;;;;;;10336:128;10273:191;:::o;7715:98::-;7768:7;7795:10;7788:17;;7715:98;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:77::-;4890:7;4919:5;4908:16;;4853:77;;;:::o;4936:118::-;5023:24;5041:5;5023:24;:::i;:::-;5018:3;5011:37;4936:118;;:::o;5060:222::-;5153:4;5191:2;5180:9;5176:18;5168:26;;5204:71;5272:1;5261:9;5257:17;5248:6;5204:71;:::i;:::-;5060:222;;;;:::o;5288:329::-;5347:6;5396:2;5384:9;5375:7;5371:23;5367:32;5364:119;;;5402:79;;:::i;:::-;5364:119;5522:1;5547:53;5592:7;5583:6;5572:9;5568:22;5547:53;:::i;:::-;5537:63;;5493:117;5288:329;;;;:::o;5623:118::-;5710:24;5728:5;5710:24;:::i;:::-;5705:3;5698:37;5623:118;;:::o;5747:222::-;5840:4;5878:2;5867:9;5863:18;5855:26;;5891:71;5959:1;5948:9;5944:17;5935:6;5891:71;:::i;:::-;5747:222;;;;:::o;5975:329::-;6034:6;6083:2;6071:9;6062:7;6058:23;6054:32;6051:119;;;6089:79;;:::i;:::-;6051:119;6209:1;6234:53;6279:7;6270:6;6259:9;6255:22;6234:53;:::i;:::-;6224:63;;6180:117;5975:329;;;;:::o;6310:60::-;6338:3;6359:5;6352:12;;6310:60;;;:::o;6376:142::-;6426:9;6459:53;6477:34;6486:24;6504:5;6486:24;:::i;:::-;6477:34;:::i;:::-;6459:53;:::i;:::-;6446:66;;6376:142;;;:::o;6524:126::-;6574:9;6607:37;6638:5;6607:37;:::i;:::-;6594:50;;6524:126;;;:::o;6656:148::-;6728:9;6761:37;6792:5;6761:37;:::i;:::-;6748:50;;6656:148;;;:::o;6810:175::-;6919:59;6972:5;6919:59;:::i;:::-;6914:3;6907:72;6810:175;;:::o;6991:266::-;7106:4;7144:2;7133:9;7129:18;7121:26;;7157:93;7247:1;7236:9;7232:17;7223:6;7157:93;:::i;:::-;6991:266;;;;:::o;7263:151::-;7338:9;7371:37;7402:5;7371:37;:::i;:::-;7358:50;;7263:151;;;:::o;7420:181::-;7532:62;7588:5;7532:62;:::i;:::-;7527:3;7520:75;7420:181;;:::o;7607:272::-;7725:4;7763:2;7752:9;7748:18;7740:26;;7776:96;7869:1;7858:9;7854:17;7845:6;7776:96;:::i;:::-;7607:272;;;;:::o;7885:118::-;7956:22;7972:5;7956:22;:::i;:::-;7949:5;7946:33;7936:61;;7993:1;7990;7983:12;7936:61;7885:118;:::o;8009:135::-;8053:5;8091:6;8078:20;8069:29;;8107:31;8132:5;8107:31;:::i;:::-;8009:135;;;;:::o;8150:122::-;8223:24;8241:5;8223:24;:::i;:::-;8216:5;8213:35;8203:63;;8262:1;8259;8252:12;8203:63;8150:122;:::o;8278:139::-;8324:5;8362:6;8349:20;8340:29;;8378:33;8405:5;8378:33;:::i;:::-;8278:139;;;;:::o;8423:1199::-;8534:6;8542;8550;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8758:1;8783:53;8828:7;8819:6;8808:9;8804:22;8783:53;:::i;:::-;8773:63;;8729:117;8885:2;8911:53;8956:7;8947:6;8936:9;8932:22;8911:53;:::i;:::-;8901:63;;8856:118;9013:2;9039:53;9084:7;9075:6;9064:9;9060:22;9039:53;:::i;:::-;9029:63;;8984:118;9141:2;9167:53;9212:7;9203:6;9192:9;9188:22;9167:53;:::i;:::-;9157:63;;9112:118;9269:3;9296:51;9339:7;9330:6;9319:9;9315:22;9296:51;:::i;:::-;9286:61;;9240:117;9396:3;9423:53;9468:7;9459:6;9448:9;9444:22;9423:53;:::i;:::-;9413:63;;9367:119;9525:3;9552:53;9597:7;9588:6;9577:9;9573:22;9552:53;:::i;:::-;9542:63;;9496:119;8423:1199;;;;;;;;;;:::o;9628:474::-;9696:6;9704;9753:2;9741:9;9732:7;9728:23;9724:32;9721:119;;;9759:79;;:::i;:::-;9721:119;9879:1;9904:53;9949:7;9940:6;9929:9;9925:22;9904:53;:::i;:::-;9894:63;;9850:117;10006:2;10032:53;10077:7;10068:6;10057:9;10053:22;10032:53;:::i;:::-;10022:63;;9977:118;9628:474;;;;;:::o;10108:153::-;10185:9;10218:37;10249:5;10218:37;:::i;:::-;10205:50;;10108:153;;;:::o;10267:185::-;10381:64;10439:5;10381:64;:::i;:::-;10376:3;10369:77;10267:185;;:::o;10458:276::-;10578:4;10616:2;10605:9;10601:18;10593:26;;10629:98;10724:1;10713:9;10709:17;10700:6;10629:98;:::i;:::-;10458:276;;;;:::o;10740:180::-;10788:77;10785:1;10778:88;10885:4;10882:1;10875:15;10909:4;10906:1;10899:15;10926:320;10970:6;11007:1;11001:4;10997:12;10987:22;;11054:1;11048:4;11044:12;11075:18;11065:81;;11131:4;11123:6;11119:17;11109:27;;11065:81;11193:2;11185:6;11182:14;11162:18;11159:38;11156:84;;11212:18;;:::i;:::-;11156:84;10977:269;10926:320;;;:::o;11252:177::-;11392:29;11388:1;11380:6;11376:14;11369:53;11252:177;:::o;11435:366::-;11577:3;11598:67;11662:2;11657:3;11598:67;:::i;:::-;11591:74;;11674:93;11763:3;11674:93;:::i;:::-;11792:2;11787:3;11783:12;11776:19;;11435:366;;;:::o;11807:419::-;11973:4;12011:2;12000:9;11996:18;11988:26;;12060:9;12054:4;12050:20;12046:1;12035:9;12031:17;12024:47;12088:131;12214:4;12088:131;:::i;:::-;12080:139;;11807:419;;;:::o;12232:180::-;12280:77;12277:1;12270:88;12377:4;12374:1;12367:15;12401:4;12398:1;12391:15;12418:194;12458:4;12478:20;12496:1;12478:20;:::i;:::-;12473:25;;12512:20;12530:1;12512:20;:::i;:::-;12507:25;;12556:1;12553;12549:9;12541:17;;12580:1;12574:4;12571:11;12568:37;;;12585:18;;:::i;:::-;12568:37;12418:194;;;;:::o;12618:410::-;12658:7;12681:20;12699:1;12681:20;:::i;:::-;12676:25;;12715:20;12733:1;12715:20;:::i;:::-;12710:25;;12770:1;12767;12763:9;12792:30;12810:11;12792:30;:::i;:::-;12781:41;;12971:1;12962:7;12958:15;12955:1;12952:22;12932:1;12925:9;12905:83;12882:139;;13001:18;;:::i;:::-;12882:139;12666:362;12618:410;;;;:::o;13034:180::-;13082:77;13079:1;13072:88;13179:4;13176:1;13169:15;13203:4;13200:1;13193:15;13220:185;13260:1;13277:20;13295:1;13277:20;:::i;:::-;13272:25;;13311:20;13329:1;13311:20;:::i;:::-;13306:25;;13350:1;13340:35;;13355:18;;:::i;:::-;13340:35;13397:1;13394;13390:9;13385:14;;13220:185;;;;:::o;13411:191::-;13451:3;13470:20;13488:1;13470:20;:::i;:::-;13465:25;;13504:20;13522:1;13504:20;:::i;:::-;13499:25;;13547:1;13544;13540:9;13533:16;;13568:3;13565:1;13562:10;13559:36;;;13575:18;;:::i;:::-;13559:36;13411:191;;;;:::o;13608:228::-;13748:34;13744:1;13736:6;13732:14;13725:58;13817:11;13812:2;13804:6;13800:15;13793:36;13608:228;:::o;13842:366::-;13984:3;14005:67;14069:2;14064:3;14005:67;:::i;:::-;13998:74;;14081:93;14170:3;14081:93;:::i;:::-;14199:2;14194:3;14190:12;14183:19;;13842:366;;;:::o;14214:419::-;14380:4;14418:2;14407:9;14403:18;14395:26;;14467:9;14461:4;14457:20;14453:1;14442:9;14438:17;14431:47;14495:131;14621:4;14495:131;:::i;:::-;14487:139;;14214:419;;;:::o;14639:173::-;14779:25;14775:1;14767:6;14763:14;14756:49;14639:173;:::o;14818:366::-;14960:3;14981:67;15045:2;15040:3;14981:67;:::i;:::-;14974:74;;15057:93;15146:3;15057:93;:::i;:::-;15175:2;15170:3;15166:12;15159:19;;14818:366;;;:::o;15190:419::-;15356:4;15394:2;15383:9;15379:18;15371:26;;15443:9;15437:4;15433:20;15429:1;15418:9;15414:17;15407:47;15471:131;15597:4;15471:131;:::i;:::-;15463:139;;15190:419;;;:::o;15615:775::-;15848:4;15886:3;15875:9;15871:19;15863:27;;15900:71;15968:1;15957:9;15953:17;15944:6;15900:71;:::i;:::-;15981:72;16049:2;16038:9;16034:18;16025:6;15981:72;:::i;:::-;16063;16131:2;16120:9;16116:18;16107:6;16063:72;:::i;:::-;16145;16213:2;16202:9;16198:18;16189:6;16145:72;:::i;:::-;16227:73;16295:3;16284:9;16280:19;16271:6;16227:73;:::i;:::-;16310;16378:3;16367:9;16363:19;16354:6;16310:73;:::i;:::-;15615:775;;;;;;;;;:::o;16396:148::-;16498:11;16535:3;16520:18;;16396:148;;;;:::o;16550:214::-;16690:66;16686:1;16678:6;16674:14;16667:90;16550:214;:::o;16770:400::-;16930:3;16951:84;17033:1;17028:3;16951:84;:::i;:::-;16944:91;;17044:93;17133:3;17044:93;:::i;:::-;17162:1;17157:3;17153:11;17146:18;;16770:400;;;:::o;17176:79::-;17215:7;17244:5;17233:16;;17176:79;;;:::o;17261:157::-;17366:45;17386:24;17404:5;17386:24;:::i;:::-;17366:45;:::i;:::-;17361:3;17354:58;17261:157;;:::o;17424:663::-;17665:3;17687:148;17831:3;17687:148;:::i;:::-;17680:155;;17845:75;17916:3;17907:6;17845:75;:::i;:::-;17945:2;17940:3;17936:12;17929:19;;17958:75;18029:3;18020:6;17958:75;:::i;:::-;18058:2;18053:3;18049:12;18042:19;;18078:3;18071:10;;17424:663;;;;;:::o;18093:545::-;18266:4;18304:3;18293:9;18289:19;18281:27;;18318:71;18386:1;18375:9;18371:17;18362:6;18318:71;:::i;:::-;18399:68;18463:2;18452:9;18448:18;18439:6;18399:68;:::i;:::-;18477:72;18545:2;18534:9;18530:18;18521:6;18477:72;:::i;:::-;18559;18627:2;18616:9;18612:18;18603:6;18559:72;:::i;:::-;18093:545;;;;;;;:::o;18644:164::-;18784:16;18780:1;18772:6;18768:14;18761:40;18644:164;:::o;18814:366::-;18956:3;18977:67;19041:2;19036:3;18977:67;:::i;:::-;18970:74;;19053:93;19142:3;19053:93;:::i;:::-;19171:2;19166:3;19162:12;19155:19;;18814:366;;;:::o;19186:419::-;19352:4;19390:2;19379:9;19375:18;19367:26;;19439:9;19433:4;19429:20;19425:1;19414:9;19410:17;19403:47;19467:131;19593:4;19467:131;:::i;:::-;19459:139;;19186:419;;;:::o;19611:225::-;19751:34;19747:1;19739:6;19735:14;19728:58;19820:8;19815:2;19807:6;19803:15;19796:33;19611:225;:::o;19842:366::-;19984:3;20005:67;20069:2;20064:3;20005:67;:::i;:::-;19998:74;;20081:93;20170:3;20081:93;:::i;:::-;20199:2;20194:3;20190:12;20183:19;;19842:366;;;:::o;20214:419::-;20380:4;20418:2;20407:9;20403:18;20395:26;;20467:9;20461:4;20457:20;20453:1;20442:9;20438:17;20431:47;20495:131;20621:4;20495:131;:::i;:::-;20487:139;;20214:419;;;:::o;20639:165::-;20779:17;20775:1;20767:6;20763:14;20756:41;20639:165;:::o;20810:366::-;20952:3;20973:67;21037:2;21032:3;20973:67;:::i;:::-;20966:74;;21049:93;21138:3;21049:93;:::i;:::-;21167:2;21162:3;21158:12;21151:19;;20810:366;;;:::o;21182:419::-;21348:4;21386:2;21375:9;21371:18;21363:26;;21435:9;21429:4;21425:20;21421:1;21410:9;21406:17;21399:47;21463:131;21589:4;21463:131;:::i;:::-;21455:139;;21182:419;;;:::o;21607:162::-;21747:14;21743:1;21735:6;21731:14;21724:38;21607:162;:::o;21775:366::-;21917:3;21938:67;22002:2;21997:3;21938:67;:::i;:::-;21931:74;;22014:93;22103:3;22014:93;:::i;:::-;22132:2;22127:3;22123:12;22116:19;;21775:366;;;:::o;22147:419::-;22313:4;22351:2;22340:9;22336:18;22328:26;;22400:9;22394:4;22390:20;22386:1;22375:9;22371:17;22364:47;22428:131;22554:4;22428:131;:::i;:::-;22420:139;;22147:419;;;:::o;22572:182::-;22712:34;22708:1;22700:6;22696:14;22689:58;22572:182;:::o;22760:366::-;22902:3;22923:67;22987:2;22982:3;22923:67;:::i;:::-;22916:74;;22999:93;23088:3;22999:93;:::i;:::-;23117:2;23112:3;23108:12;23101:19;;22760:366;;;:::o;23132:419::-;23298:4;23336:2;23325:9;23321:18;23313:26;;23385:9;23379:4;23375:20;23371:1;23360:9;23356:17;23349:47;23413:131;23539:4;23413:131;:::i;:::-;23405:139;;23132:419;;;:::o;23557:180::-;23605:77;23602:1;23595:88;23702:4;23699:1;23692:15;23726:4;23723:1;23716:15;23743:180;23791:77;23788:1;23781:88;23888:4;23885:1;23878:15;23912:4;23909:1;23902:15;23929:143;23986:5;24017:6;24011:13;24002:22;;24033:33;24060:5;24033:33;:::i;:::-;23929:143;;;;:::o;24078:351::-;24148:6;24197:2;24185:9;24176:7;24172:23;24168:32;24165:119;;;24203:79;;:::i;:::-;24165:119;24323:1;24348:64;24404:7;24395:6;24384:9;24380:22;24348:64;:::i;:::-;24338:74;;24294:128;24078:351;;;;:::o;24435:85::-;24480:7;24509:5;24498:16;;24435:85;;;:::o;24526:158::-;24584:9;24617:61;24635:42;24644:32;24670:5;24644:32;:::i;:::-;24635:42;:::i;:::-;24617:61;:::i;:::-;24604:74;;24526:158;;;:::o;24690:147::-;24785:45;24824:5;24785:45;:::i;:::-;24780:3;24773:58;24690:147;;:::o;24843:114::-;24910:6;24944:5;24938:12;24928:22;;24843:114;;;:::o;24963:184::-;25062:11;25096:6;25091:3;25084:19;25136:4;25131:3;25127:14;25112:29;;24963:184;;;;:::o;25153:132::-;25220:4;25243:3;25235:11;;25273:4;25268:3;25264:14;25256:22;;25153:132;;;:::o;25291:108::-;25368:24;25386:5;25368:24;:::i;:::-;25363:3;25356:37;25291:108;;:::o;25405:179::-;25474:10;25495:46;25537:3;25529:6;25495:46;:::i;:::-;25573:4;25568:3;25564:14;25550:28;;25405:179;;;;:::o;25590:113::-;25660:4;25692;25687:3;25683:14;25675:22;;25590:113;;;:::o;25739:732::-;25858:3;25887:54;25935:5;25887:54;:::i;:::-;25957:86;26036:6;26031:3;25957:86;:::i;:::-;25950:93;;26067:56;26117:5;26067:56;:::i;:::-;26146:7;26177:1;26162:284;26187:6;26184:1;26181:13;26162:284;;;26263:6;26257:13;26290:63;26349:3;26334:13;26290:63;:::i;:::-;26283:70;;26376:60;26429:6;26376:60;:::i;:::-;26366:70;;26222:224;26209:1;26206;26202:9;26197:14;;26162:284;;;26166:14;26462:3;26455:10;;25863:608;;;25739:732;;;;:::o;26477:831::-;26740:4;26778:3;26767:9;26763:19;26755:27;;26792:71;26860:1;26849:9;26845:17;26836:6;26792:71;:::i;:::-;26873:80;26949:2;26938:9;26934:18;26925:6;26873:80;:::i;:::-;27000:9;26994:4;26990:20;26985:2;26974:9;26970:18;26963:48;27028:108;27131:4;27122:6;27028:108;:::i;:::-;27020:116;;27146:72;27214:2;27203:9;27199:18;27190:6;27146:72;:::i;:::-;27228:73;27296:3;27285:9;27281:19;27272:6;27228:73;:::i;:::-;26477:831;;;;;;;;:::o;27314:147::-;27415:11;27452:3;27437:18;;27314:147;;;;:::o;27467:114::-;;:::o;27587:398::-;27746:3;27767:83;27848:1;27843:3;27767:83;:::i;:::-;27760:90;;27859:93;27948:3;27859:93;:::i;:::-;27977:1;27972:3;27968:11;27961:18;;27587:398;;;:::o;27991:379::-;28175:3;28197:147;28340:3;28197:147;:::i;:::-;28190:154;;28361:3;28354:10;;27991:379;;;:::o;28376:144::-;28428:4;28451:3;28443:11;;28474:3;28471:1;28464:14;28508:4;28505:1;28495:18;28487:26;;28376:144;;;:::o;28548:878::-;28653:3;28690:5;28684:12;28719:36;28745:9;28719:36;:::i;:::-;28771:88;28852:6;28847:3;28771:88;:::i;:::-;28764:95;;28890:1;28879:9;28875:17;28906:1;28901:166;;;;29081:1;29076:344;;;;28868:552;;28901:166;28985:4;28981:9;28970;28966:25;28961:3;28954:38;29047:6;29040:14;29033:22;29025:6;29021:35;29016:3;29012:45;29005:52;;28901:166;;29076:344;29143:41;29178:5;29143:41;:::i;:::-;29206:1;29220:154;29234:6;29231:1;29228:13;29220:154;;;29308:7;29302:14;29298:1;29293:3;29289:11;29282:35;29358:1;29349:7;29345:15;29334:26;;29256:4;29253:1;29249:12;29244:17;;29220:154;;;29403:6;29398:3;29394:16;29387:23;;29083:337;;28868:552;;28657:769;;28548:878;;;;:::o;29432:273::-;29563:3;29585:94;29675:3;29666:6;29585:94;:::i;:::-;29578:101;;29696:3;29689:10;;29432:273;;;;:::o;29711:664::-;29916:4;29954:3;29943:9;29939:19;29931:27;;29968:71;30036:1;30025:9;30021:17;30012:6;29968:71;:::i;:::-;30049:72;30117:2;30106:9;30102:18;30093:6;30049:72;:::i;:::-;30131;30199:2;30188:9;30184:18;30175:6;30131:72;:::i;:::-;30213;30281:2;30270:9;30266:18;30257:6;30213:72;:::i;:::-;30295:73;30363:3;30352:9;30348:19;30339:6;30295:73;:::i;:::-;29711:664;;;;;;;;:::o
Swarm Source
ipfs://a799c5fb00900af27ae4fc2a51ce5dd290147f79bfea5e8322fa9b594598cb6a
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.