ETH Price: $2,669.56 (-2.76%)

Token

Ryoshi's Fish (Ryoshi's 🐟)
 

Overview

Max Total Supply

1,000,000 Ryoshi's 🐟

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
19,398.06 Ryoshi's 🐟

Value
$0.00
0xf39da8aebb91eaf39f838ccbd0a144dd7d31c3fd
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:
RyoshisfishSmartContract

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-11
*/

// SPDX-License-Identifier: NOLICENSE

/**
Token name: Ryoshis Fish
Ticker: Ryoshis \xF0\x9F\x90\x9F
Supply: 1,000,000

Telegram:
https://t.me/RyoshisFish

We all know that Ryoshi has a shiba inu. But we didn't know that he also has a Arowana fish. The more we think we know about him we still has a lot of things to discover about him.

*/
pragma solidity ^0.8.4;

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);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    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);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract RyoshisfishSmartContract is Context, IERC20, Ownable {

    using SafeMath for uint256;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    string private constant _name = "Ryoshi's Fish";
    string private constant _symbol = "Ryoshi's \xF0\x9F\x90\x9F";
    uint8 private constant _decimals = 9;

    uint16 public tokensBuyFee = 300;
    uint16 public tokensSellFee = 300;
    uint16 public masterTaxDivisor = 10000;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private constant _tTotal = 1_000_000 * 10**9;
    uint256 private maxWalletAmount = _tTotal;
    uint256 private maxTxAmount = _tTotal;
    address payable private feeAddrWallet;

    event MaxWalletAmountUpdated(uint maxWalletAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
  
    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        feeAddrWallet = payable(0xa2F8d880E27CEBB3E5EAF20D8718dde523565f94); 
        _tOwned[owner()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeAddrWallet] = true;
        emit Transfer(address(0), owner(), _tTotal);
    }

    function name() public pure returns (string memory) { return _name; }
    function symbol() public pure returns (string memory) { return _symbol; }
    function decimals() public pure returns (uint8) { return _decimals; }
    function totalSupply() public pure override returns (uint256) { return _tTotal; }
    function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; }
    function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; }
    function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; }
    function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);
        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);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");    
        require(tradingOpen || _isExcludedFromFee[from] || _isExcludedFromFee[to], "Trading not enabled yet");

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]) {
                require(amount <= maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= maxWalletAmount, "Exceeds the maxWalletSize.");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && contractTokenBalance>0) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }

        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]));
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        _tOwned[sender] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(sender, recipient, amount) : amount;
        _tOwned[recipient] += amountReceived;
        emit Transfer(sender, recipient, amountReceived);
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if(from == uniswapV2Pair) { 
            currentFee = tokensBuyFee;
        } else if (to == uniswapV2Pair) { 
          currentFee = tokensSellFee;
        }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function updateMaxTxAmt(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10 **_decimals;
    }

    function updateMaxWalletAmount(uint256 amount) external onlyOwner {
        maxWalletAmount = amount * 10 **_decimals;
    }

    function SetWalletandTxtAmount(uint256 _maxTxAmount, uint256 _maxWalletSize) external onlyOwner{
        maxTxAmount = _maxTxAmount * 10 **_decimals;
        maxWalletAmount = _maxWalletSize * 10 **_decimals;
    }

    function updateBuyFee(uint16 _fee) external onlyOwner {
        require(_fee <= 8, 'fee can not set more than 8%');
        tokensBuyFee = _fee;
    }

    function updateSellFee(uint16 _fee) external onlyOwner {
        require(_fee <= 8, 'fee can not set more than 8%');
        tokensSellFee = _fee;
    }

    function sendETHToFee(uint256 amount) private {
        feeAddrWallet.transfer(amount);
    } 

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        maxTxAmount = 10_001 * 10**9;
        maxWalletAmount = 10_001 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"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":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletAmountUpdated","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":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"SetWalletandTxtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"masterTaxDivisor","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"pure","type":"function"},{"inputs":[],"name":"tokensBuyFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensSellFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_fee","type":"uint16"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_fee","type":"uint16"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261012c600460006101000a81548161ffff021916908361ffff16021790555061012c600460026101000a81548161ffff021916908361ffff1602179055506127106004806101000a81548161ffff021916908361ffff1602179055506000600560156101000a81548160ff0219169083151502179055506000600560166101000a81548160ff02191690831515021790555066038d7ea4c6800060065566038d7ea4c68000600755348015620000b957600080fd5b50620000da620000ce6200054660201b60201c565b6200054e60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600460066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a69190620006a5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002349190620006a5565b6040518363ffffffff1660e01b815260040162000253929190620006e8565b6020604051808303816000875af115801562000273573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002999190620006a5565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a2f8d880e27cebb3e5eaf20d8718dde523565f94600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066038d7ea4c68000600160006200034a6200061260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360006200039e6200061260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004d16200061260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c6800060405162000537919062000730565b60405180910390a3506200074d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200066d8262000640565b9050919050565b6200067f8162000660565b81146200068b57600080fd5b50565b6000815190506200069f8162000674565b92915050565b600060208284031215620006be57620006bd6200063b565b5b6000620006ce848285016200068e565b91505092915050565b620006e28162000660565b82525050565b6000604082019050620006ff6000830185620006d7565b6200070e6020830184620006d7565b9392505050565b6000819050919050565b6200072a8162000715565b82525050565b60006020820190506200074760008301846200071f565b92915050565b61301e806200075d6000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063c18bc1951161006f578063c18bc19514610457578063c9567bf914610480578063dd62ed3e14610497578063ea2f0b37146104d4578063ebece9c9146104fd578063f2fde38b146105265761014b565b8063715018a6146103595780637c988e09146103705780638da5cb5b1461039957806393b55dd0146103c457806395d89b41146103ef578063a9059cbb1461041a5761014b565b806323b872dd1161010857806323b872dd146102395780632e092fe814610276578063313ce5671461029f578063437823ec146102ca5780634f9973ce146102f357806370a082311461031c5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b8578063185b38c8146101e35780631d6167ac1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561054f565b6040516101729190611fe6565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906120a1565b61058c565b6040516101af91906120fc565b60405180910390f35b3480156101c457600080fd5b506101cd6105aa565b6040516101da9190612126565b60405180910390f35b3480156101ef57600080fd5b506101f86105b9565b604051610205919061215e565b60405180910390f35b34801561021a57600080fd5b506102236105cd565b604051610230919061215e565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190612179565b6105df565b60405161026d91906120fc565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906121cc565b6106e0565b005b3480156102ab57600080fd5b506102b461077e565b6040516102c19190612215565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190612230565b610787565b005b3480156102ff57600080fd5b5061031a60048036038101906103159190612289565b61085e565b005b34801561032857600080fd5b50610343600480360381019061033e9190612230565b610942565b6040516103509190612126565b60405180910390f35b34801561036557600080fd5b5061036e61098b565b005b34801561037c57600080fd5b5061039760048036038101906103929190612289565b610a13565b005b3480156103a557600080fd5b506103ae610af7565b6040516103bb91906122c5565b60405180910390f35b3480156103d057600080fd5b506103d9610b20565b6040516103e6919061215e565b60405180910390f35b3480156103fb57600080fd5b50610404610b34565b6040516104119190611fe6565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c91906120a1565b610b71565b60405161044e91906120fc565b60405180910390f35b34801561046357600080fd5b5061047e600480360381019061047991906121cc565b610b8f565b005b34801561048c57600080fd5b50610495610c2d565b005b3480156104a357600080fd5b506104be60048036038101906104b991906122e0565b610e2e565b6040516104cb9190612126565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190612230565b610eb5565b005b34801561050957600080fd5b50610524600480360381019061051f9190612320565b610f8c565b005b34801561053257600080fd5b5061054d60048036038101906105489190612230565b61104a565b005b60606040518060400160405280600d81526020017f52796f7368692773204669736800000000000000000000000000000000000000815250905090565b60006105a0610599611141565b8484611149565b6001905092915050565b600066038d7ea4c68000905090565b600460029054906101000a900461ffff1681565b60048054906101000a900461ffff1681565b60006105ec848484611312565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610637611141565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156106b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ae906123d2565b60405180910390fd5b6106d4856106c3611141565b85846106cf9190612421565b611149565b60019150509392505050565b6106e8611141565b73ffffffffffffffffffffffffffffffffffffffff16610706610af7565b73ffffffffffffffffffffffffffffffffffffffff161461075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610753906124a1565b60405180910390fd5b6009600a61076a91906125f4565b81610775919061263f565b60078190555050565b60006009905090565b61078f611141565b73ffffffffffffffffffffffffffffffffffffffff166107ad610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa906124a1565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610866611141565b73ffffffffffffffffffffffffffffffffffffffff16610884610af7565b73ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d1906124a1565b60405180910390fd5b60088161ffff161115610922576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610919906126e5565b60405180910390fd5b80600460026101000a81548161ffff021916908361ffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610993611141565b73ffffffffffffffffffffffffffffffffffffffff166109b1610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe906124a1565b60405180910390fd5b610a116000611890565b565b610a1b611141565b73ffffffffffffffffffffffffffffffffffffffff16610a39610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a86906124a1565b60405180910390fd5b60088161ffff161115610ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ace906126e5565b60405180910390fd5b80600460006101000a81548161ffff021916908361ffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600460009054906101000a900461ffff1681565b60606040518060400160405280600d81526020017f52796f736869277320f09f909f00000000000000000000000000000000000000815250905090565b6000610b85610b7e611141565b8484611312565b6001905092915050565b610b97611141565b73ffffffffffffffffffffffffffffffffffffffff16610bb5610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c02906124a1565b60405180910390fd5b6009600a610c1991906125f4565b81610c24919061263f565b60068190555050565b610c35611141565b73ffffffffffffffffffffffffffffffffffffffff16610c53610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca0906124a1565b60405180910390fd5b600560149054906101000a900460ff1615610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090612751565b60405180910390fd5b6001600560166101000a81548160ff0219169083151502179055506509188a0d6a006007819055506509188a0d6a006006819055506001600560146101000a81548160ff021916908315150217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610de8929190612771565b6020604051808303816000875af1158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b91906127c6565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ebd611141565b73ffffffffffffffffffffffffffffffffffffffff16610edb610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f28906124a1565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f94611141565b73ffffffffffffffffffffffffffffffffffffffff16610fb2610af7565b73ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff906124a1565b60405180910390fd5b6009600a61101691906125f4565b82611021919061263f565b6007819055506009600a61103591906125f4565b81611040919061263f565b6006819055505050565b611052611141565b73ffffffffffffffffffffffffffffffffffffffff16611070610af7565b73ffffffffffffffffffffffffffffffffffffffff16146110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd906124a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90612865565b60405180910390fd5b61113e81611890565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af906128f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90612989565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113059190612126565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890612a1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e790612aad565b60405180910390fd5b60008111611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a90612b3f565b60405180910390fd5b61143c83610942565b81111561147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590612bd1565b60405180910390fd5b600560149054906101000a900460ff16806114e25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115365750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90612c3d565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116205750600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116765750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611719576007548111156116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b790612ca9565b60405180910390fd5b600654816116cd84610942565b6116d79190612cc9565b1115611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612d6b565b60405180910390fd5b5b600061172430610942565b9050600560159054906101000a900460ff161580156117915750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156117a95750600560169054906101000a900460ff165b80156117b55750600081115b156117dd576117c381611954565b600047905060008111156117db576117da47611bcd565b5b505b61188a848484600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118845750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c39565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600560156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561198c5761198b612d8b565b5b6040519080825280602002602001820160405280156119ba5781602001602082028036833780820191505090505b50905030816000815181106119d2576119d1612dba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9d9190612dfe565b81600181518110611ab157611ab0612dba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b1830600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611149565b600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611b7c959493929190612f2e565b600060405180830381600087803b158015611b9657600080fd5b505af1158015611baa573d6000803e3d6000fd5b50505050506000600560156101000a81548160ff02191690831515021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c35573d6000803e3d6000fd5b5050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c889190612421565b92505081905550600081611c9c5782611ca8565b611ca7858585611d6c565b5b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cf99190612cc9565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d5d9190612126565b60405180910390a35050505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611de057600460009054906101000a900461ffff1661ffff169050611e4e565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e4d57600460029054906101000a900461ffff1661ffff1690505b5b600060048054906101000a900461ffff1661ffff168285611e6f919061263f565b611e799190612fb7565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eca9190612cc9565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f2e9190612126565b60405180910390a38084611f429190612421565b925050509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f87578082015181840152602081019050611f6c565b83811115611f96576000848401525b50505050565b6000601f19601f8301169050919050565b6000611fb882611f4d565b611fc28185611f58565b9350611fd2818560208601611f69565b611fdb81611f9c565b840191505092915050565b600060208201905081810360008301526120008184611fad565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120388261200d565b9050919050565b6120488161202d565b811461205357600080fd5b50565b6000813590506120658161203f565b92915050565b6000819050919050565b61207e8161206b565b811461208957600080fd5b50565b60008135905061209b81612075565b92915050565b600080604083850312156120b8576120b7612008565b5b60006120c685828601612056565b92505060206120d78582860161208c565b9150509250929050565b60008115159050919050565b6120f6816120e1565b82525050565b600060208201905061211160008301846120ed565b92915050565b6121208161206b565b82525050565b600060208201905061213b6000830184612117565b92915050565b600061ffff82169050919050565b61215881612141565b82525050565b6000602082019050612173600083018461214f565b92915050565b60008060006060848603121561219257612191612008565b5b60006121a086828701612056565b93505060206121b186828701612056565b92505060406121c28682870161208c565b9150509250925092565b6000602082840312156121e2576121e1612008565b5b60006121f08482850161208c565b91505092915050565b600060ff82169050919050565b61220f816121f9565b82525050565b600060208201905061222a6000830184612206565b92915050565b60006020828403121561224657612245612008565b5b600061225484828501612056565b91505092915050565b61226681612141565b811461227157600080fd5b50565b6000813590506122838161225d565b92915050565b60006020828403121561229f5761229e612008565b5b60006122ad84828501612274565b91505092915050565b6122bf8161202d565b82525050565b60006020820190506122da60008301846122b6565b92915050565b600080604083850312156122f7576122f6612008565b5b600061230585828601612056565b925050602061231685828601612056565b9150509250929050565b6000806040838503121561233757612336612008565b5b60006123458582860161208c565b92505060206123568582860161208c565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006123bc602883611f58565b91506123c782612360565b604082019050919050565b600060208201905081810360008301526123eb816123af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061242c8261206b565b91506124378361206b565b92508282101561244a576124496123f2565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061248b602083611f58565b915061249682612455565b602082019050919050565b600060208201905081810360008301526124ba8161247e565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612518578086048111156124f4576124f36123f2565b5b60018516156125035780820291505b8081029050612511856124c1565b94506124d8565b94509492505050565b60008261253157600190506125ed565b8161253f57600090506125ed565b8160018114612555576002811461255f5761258e565b60019150506125ed565b60ff841115612571576125706123f2565b5b8360020a915084821115612588576125876123f2565b5b506125ed565b5060208310610133831016604e8410600b84101617156125c35782820a9050838111156125be576125bd6123f2565b5b6125ed565b6125d084848460016124ce565b925090508184048111156125e7576125e66123f2565b5b81810290505b9392505050565b60006125ff8261206b565b915061260a836121f9565b92506126377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612521565b905092915050565b600061264a8261206b565b91506126558361206b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561268e5761268d6123f2565b5b828202905092915050565b7f6665652063616e206e6f7420736574206d6f7265207468616e20382500000000600082015250565b60006126cf601c83611f58565b91506126da82612699565b602082019050919050565b600060208201905081810360008301526126fe816126c2565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061273b601783611f58565b915061274682612705565b602082019050919050565b6000602082019050818103600083015261276a8161272e565b9050919050565b600060408201905061278660008301856122b6565b6127936020830184612117565b9392505050565b6127a3816120e1565b81146127ae57600080fd5b50565b6000815190506127c08161279a565b92915050565b6000602082840312156127dc576127db612008565b5b60006127ea848285016127b1565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061284f602683611f58565b915061285a826127f3565b604082019050919050565b6000602082019050818103600083015261287e81612842565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128e1602483611f58565b91506128ec82612885565b604082019050919050565b60006020820190508181036000830152612910816128d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612973602283611f58565b915061297e82612917565b604082019050919050565b600060208201905081810360008301526129a281612966565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a05602583611f58565b9150612a10826129a9565b604082019050919050565b60006020820190508181036000830152612a34816129f8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a97602383611f58565b9150612aa282612a3b565b604082019050919050565b60006020820190508181036000830152612ac681612a8a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b29602983611f58565b9150612b3482612acd565b604082019050919050565b60006020820190508181036000830152612b5881612b1c565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612bbb603183611f58565b9150612bc682612b5f565b604082019050919050565b60006020820190508181036000830152612bea81612bae565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b6000612c27601783611f58565b9150612c3282612bf1565b602082019050919050565b60006020820190508181036000830152612c5681612c1a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612c93601983611f58565b9150612c9e82612c5d565b602082019050919050565b60006020820190508181036000830152612cc281612c86565b9050919050565b6000612cd48261206b565b9150612cdf8361206b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d1457612d136123f2565b5b828201905092915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612d55601a83611f58565b9150612d6082612d1f565b602082019050919050565b60006020820190508181036000830152612d8481612d48565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612df88161203f565b92915050565b600060208284031215612e1457612e13612008565b5b6000612e2284828501612de9565b91505092915050565b6000819050919050565b6000819050919050565b6000612e5a612e55612e5084612e2b565b612e35565b61206b565b9050919050565b612e6a81612e3f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ea58161202d565b82525050565b6000612eb78383612e9c565b60208301905092915050565b6000602082019050919050565b6000612edb82612e70565b612ee58185612e7b565b9350612ef083612e8c565b8060005b83811015612f21578151612f088882612eab565b9750612f1383612ec3565b925050600181019050612ef4565b5085935050505092915050565b600060a082019050612f436000830188612117565b612f506020830187612e61565b8181036040830152612f628186612ed0565b9050612f7160608301856122b6565b612f7e6080830184612117565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fc28261206b565b9150612fcd8361206b565b925082612fdd57612fdc612f88565b5b82820490509291505056fea26469706673582212200334e699ff9a55b6803353e2cb3a7c7b5c3bd02a32de60a215b34336e47428a064736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b6578063c18bc1951161006f578063c18bc19514610457578063c9567bf914610480578063dd62ed3e14610497578063ea2f0b37146104d4578063ebece9c9146104fd578063f2fde38b146105265761014b565b8063715018a6146103595780637c988e09146103705780638da5cb5b1461039957806393b55dd0146103c457806395d89b41146103ef578063a9059cbb1461041a5761014b565b806323b872dd1161010857806323b872dd146102395780632e092fe814610276578063313ce5671461029f578063437823ec146102ca5780634f9973ce146102f357806370a082311461031c5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b8578063185b38c8146101e35780631d6167ac1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561054f565b6040516101729190611fe6565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906120a1565b61058c565b6040516101af91906120fc565b60405180910390f35b3480156101c457600080fd5b506101cd6105aa565b6040516101da9190612126565b60405180910390f35b3480156101ef57600080fd5b506101f86105b9565b604051610205919061215e565b60405180910390f35b34801561021a57600080fd5b506102236105cd565b604051610230919061215e565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190612179565b6105df565b60405161026d91906120fc565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906121cc565b6106e0565b005b3480156102ab57600080fd5b506102b461077e565b6040516102c19190612215565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190612230565b610787565b005b3480156102ff57600080fd5b5061031a60048036038101906103159190612289565b61085e565b005b34801561032857600080fd5b50610343600480360381019061033e9190612230565b610942565b6040516103509190612126565b60405180910390f35b34801561036557600080fd5b5061036e61098b565b005b34801561037c57600080fd5b5061039760048036038101906103929190612289565b610a13565b005b3480156103a557600080fd5b506103ae610af7565b6040516103bb91906122c5565b60405180910390f35b3480156103d057600080fd5b506103d9610b20565b6040516103e6919061215e565b60405180910390f35b3480156103fb57600080fd5b50610404610b34565b6040516104119190611fe6565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c91906120a1565b610b71565b60405161044e91906120fc565b60405180910390f35b34801561046357600080fd5b5061047e600480360381019061047991906121cc565b610b8f565b005b34801561048c57600080fd5b50610495610c2d565b005b3480156104a357600080fd5b506104be60048036038101906104b991906122e0565b610e2e565b6040516104cb9190612126565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190612230565b610eb5565b005b34801561050957600080fd5b50610524600480360381019061051f9190612320565b610f8c565b005b34801561053257600080fd5b5061054d60048036038101906105489190612230565b61104a565b005b60606040518060400160405280600d81526020017f52796f7368692773204669736800000000000000000000000000000000000000815250905090565b60006105a0610599611141565b8484611149565b6001905092915050565b600066038d7ea4c68000905090565b600460029054906101000a900461ffff1681565b60048054906101000a900461ffff1681565b60006105ec848484611312565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610637611141565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156106b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ae906123d2565b60405180910390fd5b6106d4856106c3611141565b85846106cf9190612421565b611149565b60019150509392505050565b6106e8611141565b73ffffffffffffffffffffffffffffffffffffffff16610706610af7565b73ffffffffffffffffffffffffffffffffffffffff161461075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610753906124a1565b60405180910390fd5b6009600a61076a91906125f4565b81610775919061263f565b60078190555050565b60006009905090565b61078f611141565b73ffffffffffffffffffffffffffffffffffffffff166107ad610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa906124a1565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610866611141565b73ffffffffffffffffffffffffffffffffffffffff16610884610af7565b73ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d1906124a1565b60405180910390fd5b60088161ffff161115610922576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610919906126e5565b60405180910390fd5b80600460026101000a81548161ffff021916908361ffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610993611141565b73ffffffffffffffffffffffffffffffffffffffff166109b1610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe906124a1565b60405180910390fd5b610a116000611890565b565b610a1b611141565b73ffffffffffffffffffffffffffffffffffffffff16610a39610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a86906124a1565b60405180910390fd5b60088161ffff161115610ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ace906126e5565b60405180910390fd5b80600460006101000a81548161ffff021916908361ffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600460009054906101000a900461ffff1681565b60606040518060400160405280600d81526020017f52796f736869277320f09f909f00000000000000000000000000000000000000815250905090565b6000610b85610b7e611141565b8484611312565b6001905092915050565b610b97611141565b73ffffffffffffffffffffffffffffffffffffffff16610bb5610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c02906124a1565b60405180910390fd5b6009600a610c1991906125f4565b81610c24919061263f565b60068190555050565b610c35611141565b73ffffffffffffffffffffffffffffffffffffffff16610c53610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca0906124a1565b60405180910390fd5b600560149054906101000a900460ff1615610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090612751565b60405180910390fd5b6001600560166101000a81548160ff0219169083151502179055506509188a0d6a006007819055506509188a0d6a006006819055506001600560146101000a81548160ff021916908315150217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610de8929190612771565b6020604051808303816000875af1158015610e07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2b91906127c6565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ebd611141565b73ffffffffffffffffffffffffffffffffffffffff16610edb610af7565b73ffffffffffffffffffffffffffffffffffffffff1614610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f28906124a1565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f94611141565b73ffffffffffffffffffffffffffffffffffffffff16610fb2610af7565b73ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff906124a1565b60405180910390fd5b6009600a61101691906125f4565b82611021919061263f565b6007819055506009600a61103591906125f4565b81611040919061263f565b6006819055505050565b611052611141565b73ffffffffffffffffffffffffffffffffffffffff16611070610af7565b73ffffffffffffffffffffffffffffffffffffffff16146110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd906124a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90612865565b60405180910390fd5b61113e81611890565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111af906128f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90612989565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113059190612126565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890612a1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e790612aad565b60405180910390fd5b60008111611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a90612b3f565b60405180910390fd5b61143c83610942565b81111561147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590612bd1565b60405180910390fd5b600560149054906101000a900460ff16806114e25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115365750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90612c3d565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116205750600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116765750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611719576007548111156116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b790612ca9565b60405180910390fd5b600654816116cd84610942565b6116d79190612cc9565b1115611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90612d6b565b60405180910390fd5b5b600061172430610942565b9050600560159054906101000a900460ff161580156117915750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156117a95750600560169054906101000a900460ff165b80156117b55750600081115b156117dd576117c381611954565b600047905060008111156117db576117da47611bcd565b5b505b61188a848484600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118845750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c39565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600560156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561198c5761198b612d8b565b5b6040519080825280602002602001820160405280156119ba5781602001602082028036833780820191505090505b50905030816000815181106119d2576119d1612dba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9d9190612dfe565b81600181518110611ab157611ab0612dba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b1830600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611149565b600460069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611b7c959493929190612f2e565b600060405180830381600087803b158015611b9657600080fd5b505af1158015611baa573d6000803e3d6000fd5b50505050506000600560156101000a81548160ff02191690831515021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c35573d6000803e3d6000fd5b5050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c889190612421565b92505081905550600081611c9c5782611ca8565b611ca7858585611d6c565b5b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cf99190612cc9565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d5d9190612126565b60405180910390a35050505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611de057600460009054906101000a900461ffff1661ffff169050611e4e565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e4d57600460029054906101000a900461ffff1661ffff1690505b5b600060048054906101000a900461ffff1661ffff168285611e6f919061263f565b611e799190612fb7565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eca9190612cc9565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f2e9190612126565b60405180910390a38084611f429190612421565b925050509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f87578082015181840152602081019050611f6c565b83811115611f96576000848401525b50505050565b6000601f19601f8301169050919050565b6000611fb882611f4d565b611fc28185611f58565b9350611fd2818560208601611f69565b611fdb81611f9c565b840191505092915050565b600060208201905081810360008301526120008184611fad565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120388261200d565b9050919050565b6120488161202d565b811461205357600080fd5b50565b6000813590506120658161203f565b92915050565b6000819050919050565b61207e8161206b565b811461208957600080fd5b50565b60008135905061209b81612075565b92915050565b600080604083850312156120b8576120b7612008565b5b60006120c685828601612056565b92505060206120d78582860161208c565b9150509250929050565b60008115159050919050565b6120f6816120e1565b82525050565b600060208201905061211160008301846120ed565b92915050565b6121208161206b565b82525050565b600060208201905061213b6000830184612117565b92915050565b600061ffff82169050919050565b61215881612141565b82525050565b6000602082019050612173600083018461214f565b92915050565b60008060006060848603121561219257612191612008565b5b60006121a086828701612056565b93505060206121b186828701612056565b92505060406121c28682870161208c565b9150509250925092565b6000602082840312156121e2576121e1612008565b5b60006121f08482850161208c565b91505092915050565b600060ff82169050919050565b61220f816121f9565b82525050565b600060208201905061222a6000830184612206565b92915050565b60006020828403121561224657612245612008565b5b600061225484828501612056565b91505092915050565b61226681612141565b811461227157600080fd5b50565b6000813590506122838161225d565b92915050565b60006020828403121561229f5761229e612008565b5b60006122ad84828501612274565b91505092915050565b6122bf8161202d565b82525050565b60006020820190506122da60008301846122b6565b92915050565b600080604083850312156122f7576122f6612008565b5b600061230585828601612056565b925050602061231685828601612056565b9150509250929050565b6000806040838503121561233757612336612008565b5b60006123458582860161208c565b92505060206123568582860161208c565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006123bc602883611f58565b91506123c782612360565b604082019050919050565b600060208201905081810360008301526123eb816123af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061242c8261206b565b91506124378361206b565b92508282101561244a576124496123f2565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061248b602083611f58565b915061249682612455565b602082019050919050565b600060208201905081810360008301526124ba8161247e565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612518578086048111156124f4576124f36123f2565b5b60018516156125035780820291505b8081029050612511856124c1565b94506124d8565b94509492505050565b60008261253157600190506125ed565b8161253f57600090506125ed565b8160018114612555576002811461255f5761258e565b60019150506125ed565b60ff841115612571576125706123f2565b5b8360020a915084821115612588576125876123f2565b5b506125ed565b5060208310610133831016604e8410600b84101617156125c35782820a9050838111156125be576125bd6123f2565b5b6125ed565b6125d084848460016124ce565b925090508184048111156125e7576125e66123f2565b5b81810290505b9392505050565b60006125ff8261206b565b915061260a836121f9565b92506126377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612521565b905092915050565b600061264a8261206b565b91506126558361206b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561268e5761268d6123f2565b5b828202905092915050565b7f6665652063616e206e6f7420736574206d6f7265207468616e20382500000000600082015250565b60006126cf601c83611f58565b91506126da82612699565b602082019050919050565b600060208201905081810360008301526126fe816126c2565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061273b601783611f58565b915061274682612705565b602082019050919050565b6000602082019050818103600083015261276a8161272e565b9050919050565b600060408201905061278660008301856122b6565b6127936020830184612117565b9392505050565b6127a3816120e1565b81146127ae57600080fd5b50565b6000815190506127c08161279a565b92915050565b6000602082840312156127dc576127db612008565b5b60006127ea848285016127b1565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061284f602683611f58565b915061285a826127f3565b604082019050919050565b6000602082019050818103600083015261287e81612842565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128e1602483611f58565b91506128ec82612885565b604082019050919050565b60006020820190508181036000830152612910816128d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612973602283611f58565b915061297e82612917565b604082019050919050565b600060208201905081810360008301526129a281612966565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a05602583611f58565b9150612a10826129a9565b604082019050919050565b60006020820190508181036000830152612a34816129f8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a97602383611f58565b9150612aa282612a3b565b604082019050919050565b60006020820190508181036000830152612ac681612a8a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b29602983611f58565b9150612b3482612acd565b604082019050919050565b60006020820190508181036000830152612b5881612b1c565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612bbb603183611f58565b9150612bc682612b5f565b604082019050919050565b60006020820190508181036000830152612bea81612bae565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b6000612c27601783611f58565b9150612c3282612bf1565b602082019050919050565b60006020820190508181036000830152612c5681612c1a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612c93601983611f58565b9150612c9e82612c5d565b602082019050919050565b60006020820190508181036000830152612cc281612c86565b9050919050565b6000612cd48261206b565b9150612cdf8361206b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d1457612d136123f2565b5b828201905092915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612d55601a83611f58565b9150612d6082612d1f565b602082019050919050565b60006020820190508181036000830152612d8481612d48565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612df88161203f565b92915050565b600060208284031215612e1457612e13612008565b5b6000612e2284828501612de9565b91505092915050565b6000819050919050565b6000819050919050565b6000612e5a612e55612e5084612e2b565b612e35565b61206b565b9050919050565b612e6a81612e3f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ea58161202d565b82525050565b6000612eb78383612e9c565b60208301905092915050565b6000602082019050919050565b6000612edb82612e70565b612ee58185612e7b565b9350612ef083612e8c565b8060005b83811015612f21578151612f088882612eab565b9750612f1383612ec3565b925050600181019050612ef4565b5085935050505092915050565b600060a082019050612f436000830188612117565b612f506020830187612e61565b8181036040830152612f628186612ed0565b9050612f7160608301856122b6565b612f7e6080830184612117565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fc28261206b565b9150612fcd8361206b565b925082612fdd57612fdc612f88565b5b82820490509291505056fea26469706673582212200334e699ff9a55b6803353e2cb3a7c7b5c3bd02a32de60a215b34336e47428a064736f6c634300080f0033

Deployed Bytecode Sourcemap

5023:7605:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6784:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7494:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7013:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5521:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5561:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7640:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11342:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6938:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11105:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11984:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7100:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3038:94;;;;;;;;;;;;;:::i;:::-;;11823:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2815:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5482:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6859:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7209:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11464:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12251:332;;;;;;;;;;;;;:::i;:::-;;7359:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11224:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11598:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3140:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6784:69;6821:13;6845:5;;;;;;;;;;;;;;;;;6838:12;;6784:69;:::o;7494:138::-;7569:4;7577:39;7586:12;:10;:12::i;:::-;7600:7;7609:6;7577:8;:39::i;:::-;7625:4;7618:11;;7494:138;;;;:::o;7013:81::-;7066:7;5836:17;7077:14;;7013:81;:::o;5521:33::-;;;;;;;;;;;;;:::o;5561:38::-;;;;;;;;;;;;:::o;7640:420::-;7746:4;7763:36;7773:6;7781:9;7792:6;7763:9;:36::i;:::-;7812:24;7839:11;:19;7851:6;7839:19;;;;;;;;;;;;;;;:33;7859:12;:10;:12::i;:::-;7839:33;;;;;;;;;;;;;;;;7812:60;;7911:6;7891:16;:26;;7883:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7973:57;7982:6;7990:12;:10;:12::i;:::-;8023:6;8004:16;:25;;;;:::i;:::-;7973:8;:57::i;:::-;8048:4;8041:11;;;7640:420;;;;;:::o;11342:114::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5472:1:::1;11434:2;:14;;;;:::i;:::-;11425:6;:23;;;;:::i;:::-;11411:11;:37;;;;11342:114:::0;:::o;6938:69::-;6979:5;5472:1;6988:16;;6938:69;:::o;11105:111::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11204:4:::1;11174:18;:27;11193:7;11174:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;11105:111:::0;:::o;11984:155::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12066:1:::1;12058:4;:9;;;;12050:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12127:4;12111:13;;:20;;;;;;;;;;;;;;;;;;11984:155:::0;:::o;7100:103::-;7166:7;7184;:16;7192:7;7184:16;;;;;;;;;;;;;;;;7177:23;;7100:103;;;:::o;3038:94::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3103:21:::1;3121:1;3103:9;:21::i;:::-;3038:94::o:0;11823:153::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11904:1:::1;11896:4;:9;;;;11888:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11964:4;11949:12;;:19;;;;;;;;;;;;;;;;;;11823:153:::0;:::o;2815:87::-;2861:7;2888:6;;;;;;;;;;;2881:13;;2815:87;:::o;5482:32::-;;;;;;;;;;;;;:::o;6859:73::-;6898:13;6922:7;;;;;;;;;;;;;;;;;6915:14;;6859:73;:::o;7209:144::-;7287:4;7295:42;7305:12;:10;:12::i;:::-;7319:9;7330:6;7295:9;:42::i;:::-;7346:4;7339:11;;7209:144;;;;:::o;11464:126::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5472:1:::1;11568:2;:14;;;;:::i;:::-;11559:6;:23;;;;:::i;:::-;11541:15;:41;;;;11464:126:::0;:::o;12251:332::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12315:11:::1;;;;;;;;;;;12314:12;12306:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12378:4;12364:11;;:18;;;;;;;;;;;;;;;;;;12407:14;12393:11;:28;;;;12450:14;12432:15;:32;;;;12489:4;12475:11;;:18;;;;;;;;;;;;;;;;;;12511:13;;;;;;;;;;;12504:29;;;12542:15;;;;;;;;;;;12560:14;12504:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12251:332::o:0;7359:129::-;7440:7;7458:11;:18;7470:5;7458:18;;;;;;;;;;;;;;;:27;7477:7;7458:27;;;;;;;;;;;;;;;;7451:34;;7359:129;;;;:::o;11224:110::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11321:5:::1;11291:18;:27;11310:7;11291:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;11224:110:::0;:::o;11598:217::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5472:1:::1;11733:2;:14;;;;:::i;:::-;11718:12;:29;;;;:::i;:::-;11704:11;:43;;;;5472:1;11793:2;:14;;;;:::i;:::-;11776;:31;;;;:::i;:::-;11758:15;:49;;;;11598:217:::0;;:::o;3140:192::-;2961:12;:10;:12::i;:::-;2950:23;;:7;:5;:7::i;:::-;:23;;;2942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3249:1:::1;3229:22;;:8;:22;;::::0;3221:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3305:19;3315:8;3305:9;:19::i;:::-;3140:192:::0;:::o;2236:98::-;2289:7;2316:10;2309:17;;2236:98;:::o;8068:335::-;8178:1;8161:19;;:5;:19;;;8153:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8259:1;8240:21;;:7;:21;;;8232:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8341:6;8311:11;:18;8323:5;8311:18;;;;;;;;;;;;;;;:27;8330:7;8311:27;;;;;;;;;;;;;;;:36;;;;8379:7;8363:32;;8372:5;8363:32;;;8388:6;8363:32;;;;;;:::i;:::-;;;;;;;;8068:335;;;:::o;8411:1335::-;8515:1;8499:18;;:4;:18;;;8491:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8592:1;8578:16;;:2;:16;;;8570:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8662:1;8653:6;:10;8645:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8738:15;8748:4;8738:9;:15::i;:::-;8728:6;:25;;8720:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;8829:11;;;;;;;;;;;:39;;;;8844:18;:24;8863:4;8844:24;;;;;;;;;;;;;;;;;;;;;;;;;8829:39;:65;;;;8872:18;:22;8891:2;8872:22;;;;;;;;;;;;;;;;;;;;;;;;;8829:65;8821:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;8947:13;;;;;;;;;;;8939:21;;:4;:21;;;:55;;;;;8978:15;;;;;;;;;;;8964:30;;:2;:30;;;;8939:55;:83;;;;;9000:18;:22;9019:2;9000:22;;;;;;;;;;;;;;;;;;;;;;;;;8998:24;8939:83;8935:278;;;9061:11;;9051:6;:21;;9043:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9155:15;;9145:6;9129:13;9139:2;9129:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;9121:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8935:278;9225:28;9256:24;9274:4;9256:9;:24::i;:::-;9225:55;;9300:6;;;;;;;;;;;9299:7;:32;;;;;9318:13;;;;;;;;;;;9310:21;;:4;:21;;;;9299:32;:47;;;;;9335:11;;;;;;;;;;;9299:47;:73;;;;;9371:1;9350:20;:22;9299:73;9295:344;;;9393:38;9410:20;9393:16;:38::i;:::-;9450:26;9479:21;9450:50;;9543:1;9522:18;:22;9519:105;;;9569:35;9582:21;9569:12;:35::i;:::-;9519:105;9374:265;9295:344;9651:87;9666:4;9672:2;9676:6;9686:18;:24;9705:4;9686:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;9714:18;:22;9733:2;9714:22;;;;;;;;;;;;;;;;;;;;;;;;;9686:50;9684:53;9651:14;:87::i;:::-;8480:1266;8411:1335;;;:::o;3340:173::-;3396:16;3415:6;;;;;;;;;;;3396:25;;3441:8;3432:6;;:17;;;;;;;;;;;;;;;;;;3496:8;3465:40;;3486:8;3465:40;;;;;;;;;;;;3385:128;3340:173;:::o;9754:483::-;6098:4;6089:6;;:13;;;;;;;;;;;;;;;;;;9832:21:::1;9870:1;9856:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9832:40;;9901:4;9883;9888:1;9883:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9927:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9917:4;9922:1;9917:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9960:62;9977:4;9992:15;;;;;;;;;;;10010:11;9960:8;:62::i;:::-;10033:15;;;;;;;;;;;:66;;;10114:11;10140:1;10156:4;10183;10203:15;10033:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9821:416;6134:5:::0;6125:6;;:14;;;;;;;;;;;;;;;;;;9754:483;:::o;12147:95::-;12204:13;;;;;;;;;;;:22;;:30;12227:6;12204:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12147:95;:::o;10245:340::-;10372:6;10353:7;:15;10361:6;10353:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;10389:22;10415:7;10414:57;;10465:6;10414:57;;;10426:36;10436:6;10444:9;10455:6;10426:9;:36::i;:::-;10414:57;10389:82;;10504:14;10482:7;:18;10490:9;10482:18;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;10551:9;10534:43;;10543:6;10534:43;;;10562:14;10534:43;;;;;;:::i;:::-;;;;;;;;10342:243;10245:340;;;;:::o;10593:504::-;10672:7;10692:18;10732:13;;;;;;;;;;;10724:21;;:4;:21;;;10721:162;;10776:12;;;;;;;;;;;10763:25;;;;10721:162;;;10816:13;;;;;;;;;;;10810:19;;:2;:19;;;10806:77;;10858:13;;;;;;;;;;;10845:26;;;;10806:77;10721:162;10893:17;10935:16;;;;;;;;;;10913:38;;10922:10;10913:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;10893:58;;10988:9;10962:7;:22;10978:4;10962:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;11036:4;11013:40;;11022:4;11013:40;;;11043:9;11013:40;;;;;;:::i;:::-;;;;;;;;11080:9;11071:6;:18;;;;:::i;:::-;11064:25;;;;10593:504;;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:89::-;3882:7;3922:6;3915:5;3911:18;3900:29;;3846:89;;;:::o;3941:115::-;4026:23;4043:5;4026:23;:::i;:::-;4021:3;4014:36;3941:115;;:::o;4062:218::-;4153:4;4191:2;4180:9;4176:18;4168:26;;4204:69;4270:1;4259:9;4255:17;4246:6;4204:69;:::i;:::-;4062:218;;;;:::o;4286:619::-;4363:6;4371;4379;4428:2;4416:9;4407:7;4403:23;4399:32;4396:119;;;4434:79;;:::i;:::-;4396:119;4554:1;4579:53;4624:7;4615:6;4604:9;4600:22;4579:53;:::i;:::-;4569:63;;4525:117;4681:2;4707:53;4752:7;4743:6;4732:9;4728:22;4707:53;:::i;:::-;4697:63;;4652:118;4809:2;4835:53;4880:7;4871:6;4860:9;4856:22;4835:53;:::i;:::-;4825:63;;4780:118;4286:619;;;;;:::o;4911:329::-;4970:6;5019:2;5007:9;4998:7;4994:23;4990:32;4987:119;;;5025:79;;:::i;:::-;4987:119;5145:1;5170:53;5215:7;5206:6;5195:9;5191:22;5170:53;:::i;:::-;5160:63;;5116:117;4911:329;;;;:::o;5246:86::-;5281:7;5321:4;5314:5;5310:16;5299:27;;5246:86;;;:::o;5338:112::-;5421:22;5437:5;5421:22;:::i;:::-;5416:3;5409:35;5338:112;;:::o;5456:214::-;5545:4;5583:2;5572:9;5568:18;5560:26;;5596:67;5660:1;5649:9;5645:17;5636:6;5596:67;:::i;:::-;5456:214;;;;:::o;5676:329::-;5735:6;5784:2;5772:9;5763:7;5759:23;5755:32;5752:119;;;5790:79;;:::i;:::-;5752:119;5910:1;5935:53;5980:7;5971:6;5960:9;5956:22;5935:53;:::i;:::-;5925:63;;5881:117;5676:329;;;;:::o;6011:120::-;6083:23;6100:5;6083:23;:::i;:::-;6076:5;6073:34;6063:62;;6121:1;6118;6111:12;6063:62;6011:120;:::o;6137:137::-;6182:5;6220:6;6207:20;6198:29;;6236:32;6262:5;6236:32;:::i;:::-;6137:137;;;;:::o;6280:327::-;6338:6;6387:2;6375:9;6366:7;6362:23;6358:32;6355:119;;;6393:79;;:::i;:::-;6355:119;6513:1;6538:52;6582:7;6573:6;6562:9;6558:22;6538:52;:::i;:::-;6528:62;;6484:116;6280:327;;;;:::o;6613:118::-;6700:24;6718:5;6700:24;:::i;:::-;6695:3;6688:37;6613:118;;:::o;6737:222::-;6830:4;6868:2;6857:9;6853:18;6845:26;;6881:71;6949:1;6938:9;6934:17;6925:6;6881:71;:::i;:::-;6737:222;;;;:::o;6965:474::-;7033:6;7041;7090:2;7078:9;7069:7;7065:23;7061:32;7058:119;;;7096:79;;:::i;:::-;7058:119;7216:1;7241:53;7286:7;7277:6;7266:9;7262:22;7241:53;:::i;:::-;7231:63;;7187:117;7343:2;7369:53;7414:7;7405:6;7394:9;7390:22;7369:53;:::i;:::-;7359:63;;7314:118;6965:474;;;;;:::o;7445:::-;7513:6;7521;7570:2;7558:9;7549:7;7545:23;7541:32;7538:119;;;7576:79;;:::i;:::-;7538:119;7696:1;7721:53;7766:7;7757:6;7746:9;7742:22;7721:53;:::i;:::-;7711:63;;7667:117;7823:2;7849:53;7894:7;7885:6;7874:9;7870:22;7849:53;:::i;:::-;7839:63;;7794:118;7445:474;;;;;:::o;7925:227::-;8065:34;8061:1;8053:6;8049:14;8042:58;8134:10;8129:2;8121:6;8117:15;8110:35;7925:227;:::o;8158:366::-;8300:3;8321:67;8385:2;8380:3;8321:67;:::i;:::-;8314:74;;8397:93;8486:3;8397:93;:::i;:::-;8515:2;8510:3;8506:12;8499:19;;8158:366;;;:::o;8530:419::-;8696:4;8734:2;8723:9;8719:18;8711:26;;8783:9;8777:4;8773:20;8769:1;8758:9;8754:17;8747:47;8811:131;8937:4;8811:131;:::i;:::-;8803:139;;8530:419;;;:::o;8955:180::-;9003:77;9000:1;8993:88;9100:4;9097:1;9090:15;9124:4;9121:1;9114:15;9141:191;9181:4;9201:20;9219:1;9201:20;:::i;:::-;9196:25;;9235:20;9253:1;9235:20;:::i;:::-;9230:25;;9274:1;9271;9268:8;9265:34;;;9279:18;;:::i;:::-;9265:34;9324:1;9321;9317:9;9309:17;;9141:191;;;;:::o;9338:182::-;9478:34;9474:1;9466:6;9462:14;9455:58;9338:182;:::o;9526:366::-;9668:3;9689:67;9753:2;9748:3;9689:67;:::i;:::-;9682:74;;9765:93;9854:3;9765:93;:::i;:::-;9883:2;9878:3;9874:12;9867:19;;9526:366;;;:::o;9898:419::-;10064:4;10102:2;10091:9;10087:18;10079:26;;10151:9;10145:4;10141:20;10137:1;10126:9;10122:17;10115:47;10179:131;10305:4;10179:131;:::i;:::-;10171:139;;9898:419;;;:::o;10323:102::-;10365:8;10412:5;10409:1;10405:13;10384:34;;10323:102;;;:::o;10431:848::-;10492:5;10499:4;10523:6;10514:15;;10547:5;10538:14;;10561:712;10582:1;10572:8;10569:15;10561:712;;;10677:4;10672:3;10668:14;10662:4;10659:24;10656:50;;;10686:18;;:::i;:::-;10656:50;10736:1;10726:8;10722:16;10719:451;;;11151:4;11144:5;11140:16;11131:25;;10719:451;11201:4;11195;11191:15;11183:23;;11231:32;11254:8;11231:32;:::i;:::-;11219:44;;10561:712;;;10431:848;;;;;;;:::o;11285:1073::-;11339:5;11530:8;11520:40;;11551:1;11542:10;;11553:5;;11520:40;11579:4;11569:36;;11596:1;11587:10;;11598:5;;11569:36;11665:4;11713:1;11708:27;;;;11749:1;11744:191;;;;11658:277;;11708:27;11726:1;11717:10;;11728:5;;;11744:191;11789:3;11779:8;11776:17;11773:43;;;11796:18;;:::i;:::-;11773:43;11845:8;11842:1;11838:16;11829:25;;11880:3;11873:5;11870:14;11867:40;;;11887:18;;:::i;:::-;11867:40;11920:5;;;11658:277;;12044:2;12034:8;12031:16;12025:3;12019:4;12016:13;12012:36;11994:2;11984:8;11981:16;11976:2;11970:4;11967:12;11963:35;11947:111;11944:246;;;12100:8;12094:4;12090:19;12081:28;;12135:3;12128:5;12125:14;12122:40;;;12142:18;;:::i;:::-;12122:40;12175:5;;11944:246;12215:42;12253:3;12243:8;12237:4;12234:1;12215:42;:::i;:::-;12200:57;;;;12289:4;12284:3;12280:14;12273:5;12270:25;12267:51;;;12298:18;;:::i;:::-;12267:51;12347:4;12340:5;12336:16;12327:25;;11285:1073;;;;;;:::o;12364:281::-;12422:5;12446:23;12464:4;12446:23;:::i;:::-;12438:31;;12490:25;12506:8;12490:25;:::i;:::-;12478:37;;12534:104;12571:66;12561:8;12555:4;12534:104;:::i;:::-;12525:113;;12364:281;;;;:::o;12651:348::-;12691:7;12714:20;12732:1;12714:20;:::i;:::-;12709:25;;12748:20;12766:1;12748:20;:::i;:::-;12743:25;;12936:1;12868:66;12864:74;12861:1;12858:81;12853:1;12846:9;12839:17;12835:105;12832:131;;;12943:18;;:::i;:::-;12832:131;12991:1;12988;12984:9;12973:20;;12651:348;;;;:::o;13005:178::-;13145:30;13141:1;13133:6;13129:14;13122:54;13005:178;:::o;13189:366::-;13331:3;13352:67;13416:2;13411:3;13352:67;:::i;:::-;13345:74;;13428:93;13517:3;13428:93;:::i;:::-;13546:2;13541:3;13537:12;13530:19;;13189:366;;;:::o;13561:419::-;13727:4;13765:2;13754:9;13750:18;13742:26;;13814:9;13808:4;13804:20;13800:1;13789:9;13785:17;13778:47;13842:131;13968:4;13842:131;:::i;:::-;13834:139;;13561:419;;;:::o;13986:173::-;14126:25;14122:1;14114:6;14110:14;14103:49;13986:173;:::o;14165:366::-;14307:3;14328:67;14392:2;14387:3;14328:67;:::i;:::-;14321:74;;14404:93;14493:3;14404:93;:::i;:::-;14522:2;14517:3;14513:12;14506:19;;14165:366;;;:::o;14537:419::-;14703:4;14741:2;14730:9;14726:18;14718:26;;14790:9;14784:4;14780:20;14776:1;14765:9;14761:17;14754:47;14818:131;14944:4;14818:131;:::i;:::-;14810:139;;14537:419;;;:::o;14962:332::-;15083:4;15121:2;15110:9;15106:18;15098:26;;15134:71;15202:1;15191:9;15187:17;15178:6;15134:71;:::i;:::-;15215:72;15283:2;15272:9;15268:18;15259:6;15215:72;:::i;:::-;14962:332;;;;;:::o;15300:116::-;15370:21;15385:5;15370:21;:::i;:::-;15363:5;15360:32;15350:60;;15406:1;15403;15396:12;15350:60;15300:116;:::o;15422:137::-;15476:5;15507:6;15501:13;15492:22;;15523:30;15547:5;15523:30;:::i;:::-;15422:137;;;;:::o;15565:345::-;15632:6;15681:2;15669:9;15660:7;15656:23;15652:32;15649:119;;;15687:79;;:::i;:::-;15649:119;15807:1;15832:61;15885:7;15876:6;15865:9;15861:22;15832:61;:::i;:::-;15822:71;;15778:125;15565:345;;;;:::o;15916:225::-;16056:34;16052:1;16044:6;16040:14;16033:58;16125:8;16120:2;16112:6;16108:15;16101:33;15916:225;:::o;16147:366::-;16289:3;16310:67;16374:2;16369:3;16310:67;:::i;:::-;16303:74;;16386:93;16475:3;16386:93;:::i;:::-;16504:2;16499:3;16495:12;16488:19;;16147:366;;;:::o;16519:419::-;16685:4;16723:2;16712:9;16708:18;16700:26;;16772:9;16766:4;16762:20;16758:1;16747:9;16743:17;16736:47;16800:131;16926:4;16800:131;:::i;:::-;16792:139;;16519:419;;;:::o;16944:223::-;17084:34;17080:1;17072:6;17068:14;17061:58;17153:6;17148:2;17140:6;17136:15;17129:31;16944:223;:::o;17173:366::-;17315:3;17336:67;17400:2;17395:3;17336:67;:::i;:::-;17329:74;;17412:93;17501:3;17412:93;:::i;:::-;17530:2;17525:3;17521:12;17514:19;;17173:366;;;:::o;17545:419::-;17711:4;17749:2;17738:9;17734:18;17726:26;;17798:9;17792:4;17788:20;17784:1;17773:9;17769:17;17762:47;17826:131;17952:4;17826:131;:::i;:::-;17818:139;;17545:419;;;:::o;17970:221::-;18110:34;18106:1;18098:6;18094:14;18087:58;18179:4;18174:2;18166:6;18162:15;18155:29;17970:221;:::o;18197:366::-;18339:3;18360:67;18424:2;18419:3;18360:67;:::i;:::-;18353:74;;18436:93;18525:3;18436:93;:::i;:::-;18554:2;18549:3;18545:12;18538:19;;18197:366;;;:::o;18569:419::-;18735:4;18773:2;18762:9;18758:18;18750:26;;18822:9;18816:4;18812:20;18808:1;18797:9;18793:17;18786:47;18850:131;18976:4;18850:131;:::i;:::-;18842:139;;18569:419;;;:::o;18994:224::-;19134:34;19130:1;19122:6;19118:14;19111:58;19203:7;19198:2;19190:6;19186:15;19179:32;18994:224;:::o;19224:366::-;19366:3;19387:67;19451:2;19446:3;19387:67;:::i;:::-;19380:74;;19463:93;19552:3;19463:93;:::i;:::-;19581:2;19576:3;19572:12;19565:19;;19224:366;;;:::o;19596:419::-;19762:4;19800:2;19789:9;19785:18;19777:26;;19849:9;19843:4;19839:20;19835:1;19824:9;19820:17;19813:47;19877:131;20003:4;19877:131;:::i;:::-;19869:139;;19596:419;;;:::o;20021:222::-;20161:34;20157:1;20149:6;20145:14;20138:58;20230:5;20225:2;20217:6;20213:15;20206:30;20021:222;:::o;20249:366::-;20391:3;20412:67;20476:2;20471:3;20412:67;:::i;:::-;20405:74;;20488:93;20577:3;20488:93;:::i;:::-;20606:2;20601:3;20597:12;20590:19;;20249:366;;;:::o;20621:419::-;20787:4;20825:2;20814:9;20810:18;20802:26;;20874:9;20868:4;20864:20;20860:1;20849:9;20845:17;20838:47;20902:131;21028:4;20902:131;:::i;:::-;20894:139;;20621:419;;;:::o;21046:228::-;21186:34;21182:1;21174:6;21170:14;21163:58;21255:11;21250:2;21242:6;21238:15;21231:36;21046:228;:::o;21280:366::-;21422:3;21443:67;21507:2;21502:3;21443:67;:::i;:::-;21436:74;;21519:93;21608:3;21519:93;:::i;:::-;21637:2;21632:3;21628:12;21621:19;;21280:366;;;:::o;21652:419::-;21818:4;21856:2;21845:9;21841:18;21833:26;;21905:9;21899:4;21895:20;21891:1;21880:9;21876:17;21869:47;21933:131;22059:4;21933:131;:::i;:::-;21925:139;;21652:419;;;:::o;22077:236::-;22217:34;22213:1;22205:6;22201:14;22194:58;22286:19;22281:2;22273:6;22269:15;22262:44;22077:236;:::o;22319:366::-;22461:3;22482:67;22546:2;22541:3;22482:67;:::i;:::-;22475:74;;22558:93;22647:3;22558:93;:::i;:::-;22676:2;22671:3;22667:12;22660:19;;22319:366;;;:::o;22691:419::-;22857:4;22895:2;22884:9;22880:18;22872:26;;22944:9;22938:4;22934:20;22930:1;22919:9;22915:17;22908:47;22972:131;23098:4;22972:131;:::i;:::-;22964:139;;22691:419;;;:::o;23116:173::-;23256:25;23252:1;23244:6;23240:14;23233:49;23116:173;:::o;23295:366::-;23437:3;23458:67;23522:2;23517:3;23458:67;:::i;:::-;23451:74;;23534:93;23623:3;23534:93;:::i;:::-;23652:2;23647:3;23643:12;23636:19;;23295:366;;;:::o;23667:419::-;23833:4;23871:2;23860:9;23856:18;23848:26;;23920:9;23914:4;23910:20;23906:1;23895:9;23891:17;23884:47;23948:131;24074:4;23948:131;:::i;:::-;23940:139;;23667:419;;;:::o;24092:175::-;24232:27;24228:1;24220:6;24216:14;24209:51;24092:175;:::o;24273:366::-;24415:3;24436:67;24500:2;24495:3;24436:67;:::i;:::-;24429:74;;24512:93;24601:3;24512:93;:::i;:::-;24630:2;24625:3;24621:12;24614:19;;24273:366;;;:::o;24645:419::-;24811:4;24849:2;24838:9;24834:18;24826:26;;24898:9;24892:4;24888:20;24884:1;24873:9;24869:17;24862:47;24926:131;25052:4;24926:131;:::i;:::-;24918:139;;24645:419;;;:::o;25070:305::-;25110:3;25129:20;25147:1;25129:20;:::i;:::-;25124:25;;25163:20;25181:1;25163:20;:::i;:::-;25158:25;;25317:1;25249:66;25245:74;25242:1;25239:81;25236:107;;;25323:18;;:::i;:::-;25236:107;25367:1;25364;25360:9;25353:16;;25070:305;;;;:::o;25381:176::-;25521:28;25517:1;25509:6;25505:14;25498:52;25381:176;:::o;25563:366::-;25705:3;25726:67;25790:2;25785:3;25726:67;:::i;:::-;25719:74;;25802:93;25891:3;25802:93;:::i;:::-;25920:2;25915:3;25911:12;25904:19;;25563:366;;;:::o;25935:419::-;26101:4;26139:2;26128:9;26124:18;26116:26;;26188:9;26182:4;26178:20;26174:1;26163:9;26159:17;26152:47;26216:131;26342:4;26216:131;:::i;:::-;26208:139;;25935:419;;;:::o;26360:180::-;26408:77;26405:1;26398:88;26505:4;26502:1;26495:15;26529:4;26526:1;26519:15;26546:180;26594:77;26591:1;26584:88;26691:4;26688:1;26681:15;26715:4;26712:1;26705:15;26732:143;26789:5;26820:6;26814:13;26805:22;;26836:33;26863:5;26836:33;:::i;:::-;26732:143;;;;:::o;26881:351::-;26951:6;27000:2;26988:9;26979:7;26975:23;26971:32;26968:119;;;27006:79;;:::i;:::-;26968:119;27126:1;27151:64;27207:7;27198:6;27187:9;27183:22;27151:64;:::i;:::-;27141:74;;27097:128;26881:351;;;;:::o;27238:85::-;27283:7;27312:5;27301:16;;27238:85;;;:::o;27329:60::-;27357:3;27378:5;27371:12;;27329:60;;;:::o;27395:158::-;27453:9;27486:61;27504:42;27513:32;27539:5;27513:32;:::i;:::-;27504:42;:::i;:::-;27486:61;:::i;:::-;27473:74;;27395:158;;;:::o;27559:147::-;27654:45;27693:5;27654:45;:::i;:::-;27649:3;27642:58;27559:147;;:::o;27712:114::-;27779:6;27813:5;27807:12;27797:22;;27712:114;;;:::o;27832:184::-;27931:11;27965:6;27960:3;27953:19;28005:4;28000:3;27996:14;27981:29;;27832:184;;;;:::o;28022:132::-;28089:4;28112:3;28104:11;;28142:4;28137:3;28133:14;28125:22;;28022:132;;;:::o;28160:108::-;28237:24;28255:5;28237:24;:::i;:::-;28232:3;28225:37;28160:108;;:::o;28274:179::-;28343:10;28364:46;28406:3;28398:6;28364:46;:::i;:::-;28442:4;28437:3;28433:14;28419:28;;28274:179;;;;:::o;28459:113::-;28529:4;28561;28556:3;28552:14;28544:22;;28459:113;;;:::o;28608:732::-;28727:3;28756:54;28804:5;28756:54;:::i;:::-;28826:86;28905:6;28900:3;28826:86;:::i;:::-;28819:93;;28936:56;28986:5;28936:56;:::i;:::-;29015:7;29046:1;29031:284;29056:6;29053:1;29050:13;29031:284;;;29132:6;29126:13;29159:63;29218:3;29203:13;29159:63;:::i;:::-;29152:70;;29245:60;29298:6;29245:60;:::i;:::-;29235:70;;29091:224;29078:1;29075;29071:9;29066:14;;29031:284;;;29035:14;29331:3;29324:10;;28732:608;;;28608:732;;;;:::o;29346:831::-;29609:4;29647:3;29636:9;29632:19;29624:27;;29661:71;29729:1;29718:9;29714:17;29705:6;29661:71;:::i;:::-;29742:80;29818:2;29807:9;29803:18;29794:6;29742:80;:::i;:::-;29869:9;29863:4;29859:20;29854:2;29843:9;29839:18;29832:48;29897:108;30000:4;29991:6;29897:108;:::i;:::-;29889:116;;30015:72;30083:2;30072:9;30068:18;30059:6;30015:72;:::i;:::-;30097:73;30165:3;30154:9;30150:19;30141:6;30097:73;:::i;:::-;29346:831;;;;;;;;:::o;30183:180::-;30231:77;30228:1;30221:88;30328:4;30325:1;30318:15;30352:4;30349:1;30342:15;30369:185;30409:1;30426:20;30444:1;30426:20;:::i;:::-;30421:25;;30460:20;30478:1;30460:20;:::i;:::-;30455:25;;30499:1;30489:35;;30504:18;;:::i;:::-;30489:35;30546:1;30543;30539:9;30534:14;;30369:185;;;;:::o

Swarm Source

ipfs://0334e699ff9a55b6803353e2cb3a7c7b5c3bd02a32de60a215b34336e47428a0
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.