ETH Price: $1,881.23 (-12.26%)
 

Overview

Max Total Supply

1,000,000,000 CNY

Holders

1

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CanaryCoin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Canary.sol
// SPDX-License-Identifier: MIT

/*
Because sometimes 'Production' is just another phrase for 'Our Largest Beta Test!' - Canary

Welcome to Canary - where a splash of humor meets a surge of innovation! 
Designed with a twinkle in our eyes and a robust roadmap in our hands, Canary is not your everyday meme Coin. 
It's a hilariously serious, technology-driven mechanism to pre-test our next big product. 
Canary Coin embodies our philosophy that there's nothing quite as thrilling - or informative - as testing in live production.

Backed by a myriad of robust features, our Coin doesn't just chirp; it sings tunes of progress, foresight, and unorthodox strategy. 
After all, if you're going to fail, why not fail fast, iterate faster, and have a hearty laugh along the way? 
The biggest production stage in the world is waiting for us - let's embrace the chaos with Canary!

Telegram: https://t.me/CanaryCoin

Features:
- Launch protection
- Base Buy/Sell tax: 5%
- MaxTx: 1%
- MaxWallet: 2%
- Trade tax: 0% (Between wallets)
- Enable/Disable Base tax (For marketing and promotions)
- RenounceOwnership

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@
@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@
@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@
@@@@@@@,,,,,,,,,,,,,,,,@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@
@@@@@,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,@@@@
@@@@,,,,,,,,,,,,@@@@@@@@@@@@,,,@@@@@#,,,,,,,,,,,,,,,,,,,,,,,,@@@
@@@,,,,,,,,,,,@@@@@@@@@@@@@@,,,@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,@@
@@,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,@
@,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@/,,,,,,,,,,,,,,,,,,,,,,,,,,
@,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,
@,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,
@,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,
@,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,@
@@,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,@
@@@,,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,@@
@@@@#,,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,@@@@
@@@@@@,,,,,,,,,,,,,,(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@,,,,,,,,,,,,,,,,,(@@@@@@@@@@@@@,,,,,,@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@
*/

pragma solidity 0.8.19;

//CAUTION
//This version of SafeMath should only be used with Solidity 0.8 or later,
//because it relies on the compiler's built in overflow checks.
//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount)external returns (bool);
    function allowance(address owner, address spender)external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender,address recipient,uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner,address indexed spender,uint256 value);
}

//https://github.com/Uniswap/v2-core/blob/master/contracts/interfaces/IUniswapV2Factory.sol
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

//https://github.com/Uniswap/v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router02.sol
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract CanaryCoin is IERC20, Ownable {
    
    using SafeMath for uint256;
    string private _name = "Canary";
    string private _symbol = "CNY";
    uint8 private _decimals = 18;
    
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    
    uint256 internal _totalSupply = 1000000000*10**18; 
    uint256 public _maxTxAmount = 10000000*10**18; //1%
    uint256 public _maxWalletSize = 20000000*10**18; //2%
    
    mapping(address => bool) private isExcludedFromTax;
    
    uint256 public _buyTax = 500; //  5%
    uint256 public _sellTax = 500; // 5%
    address public taxWallet = 0xa0e230B8E6A2E0b8a0D4C57a78C3D7e9D7dAA2e3;  //Tax wallet
    uint256 public tradingStartTime;
    address private uniswapV2Pair;
    bool private tradingOpen;
    IUniswapV2Router02 private uniswapV2Router;
    bool private swapEnabled = false;
    bool private taxEnabled = true;
    uint256 public _inbetweenTax_ = 0; // 0%
    uint256 public _buyTaxTotal;
    uint256 public _sellTaxTotal;
    uint256 public _inbetweenTaxTotal;    
    
    constructor() {
        isExcludedFromTax[msg.sender] = true;
        isExcludedFromTax[address(this)] = true;
        isExcludedFromTax[taxWallet] = true; //Add multiple times with different wallets that need to be excluded.
        _balances[msg.sender] = _totalSupply;           
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    function decimals() public view returns (uint8) {
        return _decimals;
    }
    function totalSupply() public override view returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public override view returns (uint256) {
         return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public override virtual returns (bool) {
       _transfer(msg.sender,recipient,amount);
        return true;
    }
    function allowance(address owner, address spender) public override view returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint256 amount) public override virtual returns (bool) {
        _transfer(sender,recipient,amount);       
        _approve(sender,msg.sender,_allowances[sender][msg.sender].sub( amount,"ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    //Transfer transactions
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
        require(balanceOf(recipient) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
        uint256 transferAmount = amount;
     if(taxEnabled){
         updateTaxRate();
            if(isExcludedFromTax[sender] && isExcludedFromTax[recipient]){
                transferAmount = amount;
            }
            if(!isExcludedFromTax[sender] && !isExcludedFromTax[recipient]){
                transferAmount = betweenTax(sender,amount);
            }
            if(isExcludedFromTax[sender] && !isExcludedFromTax[recipient]){
                transferAmount = BuyTax(sender,amount);
            }
            if(!isExcludedFromTax[sender] && isExcludedFromTax[recipient]){
                transferAmount = SellTax(sender,amount);       
            }   
        }
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(transferAmount);    
        emit Transfer(sender, recipient, transferAmount);
    }
    
    //Buy tax on transactions
    function BuyTax(address account, uint256 amount) private returns (uint256) {
        uint256 transferAmount = amount;
        uint256 buyTax = amount.mul(_buyTax).div(10000); //amount * 500 / 10000 = 5% base tax 
        if(buyTax > 0){
            transferAmount = transferAmount.sub(buyTax);
            _balances[address(taxWallet)] = _balances[address(taxWallet)].add(buyTax);
            _buyTaxTotal = _buyTaxTotal.add(buyTax);
            emit Transfer(account,address(taxWallet),buyTax);
        }  
        return transferAmount;
    }

    //Sell tax on transactions
    function SellTax(address account, uint256 amount) private  returns (uint256) {      
        uint256 transferAmount = amount;
        uint256 sellTax = amount.mul(_sellTax).div(10000);  //amount * 500 / 10000 = 5% base tax 
        if (sellTax > 0){
            transferAmount = transferAmount.sub(sellTax);
            _balances[address(taxWallet)] = _balances[address(taxWallet)].add(sellTax);
            _sellTaxTotal = _sellTaxTotal.add(sellTax);
            emit Transfer(account,address(taxWallet),sellTax);
        }
        return transferAmount;
    }

    //Tax on transactions between traders/ wallets
    function betweenTax(address account, uint256 amount) private  returns (uint256) {
        uint256 transferAmount = amount;
        uint256 _inbetweenTax = amount.mul(_inbetweenTax_).div(10000); // amount * 0 / 10000 = 0% base tax 
        if (_inbetweenTax > 0){
            transferAmount = transferAmount.sub(_inbetweenTax);
            _balances[address(taxWallet)] = _balances[address(taxWallet)].add(_inbetweenTax);
            _inbetweenTaxTotal = _inbetweenTaxTotal.add(_inbetweenTax);
            emit Transfer(account,address(taxWallet),_inbetweenTax);
        }
        return transferAmount;
    }

    /*
       Launch Taxes: 
       - First 10 minutes tax is 45%
       - After 10 minutes tax is 25%
       - After 20 minutes tax is 5% = Base tax
    */
     function updateTaxRate() internal {
        if (block.timestamp <= tradingStartTime + 10 minutes ) { // 1st 10 minutes tax will be 45%
            if (_buyTax != 4500) { //45%
                _buyTax = 4500;
            }
            if (_sellTax != 4500) {
                _sellTax = 4500;
            }
        }
        else if (block.timestamp  >= tradingStartTime + 10 minutes && block.timestamp  <= tradingStartTime + 20 minutes  ) { // after 10 minutes tax will be 25%
             if (_buyTax != 2500) {//25%
                _buyTax = 2500;
            }
            if (_sellTax != 2500) {
                _sellTax = 2500;
            }
        }
        else if (block.timestamp  >= tradingStartTime + 20 minutes) { // after 20 minutes tax will be 5% = base tax
              if (_buyTax != 500) {//5%
                _buyTax = 500;
            }
            if (_sellTax != 500) {
                _sellTax = 500;
            }
        }
    }
    
    //Will open the trading, create pair and fill LP
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _totalSupply);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        isExcludedFromTax[address(uniswapV2Router)] = true;
        swapEnabled = true;
        tradingOpen = true;
        tradingStartTime = block.timestamp;
    }
    
    //Enables base tax on transactions
    function taxEnable() public onlyOwner {
        taxEnabled = true;
    }
    //Disables base tax on transactions, used for marketing and promotions.
    function taxDisable() public onlyOwner {
        taxEnabled = false;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTaxTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_inbetweenTaxTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_inbetweenTax_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280600681526020017f43616e6172790000000000000000000000000000000000000000000000000000815250600190816200004a9190620006cc565b506040518060400160405280600381526020017f434e59000000000000000000000000000000000000000000000000000000000081525060029081620000919190620006cc565b506012600360006101000a81548160ff021916908360ff1602179055506b033b2e3c9fd0803ce80000006006556a084595161401484a0000006007556a108b2a2c280290940000006008556101f4600a556101f4600b5573a0e230b8e6a2e0b8a0d4c57a78c3d7e9d7daa2e3600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60146101000a81548160ff0219169083151502179055506001600f60156101000a81548160ff02191690831515021790555060006010553480156200018557600080fd5b50620001a66200019a6200038660201b60201c565b6200038e60201b60201c565b6001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600654600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620003789190620007c4565b60405180910390a3620007e1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004d457607f821691505b602082108103620004ea57620004e96200048c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000515565b62000560868362000515565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005ad620005a7620005a18462000578565b62000582565b62000578565b9050919050565b6000819050919050565b620005c9836200058c565b620005e1620005d882620005b4565b84845462000522565b825550505050565b600090565b620005f8620005e9565b62000605818484620005be565b505050565b5b818110156200062d5762000621600082620005ee565b6001810190506200060b565b5050565b601f8211156200067c576200064681620004f0565b620006518462000505565b8101602085101562000661578190505b62000679620006708562000505565b8301826200060a565b50505b505050565b600082821c905092915050565b6000620006a16000198460080262000681565b1980831691505092915050565b6000620006bc83836200068e565b9150826002028217905092915050565b620006d78262000452565b67ffffffffffffffff811115620006f357620006f26200045d565b5b620006ff8254620004bb565b6200070c82828562000631565b600060209050601f8311600181146200074457600084156200072f578287015190505b6200073b8582620006ae565b865550620007ab565b601f1984166200075486620004f0565b60005b828110156200077e5784890151825560018201915060208501945060208101905062000757565b868310156200079e57848901516200079a601f8916826200068e565b8355505b6001600288020188555050505b505050505050565b620007be8162000578565b82525050565b6000602082019050620007db6000830184620007b3565b92915050565b6129ae80620007f16000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637d1db4a5116100de57806394951ae711610097578063c9567bf911610071578063c9567bf9146103fa578063ca9ec19914610404578063dd62ed3e14610422578063f2fde38b1461045257610173565b806394951ae71461038e57806395d89b41146103ac578063a9059cbb146103ca57610173565b80637d1db4a514610302578063810aa0e614610320578063821944161461032a5780638da5cb5b146103345780638dc16e54146103525780638f9a55c01461037057610173565b806342a110951161013057806342a110951461025057806352498a5f1461026e57806370a082311461028c57806370b7b80c146102bc578063715018a6146102da57806373dda92c146102e457610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e45780632dc0562d14610214578063313ce56714610232575b600080fd5b61018061046e565b60405161018d9190611eb6565b60405180910390f35b6101b060048036038101906101ab9190611f71565b610500565b6040516101bd9190611fcc565b60405180910390f35b6101ce610517565b6040516101db9190611ff6565b60405180910390f35b6101fe60048036038101906101f99190612011565b610521565b60405161020b9190611fcc565b60405180910390f35b61021c6105ec565b6040516102299190612073565b60405180910390f35b61023a610612565b60405161024791906120aa565b60405180910390f35b610258610629565b6040516102659190611ff6565b60405180910390f35b61027661062f565b6040516102839190611ff6565b60405180910390f35b6102a660048036038101906102a191906120c5565b610635565b6040516102b39190611ff6565b60405180910390f35b6102c461067e565b6040516102d19190611ff6565b60405180910390f35b6102e2610684565b005b6102ec610698565b6040516102f99190611ff6565b60405180910390f35b61030a61069e565b6040516103179190611ff6565b60405180910390f35b6103286106a4565b005b6103326106c9565b005b61033c6106ee565b6040516103499190612073565b60405180910390f35b61035a610717565b6040516103679190611ff6565b60405180910390f35b61037861071d565b6040516103859190611ff6565b60405180910390f35b610396610723565b6040516103a39190611ff6565b60405180910390f35b6103b4610729565b6040516103c19190611eb6565b60405180910390f35b6103e460048036038101906103df9190611f71565b6107bb565b6040516103f19190611fcc565b60405180910390f35b6104026107d2565b005b61040c610ce4565b6040516104199190611ff6565b60405180910390f35b61043c600480360381019061043791906120f2565b610cea565b6040516104499190611ff6565b60405180910390f35b61046c600480360381019061046791906120c5565b610d71565b005b60606001805461047d90612161565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990612161565b80156104f65780601f106104cb576101008083540402835291602001916104f6565b820191906000526020600020905b8154815290600101906020018083116104d957829003601f168201915b5050505050905090565b600061050d338484610df4565b6001905092915050565b6000600654905090565b600061052e848484610fbd565b6105e184336105dc8560405180606001604052806028815260200161295160289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115bb9092919063ffffffff16565b610df4565b600190509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b600a5481565b60135481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d5481565b61068c611610565b610696600061168e565b565b60115481565b60075481565b6106ac611610565b6000600f60156101000a81548160ff021916908315150217905550565b6106d1611610565b6001600f60156101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60085481565b60105481565b60606002805461073890612161565b80601f016020809104026020016040519081016040528092919081815260200182805461076490612161565b80156107b15780601f10610786576101008083540402835291602001916107b1565b820191906000526020600020905b81548152906001019060200180831161079457829003601f168201915b5050505050905090565b60006107c8338484610fbd565b6001905092915050565b6107da611610565b600e60149054906101000a900460ff161561082a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610821906121de565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108ae30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654610df4565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f9190612213565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190612213565b6040518363ffffffff1660e01b8152600401610a09929190612240565b6020604051808303816000875af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c9190612213565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610ad530610635565b600080610ae06106ee565b426040518863ffffffff1660e01b8152600401610b02969594939291906122ae565b60606040518083038185885af1158015610b20573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b459190612324565b505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610be7929190612377565b6020604051808303816000875af1158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a91906123cc565b50600160096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff02191690831515021790555042600d81905550565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d79611610565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf9061246b565b60405180910390fd5b610df18161168e565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a906124fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec99061258f565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fb09190611ff6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361102c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102390612621565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906126b3565b60405180910390fd5b6007548111156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d79061271f565b60405180910390fd5b600854816110ed84610635565b6110f7919061276e565b1115611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f906127ee565b60405180910390fd5b6000819050600f60159054906101000a900460ff16156114265761115a611752565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156111fc5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611205578190505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112a95750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156112bb576112b8848361183e565b90505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561135e5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113705761136d8483611a16565b90505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114135750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611425576114228483611bee565b90505b5b61147882600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061150d81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115ad9190611ff6565b60405180910390a350505050565b6000838311158290611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa9190611eb6565b60405180910390fd5b5082840390509392505050565b611618611df2565b73ffffffffffffffffffffffffffffffffffffffff166116366106ee565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116839061285a565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610258600d54611762919061276e565b421161179757611194600a541461177d57611194600a819055505b611194600b541461179257611194600b819055505b61183c565b610258600d546117a7919061276e565b42101580156117c557506104b0600d546117c1919061276e565b4211155b156117f9576109c4600a54146117df576109c4600a819055505b6109c4600b54146117f4576109c4600b819055505b61183b565b6104b0600d54611809919061276e565b421061183a576101f4600a5414611824576101f4600a819055505b6101f4600b5414611839576101f4600b819055505b5b5b5b565b600080829050600061186f61271061186160105487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611a0b5761188d8183611dc690919063ffffffff16565b91506119038160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061197d81601354611ddc90919063ffffffff16565b601381905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a029190611ff6565b60405180910390a35b819250505092915050565b6000808290506000611a47612710611a39600a5487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611be357611a658183611dc690919063ffffffff16565b9150611adb8160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5581601154611ddc90919063ffffffff16565b601181905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bda9190611ff6565b60405180910390a35b819250505092915050565b6000808290506000611c1f612710611c11600b5487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611dbb57611c3d8183611dc690919063ffffffff16565b9150611cb38160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d2d81601254611ddc90919063ffffffff16565b601281905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db29190611ff6565b60405180910390a35b819250505092915050565b60008183611dd4919061287a565b905092915050565b60008183611dea919061276e565b905092915050565b600033905090565b60008183611e0891906128ae565b905092915050565b60008183611e1e919061291f565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e60578082015181840152602081019050611e45565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e8882611e26565b611e928185611e31565b9350611ea2818560208601611e42565b611eab81611e6c565b840191505092915050565b60006020820190508181036000830152611ed08184611e7d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f0882611edd565b9050919050565b611f1881611efd565b8114611f2357600080fd5b50565b600081359050611f3581611f0f565b92915050565b6000819050919050565b611f4e81611f3b565b8114611f5957600080fd5b50565b600081359050611f6b81611f45565b92915050565b60008060408385031215611f8857611f87611ed8565b5b6000611f9685828601611f26565b9250506020611fa785828601611f5c565b9150509250929050565b60008115159050919050565b611fc681611fb1565b82525050565b6000602082019050611fe16000830184611fbd565b92915050565b611ff081611f3b565b82525050565b600060208201905061200b6000830184611fe7565b92915050565b60008060006060848603121561202a57612029611ed8565b5b600061203886828701611f26565b935050602061204986828701611f26565b925050604061205a86828701611f5c565b9150509250925092565b61206d81611efd565b82525050565b60006020820190506120886000830184612064565b92915050565b600060ff82169050919050565b6120a48161208e565b82525050565b60006020820190506120bf600083018461209b565b92915050565b6000602082840312156120db576120da611ed8565b5b60006120e984828501611f26565b91505092915050565b6000806040838503121561210957612108611ed8565b5b600061211785828601611f26565b925050602061212885828601611f26565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061217957607f821691505b60208210810361218c5761218b612132565b5b50919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006121c8601783611e31565b91506121d382612192565b602082019050919050565b600060208201905081810360008301526121f7816121bb565b9050919050565b60008151905061220d81611f0f565b92915050565b60006020828403121561222957612228611ed8565b5b6000612237848285016121fe565b91505092915050565b60006040820190506122556000830185612064565b6122626020830184612064565b9392505050565b6000819050919050565b6000819050919050565b600061229861229361228e84612269565b612273565b611f3b565b9050919050565b6122a88161227d565b82525050565b600060c0820190506122c36000830189612064565b6122d06020830188611fe7565b6122dd604083018761229f565b6122ea606083018661229f565b6122f76080830185612064565b61230460a0830184611fe7565b979650505050505050565b60008151905061231e81611f45565b92915050565b60008060006060848603121561233d5761233c611ed8565b5b600061234b8682870161230f565b935050602061235c8682870161230f565b925050604061236d8682870161230f565b9150509250925092565b600060408201905061238c6000830185612064565b6123996020830184611fe7565b9392505050565b6123a981611fb1565b81146123b457600080fd5b50565b6000815190506123c6816123a0565b92915050565b6000602082840312156123e2576123e1611ed8565b5b60006123f0848285016123b7565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612455602683611e31565b9150612460826123f9565b604082019050919050565b6000602082019050818103600083015261248481612448565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006124e7602483611e31565b91506124f28261248b565b604082019050919050565b60006020820190508181036000830152612516816124da565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612579602283611e31565b91506125848261251d565b604082019050919050565b600060208201905081810360008301526125a88161256c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061260b602583611e31565b9150612616826125af565b604082019050919050565b6000602082019050818103600083015261263a816125fe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061269d602383611e31565b91506126a882612641565b604082019050919050565b600060208201905081810360008301526126cc81612690565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000612709601883611e31565b9150612714826126d3565b602082019050919050565b60006020820190508181036000830152612738816126fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061277982611f3b565b915061278483611f3b565b925082820190508082111561279c5761279b61273f565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006127d8601a83611e31565b91506127e3826127a2565b602082019050919050565b60006020820190508181036000830152612807816127cb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612844602083611e31565b915061284f8261280e565b602082019050919050565b6000602082019050818103600083015261287381612837565b9050919050565b600061288582611f3b565b915061289083611f3b565b92508282039050818111156128a8576128a761273f565b5b92915050565b60006128b982611f3b565b91506128c483611f3b565b92508282026128d281611f3b565b915082820484148315176128e9576128e861273f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061292a82611f3b565b915061293583611f3b565b925082612945576129446128f0565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122062c9e26f022b9b8ecc697df2104778aff800b34ef1a330a53addc728df023b8d64736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c80637d1db4a5116100de57806394951ae711610097578063c9567bf911610071578063c9567bf9146103fa578063ca9ec19914610404578063dd62ed3e14610422578063f2fde38b1461045257610173565b806394951ae71461038e57806395d89b41146103ac578063a9059cbb146103ca57610173565b80637d1db4a514610302578063810aa0e614610320578063821944161461032a5780638da5cb5b146103345780638dc16e54146103525780638f9a55c01461037057610173565b806342a110951161013057806342a110951461025057806352498a5f1461026e57806370a082311461028c57806370b7b80c146102bc578063715018a6146102da57806373dda92c146102e457610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e45780632dc0562d14610214578063313ce56714610232575b600080fd5b61018061046e565b60405161018d9190611eb6565b60405180910390f35b6101b060048036038101906101ab9190611f71565b610500565b6040516101bd9190611fcc565b60405180910390f35b6101ce610517565b6040516101db9190611ff6565b60405180910390f35b6101fe60048036038101906101f99190612011565b610521565b60405161020b9190611fcc565b60405180910390f35b61021c6105ec565b6040516102299190612073565b60405180910390f35b61023a610612565b60405161024791906120aa565b60405180910390f35b610258610629565b6040516102659190611ff6565b60405180910390f35b61027661062f565b6040516102839190611ff6565b60405180910390f35b6102a660048036038101906102a191906120c5565b610635565b6040516102b39190611ff6565b60405180910390f35b6102c461067e565b6040516102d19190611ff6565b60405180910390f35b6102e2610684565b005b6102ec610698565b6040516102f99190611ff6565b60405180910390f35b61030a61069e565b6040516103179190611ff6565b60405180910390f35b6103286106a4565b005b6103326106c9565b005b61033c6106ee565b6040516103499190612073565b60405180910390f35b61035a610717565b6040516103679190611ff6565b60405180910390f35b61037861071d565b6040516103859190611ff6565b60405180910390f35b610396610723565b6040516103a39190611ff6565b60405180910390f35b6103b4610729565b6040516103c19190611eb6565b60405180910390f35b6103e460048036038101906103df9190611f71565b6107bb565b6040516103f19190611fcc565b60405180910390f35b6104026107d2565b005b61040c610ce4565b6040516104199190611ff6565b60405180910390f35b61043c600480360381019061043791906120f2565b610cea565b6040516104499190611ff6565b60405180910390f35b61046c600480360381019061046791906120c5565b610d71565b005b60606001805461047d90612161565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990612161565b80156104f65780601f106104cb576101008083540402835291602001916104f6565b820191906000526020600020905b8154815290600101906020018083116104d957829003601f168201915b5050505050905090565b600061050d338484610df4565b6001905092915050565b6000600654905090565b600061052e848484610fbd565b6105e184336105dc8560405180606001604052806028815260200161295160289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115bb9092919063ffffffff16565b610df4565b600190509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b600a5481565b60135481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d5481565b61068c611610565b610696600061168e565b565b60115481565b60075481565b6106ac611610565b6000600f60156101000a81548160ff021916908315150217905550565b6106d1611610565b6001600f60156101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60085481565b60105481565b60606002805461073890612161565b80601f016020809104026020016040519081016040528092919081815260200182805461076490612161565b80156107b15780601f10610786576101008083540402835291602001916107b1565b820191906000526020600020905b81548152906001019060200180831161079457829003601f168201915b5050505050905090565b60006107c8338484610fbd565b6001905092915050565b6107da611610565b600e60149054906101000a900460ff161561082a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610821906121de565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108ae30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654610df4565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f9190612213565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190612213565b6040518363ffffffff1660e01b8152600401610a09929190612240565b6020604051808303816000875af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c9190612213565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610ad530610635565b600080610ae06106ee565b426040518863ffffffff1660e01b8152600401610b02969594939291906122ae565b60606040518083038185885af1158015610b20573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b459190612324565b505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610be7929190612377565b6020604051808303816000875af1158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a91906123cc565b50600160096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff02191690831515021790555042600d81905550565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d79611610565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf9061246b565b60405180910390fd5b610df18161168e565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a906124fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec99061258f565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fb09190611ff6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361102c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102390612621565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906126b3565b60405180910390fd5b6007548111156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d79061271f565b60405180910390fd5b600854816110ed84610635565b6110f7919061276e565b1115611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f906127ee565b60405180910390fd5b6000819050600f60159054906101000a900460ff16156114265761115a611752565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156111fc5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611205578190505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112a95750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156112bb576112b8848361183e565b90505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561135e5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113705761136d8483611a16565b90505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114135750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611425576114228483611bee565b90505b5b61147882600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061150d81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115ad9190611ff6565b60405180910390a350505050565b6000838311158290611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa9190611eb6565b60405180910390fd5b5082840390509392505050565b611618611df2565b73ffffffffffffffffffffffffffffffffffffffff166116366106ee565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116839061285a565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610258600d54611762919061276e565b421161179757611194600a541461177d57611194600a819055505b611194600b541461179257611194600b819055505b61183c565b610258600d546117a7919061276e565b42101580156117c557506104b0600d546117c1919061276e565b4211155b156117f9576109c4600a54146117df576109c4600a819055505b6109c4600b54146117f4576109c4600b819055505b61183b565b6104b0600d54611809919061276e565b421061183a576101f4600a5414611824576101f4600a819055505b6101f4600b5414611839576101f4600b819055505b5b5b5b565b600080829050600061186f61271061186160105487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611a0b5761188d8183611dc690919063ffffffff16565b91506119038160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061197d81601354611ddc90919063ffffffff16565b601381905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a029190611ff6565b60405180910390a35b819250505092915050565b6000808290506000611a47612710611a39600a5487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611be357611a658183611dc690919063ffffffff16565b9150611adb8160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5581601154611ddc90919063ffffffff16565b601181905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bda9190611ff6565b60405180910390a35b819250505092915050565b6000808290506000611c1f612710611c11600b5487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611dbb57611c3d8183611dc690919063ffffffff16565b9150611cb38160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d2d81601254611ddc90919063ffffffff16565b601281905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db29190611ff6565b60405180910390a35b819250505092915050565b60008183611dd4919061287a565b905092915050565b60008183611dea919061276e565b905092915050565b600033905090565b60008183611e0891906128ae565b905092915050565b60008183611e1e919061291f565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e60578082015181840152602081019050611e45565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e8882611e26565b611e928185611e31565b9350611ea2818560208601611e42565b611eab81611e6c565b840191505092915050565b60006020820190508181036000830152611ed08184611e7d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f0882611edd565b9050919050565b611f1881611efd565b8114611f2357600080fd5b50565b600081359050611f3581611f0f565b92915050565b6000819050919050565b611f4e81611f3b565b8114611f5957600080fd5b50565b600081359050611f6b81611f45565b92915050565b60008060408385031215611f8857611f87611ed8565b5b6000611f9685828601611f26565b9250506020611fa785828601611f5c565b9150509250929050565b60008115159050919050565b611fc681611fb1565b82525050565b6000602082019050611fe16000830184611fbd565b92915050565b611ff081611f3b565b82525050565b600060208201905061200b6000830184611fe7565b92915050565b60008060006060848603121561202a57612029611ed8565b5b600061203886828701611f26565b935050602061204986828701611f26565b925050604061205a86828701611f5c565b9150509250925092565b61206d81611efd565b82525050565b60006020820190506120886000830184612064565b92915050565b600060ff82169050919050565b6120a48161208e565b82525050565b60006020820190506120bf600083018461209b565b92915050565b6000602082840312156120db576120da611ed8565b5b60006120e984828501611f26565b91505092915050565b6000806040838503121561210957612108611ed8565b5b600061211785828601611f26565b925050602061212885828601611f26565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061217957607f821691505b60208210810361218c5761218b612132565b5b50919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006121c8601783611e31565b91506121d382612192565b602082019050919050565b600060208201905081810360008301526121f7816121bb565b9050919050565b60008151905061220d81611f0f565b92915050565b60006020828403121561222957612228611ed8565b5b6000612237848285016121fe565b91505092915050565b60006040820190506122556000830185612064565b6122626020830184612064565b9392505050565b6000819050919050565b6000819050919050565b600061229861229361228e84612269565b612273565b611f3b565b9050919050565b6122a88161227d565b82525050565b600060c0820190506122c36000830189612064565b6122d06020830188611fe7565b6122dd604083018761229f565b6122ea606083018661229f565b6122f76080830185612064565b61230460a0830184611fe7565b979650505050505050565b60008151905061231e81611f45565b92915050565b60008060006060848603121561233d5761233c611ed8565b5b600061234b8682870161230f565b935050602061235c8682870161230f565b925050604061236d8682870161230f565b9150509250925092565b600060408201905061238c6000830185612064565b6123996020830184611fe7565b9392505050565b6123a981611fb1565b81146123b457600080fd5b50565b6000815190506123c6816123a0565b92915050565b6000602082840312156123e2576123e1611ed8565b5b60006123f0848285016123b7565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612455602683611e31565b9150612460826123f9565b604082019050919050565b6000602082019050818103600083015261248481612448565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006124e7602483611e31565b91506124f28261248b565b604082019050919050565b60006020820190508181036000830152612516816124da565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612579602283611e31565b91506125848261251d565b604082019050919050565b600060208201905081810360008301526125a88161256c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061260b602583611e31565b9150612616826125af565b604082019050919050565b6000602082019050818103600083015261263a816125fe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061269d602383611e31565b91506126a882612641565b604082019050919050565b600060208201905081810360008301526126cc81612690565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000612709601883611e31565b9150612714826126d3565b602082019050919050565b60006020820190508181036000830152612738816126fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061277982611f3b565b915061278483611f3b565b925082820190508082111561279c5761279b61273f565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006127d8601a83611e31565b91506127e3826127a2565b602082019050919050565b60006020820190508181036000830152612807816127cb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612844602083611e31565b915061284f8261280e565b602082019050919050565b6000602082019050818103600083015261287381612837565b9050919050565b600061288582611f3b565b915061289083611f3b565b92508282039050818111156128a8576128a761273f565b5b92915050565b60006128b982611f3b565b91506128c483611f3b565b92508282026128d281611f3b565b915082820484148315176128e9576128e861273f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061292a82611f3b565b915061293583611f3b565b925082612945576129446128f0565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122062c9e26f022b9b8ecc697df2104778aff800b34ef1a330a53addc728df023b8d64736f6c63430008130033

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.