ETH Price: $3,402.15 (+2.03%)

Token

Nezha Token (NEZHA)
 

Overview

Max Total Supply

1,000,000,000 NEZHA

Holders

314 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
53,083.557175582 NEZHA

Value
$0.00
0x4128f29092cb7a2e26ac0d6528ad36f7ebe2fa09
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

NEZHA set to revolutionize Ethereum. Boundless possibilities await with Nezha!

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NEZHA

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-04
*/

/*

Website: https://nezhatoken.meme/
Twitter: https://twitter.com/nezhatoken_eth
Telegram: https://t.me/nezhatoken_eth

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

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

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

}

abstract contract Ownable is Context {

    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the 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);
    }
}

library Math {

    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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

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

interface UniswapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

// Optimization Errors for ERC20
error ERC20InvalidApprover(address Approver);
error ERC20InvalidSpender(address Sender);
error ERC20InvalidSender(address Sender);
error ERC20InvalidReceiver(address Receiver);
error ERC20ZeroTransfer();

contract NEZHA is Context, IERC20, Ownable {

    using Math for uint256;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public _excludedFromFee;
    mapping (address => bool) public _pairAddress;

    string _name = "Nezha Token";
    string _symbol = "NEZHA";
    uint8 _decimals = 9; 

    uint256 _totalSupply = 1_000_000_000 * 10 ** _decimals;    // ONE Billion Supply

    // Anti Whale Mechanism with 1% of Max Bag and Transaction
    uint256 public maxTransaction =  _totalSupply.mul(1).div(100);     
    uint256 public maxWallet = _totalSupply.mul(1).div(100);        

    // Initial Swap Protection is 1%
    uint256 public swapThreshold = _totalSupply.mul(1).div(100);

    // Fee Settings
    uint256 public buyFee;
    uint256 public sellFee;

    uint256 feeDenominator = 100;

    address private marketingWallet = address(0xD7165c261650ebe31254e1322ba3C65f4c58cB30);
    address private developerWallet;

    bool public swapEnabled = true;
    bool public swapProtection = true;
    bool public LimitsActive = true;
    bool public TradeActive;

    UniswapRouter public dexRouter;
    address public dexPair;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        developerWallet = msg.sender;

        UniswapRouter _dexRouter = UniswapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = UniswapFactory(_dexRouter.factory())
            .createPair(address(this), _dexRouter.WETH());

        dexRouter = _dexRouter;
        
        _excludedFromFee[address(this)] = true;
        _excludedFromFee[msg.sender] = true;

        _pairAddress[address(dexPair)] = true;

        buyFee = 40;
        sellFee = 40;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
       return _balances[account];     
    }

    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 _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: Exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        if (sender == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (recipient == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        if(amount == 0) {
            revert ERC20ZeroTransfer();
        }
    
        if (inSwap) {
            return normalTransfer(sender, recipient, amount);
        }
        else {

            if(!_excludedFromFee[sender] && !_excludedFromFee[recipient] && LimitsActive) {
                require(TradeActive,"Trade Not Active!");
                require(amount <= maxTransaction, "Exceeds maxTxAmount");
                if(!_pairAddress[recipient]) {
                    require(balanceOf(recipient).add(amount) <= maxWallet, "Exceeds maxWallet");
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !_pairAddress[sender] && 
                swapEnabled &&
                !_excludedFromFee[sender] &&
                !_excludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 ToBeReceived = FeeCheckPoint(sender,recipient) ? amount : FeeCalculation(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(ToBeReceived);

            emit Transfer(sender, recipient, ToBeReceived);
            return true;

        }

    }

    function normalTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function FeeCheckPoint(address sender, address recipient) internal view returns (bool) {
        if(_excludedFromFee[sender] || _excludedFromFee[recipient]) {
            return true;
        }
        else if (_pairAddress[sender] || _pairAddress[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }


    function FeeCalculation(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(_pairAddress[sender]) { 
                feeAmount = amount.mul(buyFee).div(feeDenominator);
            } 
            else if(_pairAddress[recipient]) { 
                feeAmount = amount.mul(sellFee).div(feeDenominator);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }


    function swapBack(uint contractBalance) internal swapping {

        if(swapProtection) contractBalance = swapThreshold;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        if(amountReceived > 0)
            payable(marketingWallet).transfer(amountReceived);

    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external { 
        require(msg.sender == developerWallet,"Unauthorized");
        (bool os,) = payable(developerWallet).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,uint _amount) external {
        require(msg.sender == developerWallet,"Unauthorized");
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  developerWallet, _amount));
        require(success, 'Token payment failed');
    }

    function setFee(uint _buySide, uint _sellSide) external onlyOwner {    
        buyFee = _buySide;
        sellFee = _sellSide;
    }

    function removeLimits() external onlyOwner { 
        LimitsActive = false;
        maxWallet = _totalSupply; 
        maxTransaction = _totalSupply;     
    }

    function openTrade() external onlyOwner {
        require(!TradeActive,"Already Enabled!");
        TradeActive = true;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        _excludedFromFee[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        maxWallet = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        maxTransaction = newLimit;
    }
    
    function setMarketingWallet(address _newWallet) external onlyOwner {
        marketingWallet = _newWallet;
    }

    function setDeveloperWallet(address _newWallet) external onlyOwner {
        developerWallet = _newWallet;
    }

    function setSwapSetting(bool _swapenabled, bool _protected) 
        external onlyOwner 
    {
        swapEnabled = _swapenabled;
        swapProtection = _protected;
    }

    function setSwapThreshold(uint _threshold)
        external
        onlyOwner
    {
        swapThreshold = _threshold;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"Approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"Receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"Sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"Sender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ERC20ZeroTransfer","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LimitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_pairAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract UniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setDeveloperWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buySide","type":"uint256"},{"internalType":"uint256","name":"_sellSide","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapenabled","type":"bool"},{"internalType":"bool","name":"_protected","type":"bool"}],"name":"setSwapSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600b81526020017f4e657a686120546f6b656e000000000000000000000000000000000000000000815250600590816200004a919062000ac1565b506040518060400160405280600581526020017f4e455a48410000000000000000000000000000000000000000000000000000008152506006908162000091919062000ac1565b50600960075f6101000a81548160ff021916908360ff16021790555060075f9054906101000a900460ff16600a620000ca919062000d2e565b633b9aca00620000db919062000d7e565b6008556200010b6064620000fc60016008546200065e60201b90919060201c565b620006de60201b90919060201c565b6009556200013b60646200012c60016008546200065e60201b90919060201c565b620006de60201b90919060201c565b600a556200016b60646200015c60016008546200065e60201b90919060201c565b620006de60201b90919060201c565b600b556064600e5573d7165c261650ebe31254e1322ba3c65f4c58cb30600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060146101000a81548160ff0219169083151502179055506001601060156101000a81548160ff0219169083151502179055506001601060166101000a81548160ff02191690831515021790555034801562000224575f80fd5b5062000245620002396200072f60201b60201c565b6200073660201b60201c565b3360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200030d919062000e2d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000373573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000399919062000e2d565b6040518363ffffffff1660e01b8152600401620003b892919062000e6e565b6020604051808303815f875af1158015620003d5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003fb919062000e2d565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506028600c819055506028600d8190555060085460015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516200064f919062000eaa565b60405180910390a35062001069565b5f80830362000670575f9050620006d8565b5f82846200067f919062000d7e565b905082848262000690919062000ef2565b14620006d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ca9062000fad565b60405180910390fd5b809150505b92915050565b5f6200072783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007f760201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808311829062000840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000837919062001047565b60405180910390fd5b505f838562000850919062000ef2565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008d957607f821691505b602082108103620008ef57620008ee62000894565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000916565b6200095f868362000916565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009a9620009a36200099d8462000977565b62000980565b62000977565b9050919050565b5f819050919050565b620009c48362000989565b620009dc620009d382620009b0565b84845462000922565b825550505050565b5f90565b620009f2620009e4565b620009ff818484620009b9565b505050565b5b8181101562000a265762000a1a5f82620009e8565b60018101905062000a05565b5050565b601f82111562000a755762000a3f81620008f5565b62000a4a8462000907565b8101602085101562000a5a578190505b62000a7262000a698562000907565b83018262000a04565b50505b505050565b5f82821c905092915050565b5f62000a975f198460080262000a7a565b1980831691505092915050565b5f62000ab1838362000a86565b9150826002028217905092915050565b62000acc826200085d565b67ffffffffffffffff81111562000ae85762000ae762000867565b5b62000af48254620008c1565b62000b0182828562000a2a565b5f60209050601f83116001811462000b37575f841562000b22578287015190505b62000b2e858262000aa4565b86555062000b9d565b601f19841662000b4786620008f5565b5f5b8281101562000b705784890151825560018201915060208501945060208101905062000b49565b8683101562000b90578489015162000b8c601f89168262000a86565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000c2f5780860481111562000c075762000c0662000ba5565b5b600185161562000c175780820291505b808102905062000c278562000bd2565b945062000be7565b94509492505050565b5f8262000c49576001905062000d1b565b8162000c58575f905062000d1b565b816001811462000c71576002811462000c7c5762000cb2565b600191505062000d1b565b60ff84111562000c915762000c9062000ba5565b5b8360020a91508482111562000cab5762000caa62000ba5565b5b5062000d1b565b5060208310610133831016604e8410600b841016171562000cec5782820a90508381111562000ce65762000ce562000ba5565b5b62000d1b565b62000cfb848484600162000bde565b9250905081840481111562000d155762000d1462000ba5565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000d3a8262000977565b915062000d478362000d22565b925062000d767fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c38565b905092915050565b5f62000d8a8262000977565b915062000d978362000977565b925082820262000da78162000977565b9150828204841483151762000dc15762000dc062000ba5565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000df78262000dcc565b9050919050565b62000e098162000deb565b811462000e14575f80fd5b50565b5f8151905062000e278162000dfe565b92915050565b5f6020828403121562000e455762000e4462000dc8565b5b5f62000e548482850162000e17565b91505092915050565b62000e688162000deb565b82525050565b5f60408201905062000e835f83018562000e5d565b62000e92602083018462000e5d565b9392505050565b62000ea48162000977565b82525050565b5f60208201905062000ebf5f83018462000e99565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000efe8262000977565b915062000f0b8362000977565b92508262000f1e5762000f1d62000ec5565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000f9560218362000f29565b915062000fa28262000f39565b604082019050919050565b5f6020820190508181035f83015262000fc68162000f87565b9050919050565b5f5b8381101562000fec57808201518184015260208101905062000fcf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62001013826200085d565b6200101f818562000f29565b93506200103181856020860162000fcd565b6200103c8162000ff7565b840191505092915050565b5f6020820190508181035f83015262001061818462001007565b905092915050565b61399e80620010775f395ff3fe60806040526004361061021d575f3560e01c8063715018a611610122578063dd62ed3e116100aa578063f242ab411161006e578063f242ab4114610798578063f2fde38b146107c2578063f8b45b05146107ea578063fb201b1d14610814578063fdd24dfe1461082a57610224565b8063dd62ed3e146106b8578063de96c5bb146106f4578063df8408fe1461071e578063e6b2603b14610746578063f0e2b1821461075c57610224565b806395d89b41116100f157806395d89b41146105d65780639d0014b114610600578063a9059cbb14610628578063c3f70b5214610664578063c6c670d01461068e57610224565b8063715018a614610558578063728d41c91461056e578063751039fc146105965780638da5cb5b146105ac57610224565b8063313ce567116101a55780635c85974f116101745780635c85974f1461047a5780635d098b38146104a25780636cd56878146104ca5780636ddd1713146104f257806370a082311461051c57610224565b8063313ce567146103d6578063470624021461040057806352f7c9881461042a578063573761981461045257610224565b80630d29573f116101ec5780630d29573f146102e2578063108dfa431461031e57806318160ddd1461034657806323b872dd146103705780632b14ca56146103ac57610224565b80630445b6671461022857806306fdde03146102525780630758d9241461027c578063095ea7b3146102a657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c610854565b6040516102499190612bfb565b60405180910390f35b34801561025d575f80fd5b5061026661085a565b6040516102739190612c9e565b60405180910390f35b348015610287575f80fd5b506102906108ea565b60405161029d9190612d38565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c79190612dba565b61090f565b6040516102d99190612e12565b60405180910390f35b3480156102ed575f80fd5b5061030860048036038101906103039190612e2b565b61092c565b6040516103159190612e12565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190612e80565b610949565b005b348015610351575f80fd5b5061035a6109fd565b6040516103679190612bfb565b60405180910390f35b34801561037b575f80fd5b5061039660048036038101906103919190612ebe565b610a06565b6040516103a39190612e12565b60405180910390f35b3480156103b7575f80fd5b506103c0610af8565b6040516103cd9190612bfb565b60405180910390f35b3480156103e1575f80fd5b506103ea610afe565b6040516103f79190612f29565b60405180910390f35b34801561040b575f80fd5b50610414610b13565b6040516104219190612bfb565b60405180910390f35b348015610435575f80fd5b50610450600480360381019061044b9190612f42565b610b19565b005b34801561045d575f80fd5b5061047860048036038101906104739190612dba565b610ba7565b005b348015610485575f80fd5b506104a0600480360381019061049b9190612f80565b610d93565b005b3480156104ad575f80fd5b506104c860048036038101906104c39190612e2b565b610e19565b005b3480156104d5575f80fd5b506104f060048036038101906104eb9190612e2b565b610ed8565b005b3480156104fd575f80fd5b50610506610f97565b6040516105139190612e12565b60405180910390f35b348015610527575f80fd5b50610542600480360381019061053d9190612e2b565b610faa565b60405161054f9190612bfb565b60405180910390f35b348015610563575f80fd5b5061056c610ff0565b005b348015610579575f80fd5b50610594600480360381019061058f9190612f80565b611077565b005b3480156105a1575f80fd5b506105aa6110fd565b005b3480156105b7575f80fd5b506105c06111a7565b6040516105cd9190612fba565b60405180910390f35b3480156105e1575f80fd5b506105ea6111ce565b6040516105f79190612c9e565b60405180910390f35b34801561060b575f80fd5b5061062660048036038101906106219190612f80565b61125e565b005b348015610633575f80fd5b5061064e60048036038101906106499190612dba565b6112e4565b60405161065b9190612e12565b60405180910390f35b34801561066f575f80fd5b50610678611302565b6040516106859190612bfb565b60405180910390f35b348015610699575f80fd5b506106a2611308565b6040516106af9190612e12565b60405180910390f35b3480156106c3575f80fd5b506106de60048036038101906106d99190612fd3565b61131b565b6040516106eb9190612bfb565b60405180910390f35b3480156106ff575f80fd5b5061070861139d565b6040516107159190612e12565b60405180910390f35b348015610729575f80fd5b50610744600480360381019061073f9190613011565b6113b0565b005b348015610751575f80fd5b5061075a611484565b005b348015610767575f80fd5b50610782600480360381019061077d9190612e2b565b6115df565b60405161078f9190612e12565b60405180910390f35b3480156107a3575f80fd5b506107ac6115fc565b6040516107b99190612fba565b60405180910390f35b3480156107cd575f80fd5b506107e860048036038101906107e39190612e2b565b611621565b005b3480156107f5575f80fd5b506107fe611717565b60405161080b9190612bfb565b60405180910390f35b34801561081f575f80fd5b5061082861171d565b005b348015610835575f80fd5b5061083e611806565b60405161084b9190612e12565b60405180910390f35b600b5481565b6060600580546108699061307c565b80601f01602080910402602001604051908101604052809291908181526020018280546108959061307c565b80156108e05780601f106108b7576101008083540402835291602001916108e0565b820191905f5260205f20905b8154815290600101906020018083116108c357829003601f168201915b5050505050905090565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61092261091b611819565b8484611820565b6001905092915050565b6003602052805f5260405f205f915054906101000a900460ff1681565b610951611819565b73ffffffffffffffffffffffffffffffffffffffff1661096f6111a7565b73ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc906130f6565b60405180910390fd5b81601060146101000a81548160ff02191690831515021790555080601060156101000a81548160ff0219169083151502179055505050565b5f600854905090565b5f610a128484846119e7565b50610aed84610a1f611819565b610ae8856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a9f611819565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120659092919063ffffffff16565b611820565b600190509392505050565b600d5481565b5f60075f9054906101000a900460ff16905090565b600c5481565b610b21611819565b73ffffffffffffffffffffffffffffffffffffffff16610b3f6111a7565b73ffffffffffffffffffffffffffffffffffffffff1614610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c906130f6565b60405180910390fd5b81600c8190555080600d819055505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d9061315e565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051602401610c8292919061317c565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d0c91906131e7565b5f604051808303815f865af19150503d805f8114610d45576040519150601f19603f3d011682016040523d82523d5f602084013e610d4a565b606091505b5050905080610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8590613247565b60405180910390fd5b505050565b610d9b611819565b73ffffffffffffffffffffffffffffffffffffffff16610db96111a7565b73ffffffffffffffffffffffffffffffffffffffff1614610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e06906130f6565b60405180910390fd5b8060098190555050565b610e21611819565b73ffffffffffffffffffffffffffffffffffffffff16610e3f6111a7565b73ffffffffffffffffffffffffffffffffffffffff1614610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c906130f6565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ee0611819565b73ffffffffffffffffffffffffffffffffffffffff16610efe6111a7565b73ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b906130f6565b60405180910390fd5b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060149054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ff8611819565b73ffffffffffffffffffffffffffffffffffffffff166110166111a7565b73ffffffffffffffffffffffffffffffffffffffff161461106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611063906130f6565b60405180910390fd5b6110755f6120c7565b565b61107f611819565b73ffffffffffffffffffffffffffffffffffffffff1661109d6111a7565b73ffffffffffffffffffffffffffffffffffffffff16146110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea906130f6565b60405180910390fd5b80600a8190555050565b611105611819565b73ffffffffffffffffffffffffffffffffffffffff166111236111a7565b73ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906130f6565b60405180910390fd5b5f601060166101000a81548160ff021916908315150217905550600854600a81905550600854600981905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600680546111dd9061307c565b80601f01602080910402602001604051908101604052809291908181526020018280546112099061307c565b80156112545780601f1061122b57610100808354040283529160200191611254565b820191905f5260205f20905b81548152906001019060200180831161123757829003601f168201915b5050505050905090565b611266611819565b73ffffffffffffffffffffffffffffffffffffffff166112846111a7565b73ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906130f6565b60405180910390fd5b80600b8190555050565b5f6112f76112f0611819565b84846119e7565b506001905092915050565b60095481565b601060179054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601060169054906101000a900460ff1681565b6113b8611819565b73ffffffffffffffffffffffffffffffffffffffff166113d66111a7565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906130f6565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a9061315e565b60405180910390fd5b5f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161155990613288565b5f6040518083038185875af1925050503d805f8114611593576040519150601f19603f3d011682016040523d82523d5f602084013e611598565b606091505b50509050806115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d3906132e6565b60405180910390fd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611629611819565b73ffffffffffffffffffffffffffffffffffffffff166116476111a7565b73ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611694906130f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170290613374565b60405180910390fd5b611714816120c7565b50565b600a5481565b611725611819565b73ffffffffffffffffffffffffffffffffffffffff166117436111a7565b73ffffffffffffffffffffffffffffffffffffffff1614611799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611790906130f6565b60405180910390fd5b601060179054906101000a900460ff16156117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e0906133dc565b60405180910390fd5b6001601060176101000a81548160ff021916908315150217905550565b601060159054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611890575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016118879190612fba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611900575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016118f79190612fba565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119da9190612bfb565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a58575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611a4f9190612fba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac8575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611abf9190612fba565b60405180910390fd5b5f8203611b01576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601260149054906101000a900460ff1615611b2857611b21848484612188565b905061205e565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bc6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bde5750601060169054906101000a900460ff165b15611d2657601060179054906101000a900460ff16611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990613444565b60405180910390fd5b600954821115611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e906134ac565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611d2557600a54611ce383611cd586610faa565b61235290919063ffffffff16565b1115611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b90613514565b60405180910390fd5b5b5b5f611d3030610faa565b90505f600b548210159050808015611d555750601260149054906101000a900460ff16155b8015611da8575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611dc05750601060149054906101000a900460ff165b8015611e13575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e66575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e7557611e74826123af565b5b611efc846040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120659092919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611f488787612495565b611f5c57611f578787876125f1565b611f5e565b845b9050611fb08160015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235290919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161204e9190612bfb565b60405180910390a3600193505050505b9392505050565b5f8383111582906120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a39190612c9e565b60405180910390fd5b505f83856120ba919061355f565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f612210826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120659092919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122a18260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161233f9190612bfb565b60405180910390a3600190509392505050565b5f8082846123609190613592565b9050838110156123a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239c9061360f565b60405180910390fd5b8091505092915050565b6001601260146101000a81548160ff021916908315150217905550601060159054906101000a900460ff16156123e557600b5490505b5f4790506123f28261280a565b5f6124068247612a7990919063ffffffff16565b90505f81111561247657600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612474573d5f803e3d5ffd5b505b50505f601260146101000a81548160ff02191690831515021790555050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612531575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561253f57600190506125eb565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806125da575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156125e7575f90506125eb565b5f90505b92915050565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126725761266b600e5461265d600c5486612ac290919063ffffffff16565b612b3990919063ffffffff16565b90506126ee565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126ed576126ea600e546126dc600d5486612ac290919063ffffffff16565b612b3990919063ffffffff16565b90505b5b5f8111156127ed576127468160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127e49190612bfb565b60405180910390a35b6128008184612a7990919063ffffffff16565b9150509392505050565b5f600267ffffffffffffffff8111156128265761282561362d565b5b6040519080825280602002602001820160405280156128545781602001602082028036833780820191505090505b50905030815f8151811061286b5761286a61365a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561290f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612933919061369b565b816001815181106129475761294661365a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129ad3060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611820565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a0f9594939291906137b6565b5f604051808303815f87803b158015612a26575f80fd5b505af1158015612a38573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a6d92919061380e565b60405180910390a15050565b5f612aba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612065565b905092915050565b5f808303612ad2575f9050612b33565b5f8284612adf919061383c565b9050828482612aee91906138aa565b14612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061394a565b60405180910390fd5b809150505b92915050565b5f612b7a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b82565b905092915050565b5f8083118290612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf9190612c9e565b60405180910390fd5b505f8385612bd691906138aa565b9050809150509392505050565b5f819050919050565b612bf581612be3565b82525050565b5f602082019050612c0e5f830184612bec565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c4b578082015181840152602081019050612c30565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c7082612c14565b612c7a8185612c1e565b9350612c8a818560208601612c2e565b612c9381612c56565b840191505092915050565b5f6020820190508181035f830152612cb68184612c66565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612d00612cfb612cf684612cbe565b612cdd565b612cbe565b9050919050565b5f612d1182612ce6565b9050919050565b5f612d2282612d07565b9050919050565b612d3281612d18565b82525050565b5f602082019050612d4b5f830184612d29565b92915050565b5f80fd5b5f612d5f82612cbe565b9050919050565b612d6f81612d55565b8114612d79575f80fd5b50565b5f81359050612d8a81612d66565b92915050565b612d9981612be3565b8114612da3575f80fd5b50565b5f81359050612db481612d90565b92915050565b5f8060408385031215612dd057612dcf612d51565b5b5f612ddd85828601612d7c565b9250506020612dee85828601612da6565b9150509250929050565b5f8115159050919050565b612e0c81612df8565b82525050565b5f602082019050612e255f830184612e03565b92915050565b5f60208284031215612e4057612e3f612d51565b5b5f612e4d84828501612d7c565b91505092915050565b612e5f81612df8565b8114612e69575f80fd5b50565b5f81359050612e7a81612e56565b92915050565b5f8060408385031215612e9657612e95612d51565b5b5f612ea385828601612e6c565b9250506020612eb485828601612e6c565b9150509250929050565b5f805f60608486031215612ed557612ed4612d51565b5b5f612ee286828701612d7c565b9350506020612ef386828701612d7c565b9250506040612f0486828701612da6565b9150509250925092565b5f60ff82169050919050565b612f2381612f0e565b82525050565b5f602082019050612f3c5f830184612f1a565b92915050565b5f8060408385031215612f5857612f57612d51565b5b5f612f6585828601612da6565b9250506020612f7685828601612da6565b9150509250929050565b5f60208284031215612f9557612f94612d51565b5b5f612fa284828501612da6565b91505092915050565b612fb481612d55565b82525050565b5f602082019050612fcd5f830184612fab565b92915050565b5f8060408385031215612fe957612fe8612d51565b5b5f612ff685828601612d7c565b925050602061300785828601612d7c565b9150509250929050565b5f806040838503121561302757613026612d51565b5b5f61303485828601612d7c565b925050602061304585828601612e6c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061309357607f821691505b6020821081036130a6576130a561304f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130e0602083612c1e565b91506130eb826130ac565b602082019050919050565b5f6020820190508181035f83015261310d816130d4565b9050919050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613148600c83612c1e565b915061315382613114565b602082019050919050565b5f6020820190508181035f8301526131758161313c565b9050919050565b5f60408201905061318f5f830185612fab565b61319c6020830184612bec565b9392505050565b5f81519050919050565b5f81905092915050565b5f6131c1826131a3565b6131cb81856131ad565b93506131db818560208601612c2e565b80840191505092915050565b5f6131f282846131b7565b915081905092915050565b7f546f6b656e207061796d656e74206661696c65640000000000000000000000005f82015250565b5f613231601483612c1e565b915061323c826131fd565b602082019050919050565b5f6020820190508181035f83015261325e81613225565b9050919050565b50565b5f6132735f836131ad565b915061327e82613265565b5f82019050919050565b5f61329282613268565b9150819050919050565b7f5472616e73616374696f6e204661696c656421210000000000000000000000005f82015250565b5f6132d0601483612c1e565b91506132db8261329c565b602082019050919050565b5f6020820190508181035f8301526132fd816132c4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61335e602683612c1e565b915061336982613304565b604082019050919050565b5f6020820190508181035f83015261338b81613352565b9050919050565b7f416c726561647920456e61626c656421000000000000000000000000000000005f82015250565b5f6133c6601083612c1e565b91506133d182613392565b602082019050919050565b5f6020820190508181035f8301526133f3816133ba565b9050919050565b7f5472616465204e6f7420416374697665210000000000000000000000000000005f82015250565b5f61342e601183612c1e565b9150613439826133fa565b602082019050919050565b5f6020820190508181035f83015261345b81613422565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f613496601383612c1e565b91506134a182613462565b602082019050919050565b5f6020820190508181035f8301526134c38161348a565b9050919050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f6134fe601183612c1e565b9150613509826134ca565b602082019050919050565b5f6020820190508181035f83015261352b816134f2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61356982612be3565b915061357483612be3565b925082820390508181111561358c5761358b613532565b5b92915050565b5f61359c82612be3565b91506135a783612be3565b92508282019050808211156135bf576135be613532565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6135f9601b83612c1e565b9150613604826135c5565b602082019050919050565b5f6020820190508181035f830152613626816135ed565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061369581612d66565b92915050565b5f602082840312156136b0576136af612d51565b5b5f6136bd84828501613687565b91505092915050565b5f819050919050565b5f6136e96136e46136df846136c6565b612cdd565b612be3565b9050919050565b6136f9816136cf565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61373181612d55565b82525050565b5f6137428383613728565b60208301905092915050565b5f602082019050919050565b5f613764826136ff565b61376e8185613709565b935061377983613719565b805f5b838110156137a95781516137908882613737565b975061379b8361374e565b92505060018101905061377c565b5085935050505092915050565b5f60a0820190506137c95f830188612bec565b6137d660208301876136f0565b81810360408301526137e8818661375a565b90506137f76060830185612fab565b6138046080830184612bec565b9695505050505050565b5f6040820190506138215f830185612bec565b8181036020830152613833818461375a565b90509392505050565b5f61384682612be3565b915061385183612be3565b925082820261385f81612be3565b9150828204841483151761387657613875613532565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138b482612be3565b91506138bf83612be3565b9250826138cf576138ce61387d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613934602183612c1e565b915061393f826138da565b604082019050919050565b5f6020820190508181035f83015261396181613928565b905091905056fea26469706673582212200b5a5731b09616c1f420341e388204d8068ead8d71662d8cac328d926421bb6964736f6c63430008170033

Deployed Bytecode

0x60806040526004361061021d575f3560e01c8063715018a611610122578063dd62ed3e116100aa578063f242ab411161006e578063f242ab4114610798578063f2fde38b146107c2578063f8b45b05146107ea578063fb201b1d14610814578063fdd24dfe1461082a57610224565b8063dd62ed3e146106b8578063de96c5bb146106f4578063df8408fe1461071e578063e6b2603b14610746578063f0e2b1821461075c57610224565b806395d89b41116100f157806395d89b41146105d65780639d0014b114610600578063a9059cbb14610628578063c3f70b5214610664578063c6c670d01461068e57610224565b8063715018a614610558578063728d41c91461056e578063751039fc146105965780638da5cb5b146105ac57610224565b8063313ce567116101a55780635c85974f116101745780635c85974f1461047a5780635d098b38146104a25780636cd56878146104ca5780636ddd1713146104f257806370a082311461051c57610224565b8063313ce567146103d6578063470624021461040057806352f7c9881461042a578063573761981461045257610224565b80630d29573f116101ec5780630d29573f146102e2578063108dfa431461031e57806318160ddd1461034657806323b872dd146103705780632b14ca56146103ac57610224565b80630445b6671461022857806306fdde03146102525780630758d9241461027c578063095ea7b3146102a657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c610854565b6040516102499190612bfb565b60405180910390f35b34801561025d575f80fd5b5061026661085a565b6040516102739190612c9e565b60405180910390f35b348015610287575f80fd5b506102906108ea565b60405161029d9190612d38565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c79190612dba565b61090f565b6040516102d99190612e12565b60405180910390f35b3480156102ed575f80fd5b5061030860048036038101906103039190612e2b565b61092c565b6040516103159190612e12565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190612e80565b610949565b005b348015610351575f80fd5b5061035a6109fd565b6040516103679190612bfb565b60405180910390f35b34801561037b575f80fd5b5061039660048036038101906103919190612ebe565b610a06565b6040516103a39190612e12565b60405180910390f35b3480156103b7575f80fd5b506103c0610af8565b6040516103cd9190612bfb565b60405180910390f35b3480156103e1575f80fd5b506103ea610afe565b6040516103f79190612f29565b60405180910390f35b34801561040b575f80fd5b50610414610b13565b6040516104219190612bfb565b60405180910390f35b348015610435575f80fd5b50610450600480360381019061044b9190612f42565b610b19565b005b34801561045d575f80fd5b5061047860048036038101906104739190612dba565b610ba7565b005b348015610485575f80fd5b506104a0600480360381019061049b9190612f80565b610d93565b005b3480156104ad575f80fd5b506104c860048036038101906104c39190612e2b565b610e19565b005b3480156104d5575f80fd5b506104f060048036038101906104eb9190612e2b565b610ed8565b005b3480156104fd575f80fd5b50610506610f97565b6040516105139190612e12565b60405180910390f35b348015610527575f80fd5b50610542600480360381019061053d9190612e2b565b610faa565b60405161054f9190612bfb565b60405180910390f35b348015610563575f80fd5b5061056c610ff0565b005b348015610579575f80fd5b50610594600480360381019061058f9190612f80565b611077565b005b3480156105a1575f80fd5b506105aa6110fd565b005b3480156105b7575f80fd5b506105c06111a7565b6040516105cd9190612fba565b60405180910390f35b3480156105e1575f80fd5b506105ea6111ce565b6040516105f79190612c9e565b60405180910390f35b34801561060b575f80fd5b5061062660048036038101906106219190612f80565b61125e565b005b348015610633575f80fd5b5061064e60048036038101906106499190612dba565b6112e4565b60405161065b9190612e12565b60405180910390f35b34801561066f575f80fd5b50610678611302565b6040516106859190612bfb565b60405180910390f35b348015610699575f80fd5b506106a2611308565b6040516106af9190612e12565b60405180910390f35b3480156106c3575f80fd5b506106de60048036038101906106d99190612fd3565b61131b565b6040516106eb9190612bfb565b60405180910390f35b3480156106ff575f80fd5b5061070861139d565b6040516107159190612e12565b60405180910390f35b348015610729575f80fd5b50610744600480360381019061073f9190613011565b6113b0565b005b348015610751575f80fd5b5061075a611484565b005b348015610767575f80fd5b50610782600480360381019061077d9190612e2b565b6115df565b60405161078f9190612e12565b60405180910390f35b3480156107a3575f80fd5b506107ac6115fc565b6040516107b99190612fba565b60405180910390f35b3480156107cd575f80fd5b506107e860048036038101906107e39190612e2b565b611621565b005b3480156107f5575f80fd5b506107fe611717565b60405161080b9190612bfb565b60405180910390f35b34801561081f575f80fd5b5061082861171d565b005b348015610835575f80fd5b5061083e611806565b60405161084b9190612e12565b60405180910390f35b600b5481565b6060600580546108699061307c565b80601f01602080910402602001604051908101604052809291908181526020018280546108959061307c565b80156108e05780601f106108b7576101008083540402835291602001916108e0565b820191905f5260205f20905b8154815290600101906020018083116108c357829003601f168201915b5050505050905090565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61092261091b611819565b8484611820565b6001905092915050565b6003602052805f5260405f205f915054906101000a900460ff1681565b610951611819565b73ffffffffffffffffffffffffffffffffffffffff1661096f6111a7565b73ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc906130f6565b60405180910390fd5b81601060146101000a81548160ff02191690831515021790555080601060156101000a81548160ff0219169083151502179055505050565b5f600854905090565b5f610a128484846119e7565b50610aed84610a1f611819565b610ae8856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a9f611819565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120659092919063ffffffff16565b611820565b600190509392505050565b600d5481565b5f60075f9054906101000a900460ff16905090565b600c5481565b610b21611819565b73ffffffffffffffffffffffffffffffffffffffff16610b3f6111a7565b73ffffffffffffffffffffffffffffffffffffffff1614610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8c906130f6565b60405180910390fd5b81600c8190555080600d819055505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d9061315e565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051602401610c8292919061317c565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d0c91906131e7565b5f604051808303815f865af19150503d805f8114610d45576040519150601f19603f3d011682016040523d82523d5f602084013e610d4a565b606091505b5050905080610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8590613247565b60405180910390fd5b505050565b610d9b611819565b73ffffffffffffffffffffffffffffffffffffffff16610db96111a7565b73ffffffffffffffffffffffffffffffffffffffff1614610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e06906130f6565b60405180910390fd5b8060098190555050565b610e21611819565b73ffffffffffffffffffffffffffffffffffffffff16610e3f6111a7565b73ffffffffffffffffffffffffffffffffffffffff1614610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c906130f6565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ee0611819565b73ffffffffffffffffffffffffffffffffffffffff16610efe6111a7565b73ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b906130f6565b60405180910390fd5b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060149054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ff8611819565b73ffffffffffffffffffffffffffffffffffffffff166110166111a7565b73ffffffffffffffffffffffffffffffffffffffff161461106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611063906130f6565b60405180910390fd5b6110755f6120c7565b565b61107f611819565b73ffffffffffffffffffffffffffffffffffffffff1661109d6111a7565b73ffffffffffffffffffffffffffffffffffffffff16146110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea906130f6565b60405180910390fd5b80600a8190555050565b611105611819565b73ffffffffffffffffffffffffffffffffffffffff166111236111a7565b73ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906130f6565b60405180910390fd5b5f601060166101000a81548160ff021916908315150217905550600854600a81905550600854600981905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600680546111dd9061307c565b80601f01602080910402602001604051908101604052809291908181526020018280546112099061307c565b80156112545780601f1061122b57610100808354040283529160200191611254565b820191905f5260205f20905b81548152906001019060200180831161123757829003601f168201915b5050505050905090565b611266611819565b73ffffffffffffffffffffffffffffffffffffffff166112846111a7565b73ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906130f6565b60405180910390fd5b80600b8190555050565b5f6112f76112f0611819565b84846119e7565b506001905092915050565b60095481565b601060179054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b601060169054906101000a900460ff1681565b6113b8611819565b73ffffffffffffffffffffffffffffffffffffffff166113d66111a7565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906130f6565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a9061315e565b60405180910390fd5b5f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161155990613288565b5f6040518083038185875af1925050503d805f8114611593576040519150601f19603f3d011682016040523d82523d5f602084013e611598565b606091505b50509050806115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d3906132e6565b60405180910390fd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611629611819565b73ffffffffffffffffffffffffffffffffffffffff166116476111a7565b73ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611694906130f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170290613374565b60405180910390fd5b611714816120c7565b50565b600a5481565b611725611819565b73ffffffffffffffffffffffffffffffffffffffff166117436111a7565b73ffffffffffffffffffffffffffffffffffffffff1614611799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611790906130f6565b60405180910390fd5b601060179054906101000a900460ff16156117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e0906133dc565b60405180910390fd5b6001601060176101000a81548160ff021916908315150217905550565b601060159054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611890575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016118879190612fba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611900575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016118f79190612fba565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119da9190612bfb565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a58575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611a4f9190612fba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac8575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611abf9190612fba565b60405180910390fd5b5f8203611b01576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601260149054906101000a900460ff1615611b2857611b21848484612188565b905061205e565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bc6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bde5750601060169054906101000a900460ff165b15611d2657601060179054906101000a900460ff16611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990613444565b60405180910390fd5b600954821115611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e906134ac565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611d2557600a54611ce383611cd586610faa565b61235290919063ffffffff16565b1115611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b90613514565b60405180910390fd5b5b5b5f611d3030610faa565b90505f600b548210159050808015611d555750601260149054906101000a900460ff16155b8015611da8575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611dc05750601060149054906101000a900460ff165b8015611e13575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e66575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e7557611e74826123af565b5b611efc846040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120659092919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611f488787612495565b611f5c57611f578787876125f1565b611f5e565b845b9050611fb08160015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235290919063ffffffff16565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161204e9190612bfb565b60405180910390a3600193505050505b9392505050565b5f8383111582906120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a39190612c9e565b60405180910390fd5b505f83856120ba919061355f565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f612210826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120659092919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122a18260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161233f9190612bfb565b60405180910390a3600190509392505050565b5f8082846123609190613592565b9050838110156123a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239c9061360f565b60405180910390fd5b8091505092915050565b6001601260146101000a81548160ff021916908315150217905550601060159054906101000a900460ff16156123e557600b5490505b5f4790506123f28261280a565b5f6124068247612a7990919063ffffffff16565b90505f81111561247657600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612474573d5f803e3d5ffd5b505b50505f601260146101000a81548160ff02191690831515021790555050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612531575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561253f57600190506125eb565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806125da575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156125e7575f90506125eb565b5f90505b92915050565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126725761266b600e5461265d600c5486612ac290919063ffffffff16565b612b3990919063ffffffff16565b90506126ee565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126ed576126ea600e546126dc600d5486612ac290919063ffffffff16565b612b3990919063ffffffff16565b90505b5b5f8111156127ed576127468160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461235290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127e49190612bfb565b60405180910390a35b6128008184612a7990919063ffffffff16565b9150509392505050565b5f600267ffffffffffffffff8111156128265761282561362d565b5b6040519080825280602002602001820160405280156128545781602001602082028036833780820191505090505b50905030815f8151811061286b5761286a61365a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561290f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612933919061369b565b816001815181106129475761294661365a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129ad3060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611820565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a0f9594939291906137b6565b5f604051808303815f87803b158015612a26575f80fd5b505af1158015612a38573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a6d92919061380e565b60405180910390a15050565b5f612aba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612065565b905092915050565b5f808303612ad2575f9050612b33565b5f8284612adf919061383c565b9050828482612aee91906138aa565b14612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061394a565b60405180910390fd5b809150505b92915050565b5f612b7a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b82565b905092915050565b5f8083118290612bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbf9190612c9e565b60405180910390fd5b505f8385612bd691906138aa565b9050809150509392505050565b5f819050919050565b612bf581612be3565b82525050565b5f602082019050612c0e5f830184612bec565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c4b578082015181840152602081019050612c30565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c7082612c14565b612c7a8185612c1e565b9350612c8a818560208601612c2e565b612c9381612c56565b840191505092915050565b5f6020820190508181035f830152612cb68184612c66565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612d00612cfb612cf684612cbe565b612cdd565b612cbe565b9050919050565b5f612d1182612ce6565b9050919050565b5f612d2282612d07565b9050919050565b612d3281612d18565b82525050565b5f602082019050612d4b5f830184612d29565b92915050565b5f80fd5b5f612d5f82612cbe565b9050919050565b612d6f81612d55565b8114612d79575f80fd5b50565b5f81359050612d8a81612d66565b92915050565b612d9981612be3565b8114612da3575f80fd5b50565b5f81359050612db481612d90565b92915050565b5f8060408385031215612dd057612dcf612d51565b5b5f612ddd85828601612d7c565b9250506020612dee85828601612da6565b9150509250929050565b5f8115159050919050565b612e0c81612df8565b82525050565b5f602082019050612e255f830184612e03565b92915050565b5f60208284031215612e4057612e3f612d51565b5b5f612e4d84828501612d7c565b91505092915050565b612e5f81612df8565b8114612e69575f80fd5b50565b5f81359050612e7a81612e56565b92915050565b5f8060408385031215612e9657612e95612d51565b5b5f612ea385828601612e6c565b9250506020612eb485828601612e6c565b9150509250929050565b5f805f60608486031215612ed557612ed4612d51565b5b5f612ee286828701612d7c565b9350506020612ef386828701612d7c565b9250506040612f0486828701612da6565b9150509250925092565b5f60ff82169050919050565b612f2381612f0e565b82525050565b5f602082019050612f3c5f830184612f1a565b92915050565b5f8060408385031215612f5857612f57612d51565b5b5f612f6585828601612da6565b9250506020612f7685828601612da6565b9150509250929050565b5f60208284031215612f9557612f94612d51565b5b5f612fa284828501612da6565b91505092915050565b612fb481612d55565b82525050565b5f602082019050612fcd5f830184612fab565b92915050565b5f8060408385031215612fe957612fe8612d51565b5b5f612ff685828601612d7c565b925050602061300785828601612d7c565b9150509250929050565b5f806040838503121561302757613026612d51565b5b5f61303485828601612d7c565b925050602061304585828601612e6c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061309357607f821691505b6020821081036130a6576130a561304f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130e0602083612c1e565b91506130eb826130ac565b602082019050919050565b5f6020820190508181035f83015261310d816130d4565b9050919050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613148600c83612c1e565b915061315382613114565b602082019050919050565b5f6020820190508181035f8301526131758161313c565b9050919050565b5f60408201905061318f5f830185612fab565b61319c6020830184612bec565b9392505050565b5f81519050919050565b5f81905092915050565b5f6131c1826131a3565b6131cb81856131ad565b93506131db818560208601612c2e565b80840191505092915050565b5f6131f282846131b7565b915081905092915050565b7f546f6b656e207061796d656e74206661696c65640000000000000000000000005f82015250565b5f613231601483612c1e565b915061323c826131fd565b602082019050919050565b5f6020820190508181035f83015261325e81613225565b9050919050565b50565b5f6132735f836131ad565b915061327e82613265565b5f82019050919050565b5f61329282613268565b9150819050919050565b7f5472616e73616374696f6e204661696c656421210000000000000000000000005f82015250565b5f6132d0601483612c1e565b91506132db8261329c565b602082019050919050565b5f6020820190508181035f8301526132fd816132c4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61335e602683612c1e565b915061336982613304565b604082019050919050565b5f6020820190508181035f83015261338b81613352565b9050919050565b7f416c726561647920456e61626c656421000000000000000000000000000000005f82015250565b5f6133c6601083612c1e565b91506133d182613392565b602082019050919050565b5f6020820190508181035f8301526133f3816133ba565b9050919050565b7f5472616465204e6f7420416374697665210000000000000000000000000000005f82015250565b5f61342e601183612c1e565b9150613439826133fa565b602082019050919050565b5f6020820190508181035f83015261345b81613422565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f613496601383612c1e565b91506134a182613462565b602082019050919050565b5f6020820190508181035f8301526134c38161348a565b9050919050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f6134fe601183612c1e565b9150613509826134ca565b602082019050919050565b5f6020820190508181035f83015261352b816134f2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61356982612be3565b915061357483612be3565b925082820390508181111561358c5761358b613532565b5b92915050565b5f61359c82612be3565b91506135a783612be3565b92508282019050808211156135bf576135be613532565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6135f9601b83612c1e565b9150613604826135c5565b602082019050919050565b5f6020820190508181035f830152613626816135ed565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061369581612d66565b92915050565b5f602082840312156136b0576136af612d51565b5b5f6136bd84828501613687565b91505092915050565b5f819050919050565b5f6136e96136e46136df846136c6565b612cdd565b612be3565b9050919050565b6136f9816136cf565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61373181612d55565b82525050565b5f6137428383613728565b60208301905092915050565b5f602082019050919050565b5f613764826136ff565b61376e8185613709565b935061377983613719565b805f5b838110156137a95781516137908882613737565b975061379b8361374e565b92505060018101905061377c565b5085935050505092915050565b5f60a0820190506137c95f830188612bec565b6137d660208301876136f0565b81810360408301526137e8818661375a565b90506137f76060830185612fab565b6138046080830184612bec565b9695505050505050565b5f6040820190506138215f830185612bec565b8181036020830152613833818461375a565b90509392505050565b5f61384682612be3565b915061385183612be3565b925082820261385f81612be3565b9150828204841483151761387657613875613532565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138b482612be3565b91506138bf83612be3565b9250826138cf576138ce61387d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613934602183612c1e565b915061393f826138da565b604082019050919050565b5f6020820190508181035f83015261396181613928565b905091905056fea26469706673582212200b5a5731b09616c1f420341e388204d8068ead8d71662d8cac328d926421bb6964736f6c63430008170033

Deployed Bytecode Sourcemap

4238:10199:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4988:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6389:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5452:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7056:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4448:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14116:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6666:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7875:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5105:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6575:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5077:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13063:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12741:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13757:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13872:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13994;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5305:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6774:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1755:94;;;;;;;;;;;;;:::i;:::-;;13644:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13207:164;;;;;;;;;;;;;:::i;:::-;;1446:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6480;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14302:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7700:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4805:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5420:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6905:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5382:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13515:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12496:237;;;;;;;;;;;;;:::i;:::-;;4504:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5489:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1857:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4878:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13379:128;;;;;;;;;;;;;:::i;:::-;;5342:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4988:59;;;;:::o;6389:83::-;6426:13;6459:5;6452:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6389:83;:::o;5452:30::-;;;;;;;;;;;;;:::o;7056:161::-;7131:4;7148:39;7157:12;:10;:12::i;:::-;7171:7;7180:6;7148:8;:39::i;:::-;7205:4;7198:11;;7056:161;;;;:::o;4448:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;14116:178::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14236:12:::1;14222:11;;:26;;;;;;;;;;;;;;;;;;14276:10;14259:14;;:27;;;;;;;;;;;;;;;;;;14116:178:::0;;:::o;6666:100::-;6719:7;6746:12;;6739:19;;6666:100;:::o;7875:297::-;7973:4;7990:36;8000:6;8008:9;8019:6;7990:9;:36::i;:::-;;8037:105;8046:6;8054:12;:10;:12::i;:::-;8068:73;8106:6;8068:73;;;;;;;;;;;;;;;;;:11;:19;8080:6;8068:19;;;;;;;;;;;;;;;:33;8088:12;:10;:12::i;:::-;8068:33;;;;;;;;;;;;;;;;:37;;:73;;;;;:::i;:::-;8037:8;:105::i;:::-;8160:4;8153:11;;7875:297;;;;;:::o;5105:22::-;;;;:::o;6575:83::-;6616:5;6641:9;;;;;;;;;;;6634:16;;6575:83;:::o;5077:21::-;;;;:::o;13063:136::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13153:8:::1;13144:6;:17;;;;13182:9;13172:7;:19;;;;13063:136:::0;;:::o;12741:314::-;12834:15;;;;;;;;;;;12820:29;;:10;:29;;;12812:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12877:12;12903:6;12895:20;;12970:15;;;;;;;;;;;12987:7;12916:79;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12895:101;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12876:120;;;13015:7;13007:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;12801:254;12741:314;;:::o;13757:103::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13844:8:::1;13827:14;:25;;;;13757:103:::0;:::o;13872:114::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13968:10:::1;13950:15;;:28;;;;;;;;;;;;;;;;;;13872:114:::0;:::o;13994:::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14090:10:::1;14072:15;;:28;;;;;;;;;;;;;;;;;;13994:114:::0;:::o;5305:30::-;;;;;;;;;;;;;:::o;6774:123::-;6840:7;6866:9;:18;6876:7;6866:18;;;;;;;;;;;;;;;;6859:25;;6774:123;;;:::o;1755:94::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:21:::1;1838:1;1820:9;:21::i;:::-;1755:94::o:0;13644:105::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13733:8:::1;13721:9;:20;;;;13644:105:::0;:::o;13207:164::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13277:5:::1;13262:12;;:20;;;;;;;;;;;;;;;;;;13305:12;;13293:9;:24;;;;13346:12;;13329:14;:29;;;;13207:164::o:0;1446:87::-;1492:7;1519:6;;;;;;;;;;;1512:13;;1446:87;:::o;6480:::-;6519:13;6552:7;6545:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6480:87;:::o;14302:130::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14414:10:::1;14398:13;:26;;;;14302:130:::0;:::o;7700:167::-;7778:4;7795:42;7805:12;:10;:12::i;:::-;7819:9;7830:6;7795:9;:42::i;:::-;;7855:4;7848:11;;7700:167;;;;:::o;4805:61::-;;;;:::o;5420:23::-;;;;;;;;;;;;;:::o;6905:143::-;6986:7;7013:11;:18;7025:5;7013:18;;;;;;;;;;;;;;;:27;7032:7;7013:27;;;;;;;;;;;;;;;;7006:34;;6905:143;;;;:::o;5382:31::-;;;;;;;;;;;;;:::o;13515:121::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13621:7:::1;13596:16;:22;13613:4;13596:22;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13515:121:::0;;:::o;12496:237::-;12562:15;;;;;;;;;;;12548:29;;:10;:29;;;12540:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12605:7;12625:15;;;;;;;;;;;12617:29;;12654:21;12617:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12604:76;;;12699:2;12691:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;12528:205;12496:237::o;4504:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;5489:22::-;;;;;;;;;;;;;:::o;1857:229::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1980:1:::1;1960:22;;:8;:22;;::::0;1938:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2059:19;2069:8;2059:9;:19::i;:::-;1857:229:::0;:::o;4878:55::-;;;;:::o;13379:128::-;1678:12;:10;:12::i;:::-;1667:23;;:7;:5;:7::i;:::-;:23;;;1659:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13439:11:::1;;;;;;;;;;;13438:12;13430:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13495:4;13481:11;;:18;;;;;;;;;;;;;;;;;;13379:128::o:0;5342:33::-;;;;;;;;;;;;;:::o;229:98::-;282:7;309:10;302:17;;229:98;:::o;7225:382::-;7331:1;7314:19;;:5;:19;;;7310:91;;7386:1;7357:32;;;;;;;;;;;:::i;:::-;;;;;;;;7310:91;7434:1;7415:21;;:7;:21;;;7411:92;;7488:1;7460:31;;;;;;;;;;;:::i;:::-;;;;;;;;7411:92;7545:6;7515:11;:18;7527:5;7515:18;;;;;;;;;;;;;;;:27;7534:7;7515:27;;;;;;;;;;;;;;;:36;;;;7583:7;7567:32;;7576:5;7567:32;;;7592:6;7567:32;;;;;;:::i;:::-;;;;;;;;7225:382;;;:::o;8180:1812::-;8267:4;8308:1;8290:20;;:6;:20;;;8286:90;;8361:1;8334:30;;;;;;;;;;;:::i;:::-;;;;;;;;8286:90;8411:1;8390:23;;:9;:23;;;8386:95;;8466:1;8437:32;;;;;;;;;;;:::i;:::-;;;;;;;;8386:95;8504:1;8494:6;:11;8491:69;;8529:19;;;;;;;;;;;;;;8491:69;8580:6;;;;;;;;;;;8576:1407;;;8610:41;8625:6;8633:9;8644:6;8610:14;:41::i;:::-;8603:48;;;;8576:1407;8699:16;:24;8716:6;8699:24;;;;;;;;;;;;;;;;;;;;;;;;;8698:25;:57;;;;;8728:16;:27;8745:9;8728:27;;;;;;;;;;;;;;;;;;;;;;;;;8727:28;8698:57;:73;;;;;8759:12;;;;;;;;;;;8698:73;8695:393;;;8800:11;;;;;;;;;;;8792:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;8869:14;;8859:6;:24;;8851:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;8930:12;:23;8943:9;8930:23;;;;;;;;;;;;;;;;;;;;;;;;;8926:147;;9022:9;;8986:32;9011:6;8986:20;8996:9;8986;:20::i;:::-;:24;;:32;;;;:::i;:::-;:45;;8978:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;8926:147;8695:393;9104:28;9135:24;9153:4;9135:9;:24::i;:::-;9104:55;;9174:28;9229:13;;9205:20;:37;;9174:68;;9281:23;:52;;;;;9327:6;;;;;;;;;;;9326:7;9281:52;:95;;;;;9356:12;:20;9369:6;9356:20;;;;;;;;;;;;;;;;;;;;;;;;;9355:21;9281:95;:128;;;;;9398:11;;;;;;;;;;;9281:128;:174;;;;;9431:16;:24;9448:6;9431:24;;;;;;;;;;;;;;;;;;;;;;;;;9430:25;9281:174;:223;;;;;9477:16;:27;9494:9;9477:27;;;;;;;;;;;;;;;;;;;;;;;;;9476:28;9281:223;9259:330;;;9543:30;9552:20;9543:8;:30::i;:::-;9259:330;9625:53;9647:6;9625:53;;;;;;;;;;;;;;;;;:9;:17;9635:6;9625:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9605:9;:17;9615:6;9605:17;;;;;;;;;;;;;;;:73;;;;9695:20;9718:31;9732:6;9739:9;9718:13;:31::i;:::-;:84;;9761:41;9776:6;9784:9;9795:6;9761:14;:41::i;:::-;9718:84;;;9752:6;9718:84;9695:107;;9842:38;9867:12;9842:9;:20;9852:9;9842:20;;;;;;;;;;;;;;;;:24;;:38;;;;:::i;:::-;9819:9;:20;9829:9;9819:20;;;;;;;;;;;;;;;:61;;;;9919:9;9902:41;;9911:6;9902:41;;;9930:12;9902:41;;;;;;:::i;:::-;;;;;;;;9965:4;9958:11;;;;;8180:1812;;;;;;:::o;2629:192::-;2715:7;2748:1;2743;:6;;2751:12;2735:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2775:9;2791:1;2787;:5;;;;:::i;:::-;2775:17;;2812:1;2805:8;;;2629:192;;;;;:::o;2094:173::-;2150:16;2169:6;;;;;;;;;;;2150:25;;2195:8;2186:6;;:17;;;;;;;;;;;;;;;;;;2250:8;2219:40;;2240:8;2219:40;;;;;;;;;;;;2139:128;2094:173;:::o;10000:330::-;10093:4;10130:53;10152:6;10130:53;;;;;;;;;;;;;;;;;:9;:17;10140:6;10130:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10110:9;:17;10120:6;10110:17;;;;;;;;;;;;;;;:73;;;;10217:32;10242:6;10217:9;:20;10227:9;10217:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10194:9;:20;10204:9;10194:20;;;;;;;;;;;;;;;:55;;;;10282:9;10265:35;;10274:6;10265:35;;;10293:6;10265:35;;;;;;:::i;:::-;;;;;;;;10318:4;10311:11;;10000:330;;;;;:::o;2296:181::-;2354:7;2374:9;2390:1;2386;:5;;;;:::i;:::-;2374:17;;2415:1;2410;:6;;2402:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2468:1;2461:8;;;2296:181;;;;:::o;11423:409::-;5580:4;5571:6;;:13;;;;;;;;;;;;;;;;;;11497:14:::1;;;;;;;;;;;11494:50;;;11531:13;;11513:31;;11494:50;11557:22;11582:21;11557:46;;11614:33;11631:15;11614:16;:33::i;:::-;11658:22;11683:41;11709:14;11683:21;:25;;:41;;;;:::i;:::-;11658:66;;11757:1;11740:14;:18;11737:85;;;11781:15;;;;;;;;;;;11773:33;;:49;11807:14;11773:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11737:85;11481:351;;5616:5:::0;5607:6;;:14;;;;;;;;;;;;;;;;;;11423:409;:::o;10342:364::-;10423:4;10443:16;:24;10460:6;10443:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;10471:16;:27;10488:9;10471:27;;;;;;;;;;;;;;;;;;;;;;;;;10443:55;10440:259;;;10522:4;10515:11;;;;10440:259;10557:12;:20;10570:6;10557:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;10581:12;:23;10594:9;10581:23;;;;;;;;;;;;;;;;;;;;;;;;;10557:47;10553:146;;;10628:5;10621:12;;;;10553:146;10682:5;10675:12;;10342:364;;;;;:::o;10716:697::-;10809:7;10839:14;10896:12;:20;10909:6;10896:20;;;;;;;;;;;;;;;;;;;;;;;;;10893:246;;;10950:38;10973:14;;10950:18;10961:6;;10950;:10;;:18;;;;:::i;:::-;:22;;:38;;;;:::i;:::-;10938:50;;10893:246;;;11027:12;:23;11040:9;11027:23;;;;;;;;;;;;;;;;;;;;;;;;;11024:115;;;11084:39;11108:14;;11084:19;11095:7;;11084:6;:10;;:19;;;;:::i;:::-;:23;;:39;;;;:::i;:::-;11072:51;;11024:115;10893:246;11170:1;11158:9;:13;11155:185;;;11219:39;11248:9;11219;:24;11237:4;11219:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11192:9;:24;11210:4;11192:24;;;;;;;;;;;;;;;:66;;;;11307:4;11282:42;;11291:6;11282:42;;;11314:9;11282:42;;;;;;:::i;:::-;;;;;;;;11155:185;11363:21;11374:9;11363:6;:10;;:21;;;;:::i;:::-;11356:28;;;10716:697;;;;;:::o;11840:648::-;11966:21;12004:1;11990:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11966:40;;12035:4;12017;12022:1;12017:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12061:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12051:4;12056:1;12051:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;12090:56;12107:4;12122:9;;;;;;;;;;;12134:11;12090:8;:56::i;:::-;12185:9;;;;;;;;;;;:60;;;12260:11;12286:1;12330:4;12357;12393:15;12185:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12445:35;12462:11;12475:4;12445:35;;;;;;;:::i;:::-;;;;;;;;11895:593;11840:648;:::o;2485:136::-;2543:7;2570:43;2574:1;2577;2570:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2563:50;;2485:136;;;;:::o;2829:250::-;2887:7;2916:1;2911;:6;2907:47;;2941:1;2934:8;;;;2907:47;2966:9;2982:1;2978;:5;;;;:::i;:::-;2966:17;;3011:1;3006;3002;:5;;;;:::i;:::-;:10;2994:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3070:1;3063:8;;;2829:250;;;;;:::o;3087:132::-;3145:7;3172:39;3176:1;3179;3172:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3165:46;;3087:132;;;;:::o;3227:278::-;3313:7;3345:1;3341;:5;3348:12;3333:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3372:9;3388:1;3384;:5;;;;:::i;:::-;3372:17;;3496:1;3489:8;;;3227:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:126::-;1821:7;1861:42;1854:5;1850:54;1839:65;;1784:126;;;:::o;1916:60::-;1944:3;1965:5;1958:12;;1916:60;;;:::o;1982:142::-;2032:9;2065:53;2083:34;2092:24;2110:5;2092:24;:::i;:::-;2083:34;:::i;:::-;2065:53;:::i;:::-;2052:66;;1982:142;;;:::o;2130:126::-;2180:9;2213:37;2244:5;2213:37;:::i;:::-;2200:50;;2130:126;;;:::o;2262:147::-;2333:9;2366:37;2397:5;2366:37;:::i;:::-;2353:50;;2262:147;;;:::o;2415:173::-;2523:58;2575:5;2523:58;:::i;:::-;2518:3;2511:71;2415:173;;:::o;2594:264::-;2708:4;2746:2;2735:9;2731:18;2723:26;;2759:92;2848:1;2837:9;2833:17;2824:6;2759:92;:::i;:::-;2594:264;;;;:::o;2945:117::-;3054:1;3051;3044:12;3191:96;3228:7;3257:24;3275:5;3257:24;:::i;:::-;3246:35;;3191:96;;;:::o;3293:122::-;3366:24;3384:5;3366:24;:::i;:::-;3359:5;3356:35;3346:63;;3405:1;3402;3395:12;3346:63;3293:122;:::o;3421:139::-;3467:5;3505:6;3492:20;3483:29;;3521:33;3548:5;3521:33;:::i;:::-;3421:139;;;;:::o;3566:122::-;3639:24;3657:5;3639:24;:::i;:::-;3632:5;3629:35;3619:63;;3678:1;3675;3668:12;3619:63;3566:122;:::o;3694:139::-;3740:5;3778:6;3765:20;3756:29;;3794:33;3821:5;3794:33;:::i;:::-;3694:139;;;;:::o;3839:474::-;3907:6;3915;3964:2;3952:9;3943:7;3939:23;3935:32;3932:119;;;3970:79;;:::i;:::-;3932:119;4090:1;4115:53;4160:7;4151:6;4140:9;4136:22;4115:53;:::i;:::-;4105:63;;4061:117;4217:2;4243:53;4288:7;4279:6;4268:9;4264:22;4243:53;:::i;:::-;4233:63;;4188:118;3839:474;;;;;:::o;4319:90::-;4353:7;4396:5;4389:13;4382:21;4371:32;;4319:90;;;:::o;4415:109::-;4496:21;4511:5;4496:21;:::i;:::-;4491:3;4484:34;4415:109;;:::o;4530:210::-;4617:4;4655:2;4644:9;4640:18;4632:26;;4668:65;4730:1;4719:9;4715:17;4706:6;4668:65;:::i;:::-;4530:210;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:116::-;5151:21;5166:5;5151:21;:::i;:::-;5144:5;5141:32;5131:60;;5187:1;5184;5177:12;5131:60;5081:116;:::o;5203:133::-;5246:5;5284:6;5271:20;5262:29;;5300:30;5324:5;5300:30;:::i;:::-;5203:133;;;;:::o;5342:462::-;5404:6;5412;5461:2;5449:9;5440:7;5436:23;5432:32;5429:119;;;5467:79;;:::i;:::-;5429:119;5587:1;5612:50;5654:7;5645:6;5634:9;5630:22;5612:50;:::i;:::-;5602:60;;5558:114;5711:2;5737:50;5779:7;5770:6;5759:9;5755:22;5737:50;:::i;:::-;5727:60;;5682:115;5342:462;;;;;:::o;5810:619::-;5887:6;5895;5903;5952:2;5940:9;5931:7;5927:23;5923:32;5920:119;;;5958:79;;:::i;:::-;5920:119;6078:1;6103:53;6148:7;6139:6;6128:9;6124:22;6103:53;:::i;:::-;6093:63;;6049:117;6205:2;6231:53;6276:7;6267:6;6256:9;6252:22;6231:53;:::i;:::-;6221:63;;6176:118;6333:2;6359:53;6404:7;6395:6;6384:9;6380:22;6359:53;:::i;:::-;6349:63;;6304:118;5810:619;;;;;:::o;6435:86::-;6470:7;6510:4;6503:5;6499:16;6488:27;;6435:86;;;:::o;6527:112::-;6610:22;6626:5;6610:22;:::i;:::-;6605:3;6598:35;6527:112;;:::o;6645:214::-;6734:4;6772:2;6761:9;6757:18;6749:26;;6785:67;6849:1;6838:9;6834:17;6825:6;6785:67;:::i;:::-;6645:214;;;;:::o;6865:474::-;6933:6;6941;6990:2;6978:9;6969:7;6965:23;6961:32;6958:119;;;6996:79;;:::i;:::-;6958:119;7116:1;7141:53;7186:7;7177:6;7166:9;7162:22;7141:53;:::i;:::-;7131:63;;7087:117;7243:2;7269:53;7314:7;7305:6;7294:9;7290:22;7269:53;:::i;:::-;7259:63;;7214:118;6865:474;;;;;:::o;7345:329::-;7404:6;7453:2;7441:9;7432:7;7428:23;7424:32;7421:119;;;7459:79;;:::i;:::-;7421:119;7579:1;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7550:117;7345:329;;;;:::o;7680:118::-;7767:24;7785:5;7767:24;:::i;:::-;7762:3;7755:37;7680:118;;:::o;7804:222::-;7897:4;7935:2;7924:9;7920:18;7912:26;;7948:71;8016:1;8005:9;8001:17;7992:6;7948:71;:::i;:::-;7804:222;;;;:::o;8032:474::-;8100:6;8108;8157:2;8145:9;8136:7;8132:23;8128:32;8125:119;;;8163:79;;:::i;:::-;8125:119;8283:1;8308:53;8353:7;8344:6;8333:9;8329:22;8308:53;:::i;:::-;8298:63;;8254:117;8410:2;8436:53;8481:7;8472:6;8461:9;8457:22;8436:53;:::i;:::-;8426:63;;8381:118;8032:474;;;;;:::o;8512:468::-;8577:6;8585;8634:2;8622:9;8613:7;8609:23;8605:32;8602:119;;;8640:79;;:::i;:::-;8602:119;8760:1;8785:53;8830:7;8821:6;8810:9;8806:22;8785:53;:::i;:::-;8775:63;;8731:117;8887:2;8913:50;8955:7;8946:6;8935:9;8931:22;8913:50;:::i;:::-;8903:60;;8858:115;8512:468;;;;;:::o;8986:180::-;9034:77;9031:1;9024:88;9131:4;9128:1;9121:15;9155:4;9152:1;9145:15;9172:320;9216:6;9253:1;9247:4;9243:12;9233:22;;9300:1;9294:4;9290:12;9321:18;9311:81;;9377:4;9369:6;9365:17;9355:27;;9311:81;9439:2;9431:6;9428:14;9408:18;9405:38;9402:84;;9458:18;;:::i;:::-;9402:84;9223:269;9172:320;;;:::o;9498:182::-;9638:34;9634:1;9626:6;9622:14;9615:58;9498:182;:::o;9686:366::-;9828:3;9849:67;9913:2;9908:3;9849:67;:::i;:::-;9842:74;;9925:93;10014:3;9925:93;:::i;:::-;10043:2;10038:3;10034:12;10027:19;;9686:366;;;:::o;10058:419::-;10224:4;10262:2;10251:9;10247:18;10239:26;;10311:9;10305:4;10301:20;10297:1;10286:9;10282:17;10275:47;10339:131;10465:4;10339:131;:::i;:::-;10331:139;;10058:419;;;:::o;10483:162::-;10623:14;10619:1;10611:6;10607:14;10600:38;10483:162;:::o;10651:366::-;10793:3;10814:67;10878:2;10873:3;10814:67;:::i;:::-;10807:74;;10890:93;10979:3;10890:93;:::i;:::-;11008:2;11003:3;10999:12;10992:19;;10651:366;;;:::o;11023:419::-;11189:4;11227:2;11216:9;11212:18;11204:26;;11276:9;11270:4;11266:20;11262:1;11251:9;11247:17;11240:47;11304:131;11430:4;11304:131;:::i;:::-;11296:139;;11023:419;;;:::o;11448:332::-;11569:4;11607:2;11596:9;11592:18;11584:26;;11620:71;11688:1;11677:9;11673:17;11664:6;11620:71;:::i;:::-;11701:72;11769:2;11758:9;11754:18;11745:6;11701:72;:::i;:::-;11448:332;;;;;:::o;11786:98::-;11837:6;11871:5;11865:12;11855:22;;11786:98;;;:::o;11890:147::-;11991:11;12028:3;12013:18;;11890:147;;;;:::o;12043:386::-;12147:3;12175:38;12207:5;12175:38;:::i;:::-;12229:88;12310:6;12305:3;12229:88;:::i;:::-;12222:95;;12326:65;12384:6;12379:3;12372:4;12365:5;12361:16;12326:65;:::i;:::-;12416:6;12411:3;12407:16;12400:23;;12151:278;12043:386;;;;:::o;12435:271::-;12565:3;12587:93;12676:3;12667:6;12587:93;:::i;:::-;12580:100;;12697:3;12690:10;;12435:271;;;;:::o;12712:170::-;12852:22;12848:1;12840:6;12836:14;12829:46;12712:170;:::o;12888:366::-;13030:3;13051:67;13115:2;13110:3;13051:67;:::i;:::-;13044:74;;13127:93;13216:3;13127:93;:::i;:::-;13245:2;13240:3;13236:12;13229:19;;12888:366;;;:::o;13260:419::-;13426:4;13464:2;13453:9;13449:18;13441:26;;13513:9;13507:4;13503:20;13499:1;13488:9;13484:17;13477:47;13541:131;13667:4;13541:131;:::i;:::-;13533:139;;13260:419;;;:::o;13685:114::-;;:::o;13805:398::-;13964:3;13985:83;14066:1;14061:3;13985:83;:::i;:::-;13978:90;;14077:93;14166:3;14077:93;:::i;:::-;14195:1;14190:3;14186:11;14179:18;;13805:398;;;:::o;14209:379::-;14393:3;14415:147;14558:3;14415:147;:::i;:::-;14408:154;;14579:3;14572:10;;14209:379;;;:::o;14594:170::-;14734:22;14730:1;14722:6;14718:14;14711:46;14594:170;:::o;14770:366::-;14912:3;14933:67;14997:2;14992:3;14933:67;:::i;:::-;14926:74;;15009:93;15098:3;15009:93;:::i;:::-;15127:2;15122:3;15118:12;15111:19;;14770:366;;;:::o;15142:419::-;15308:4;15346:2;15335:9;15331:18;15323:26;;15395:9;15389:4;15385:20;15381:1;15370:9;15366:17;15359:47;15423:131;15549:4;15423:131;:::i;:::-;15415:139;;15142:419;;;:::o;15567:225::-;15707:34;15703:1;15695:6;15691:14;15684:58;15776:8;15771:2;15763:6;15759:15;15752:33;15567:225;:::o;15798:366::-;15940:3;15961:67;16025:2;16020:3;15961:67;:::i;:::-;15954:74;;16037:93;16126:3;16037:93;:::i;:::-;16155:2;16150:3;16146:12;16139:19;;15798:366;;;:::o;16170:419::-;16336:4;16374:2;16363:9;16359:18;16351:26;;16423:9;16417:4;16413:20;16409:1;16398:9;16394:17;16387:47;16451:131;16577:4;16451:131;:::i;:::-;16443:139;;16170:419;;;:::o;16595:166::-;16735:18;16731:1;16723:6;16719:14;16712:42;16595:166;:::o;16767:366::-;16909:3;16930:67;16994:2;16989:3;16930:67;:::i;:::-;16923:74;;17006:93;17095:3;17006:93;:::i;:::-;17124:2;17119:3;17115:12;17108:19;;16767:366;;;:::o;17139:419::-;17305:4;17343:2;17332:9;17328:18;17320:26;;17392:9;17386:4;17382:20;17378:1;17367:9;17363:17;17356:47;17420:131;17546:4;17420:131;:::i;:::-;17412:139;;17139:419;;;:::o;17564:167::-;17704:19;17700:1;17692:6;17688:14;17681:43;17564:167;:::o;17737:366::-;17879:3;17900:67;17964:2;17959:3;17900:67;:::i;:::-;17893:74;;17976:93;18065:3;17976:93;:::i;:::-;18094:2;18089:3;18085:12;18078:19;;17737:366;;;:::o;18109:419::-;18275:4;18313:2;18302:9;18298:18;18290:26;;18362:9;18356:4;18352:20;18348:1;18337:9;18333:17;18326:47;18390:131;18516:4;18390:131;:::i;:::-;18382:139;;18109:419;;;:::o;18534:169::-;18674:21;18670:1;18662:6;18658:14;18651:45;18534:169;:::o;18709:366::-;18851:3;18872:67;18936:2;18931:3;18872:67;:::i;:::-;18865:74;;18948:93;19037:3;18948:93;:::i;:::-;19066:2;19061:3;19057:12;19050:19;;18709:366;;;:::o;19081:419::-;19247:4;19285:2;19274:9;19270:18;19262:26;;19334:9;19328:4;19324:20;19320:1;19309:9;19305:17;19298:47;19362:131;19488:4;19362:131;:::i;:::-;19354:139;;19081:419;;;:::o;19506:167::-;19646:19;19642:1;19634:6;19630:14;19623:43;19506:167;:::o;19679:366::-;19821:3;19842:67;19906:2;19901:3;19842:67;:::i;:::-;19835:74;;19918:93;20007:3;19918:93;:::i;:::-;20036:2;20031:3;20027:12;20020:19;;19679:366;;;:::o;20051:419::-;20217:4;20255:2;20244:9;20240:18;20232:26;;20304:9;20298:4;20294:20;20290:1;20279:9;20275:17;20268:47;20332:131;20458:4;20332:131;:::i;:::-;20324:139;;20051:419;;;:::o;20476:180::-;20524:77;20521:1;20514:88;20621:4;20618:1;20611:15;20645:4;20642:1;20635:15;20662:194;20702:4;20722:20;20740:1;20722:20;:::i;:::-;20717:25;;20756:20;20774:1;20756:20;:::i;:::-;20751:25;;20800:1;20797;20793:9;20785:17;;20824:1;20818:4;20815:11;20812:37;;;20829:18;;:::i;:::-;20812:37;20662:194;;;;:::o;20862:191::-;20902:3;20921:20;20939:1;20921:20;:::i;:::-;20916:25;;20955:20;20973:1;20955:20;:::i;:::-;20950:25;;20998:1;20995;20991:9;20984:16;;21019:3;21016:1;21013:10;21010:36;;;21026:18;;:::i;:::-;21010:36;20862:191;;;;:::o;21059:177::-;21199:29;21195:1;21187:6;21183:14;21176:53;21059:177;:::o;21242:366::-;21384:3;21405:67;21469:2;21464:3;21405:67;:::i;:::-;21398:74;;21481:93;21570:3;21481:93;:::i;:::-;21599:2;21594:3;21590:12;21583:19;;21242:366;;;:::o;21614:419::-;21780:4;21818:2;21807:9;21803:18;21795:26;;21867:9;21861:4;21857:20;21853:1;21842:9;21838:17;21831:47;21895:131;22021:4;21895:131;:::i;:::-;21887:139;;21614:419;;;:::o;22039:180::-;22087:77;22084:1;22077:88;22184:4;22181:1;22174:15;22208:4;22205:1;22198:15;22225:180;22273:77;22270:1;22263:88;22370:4;22367:1;22360:15;22394:4;22391:1;22384:15;22411:143;22468:5;22499:6;22493:13;22484:22;;22515:33;22542:5;22515:33;:::i;:::-;22411:143;;;;:::o;22560:351::-;22630:6;22679:2;22667:9;22658:7;22654:23;22650:32;22647:119;;;22685:79;;:::i;:::-;22647:119;22805:1;22830:64;22886:7;22877:6;22866:9;22862:22;22830:64;:::i;:::-;22820:74;;22776:128;22560:351;;;;:::o;22917:85::-;22962:7;22991:5;22980:16;;22917:85;;;:::o;23008:158::-;23066:9;23099:61;23117:42;23126:32;23152:5;23126:32;:::i;:::-;23117:42;:::i;:::-;23099:61;:::i;:::-;23086:74;;23008:158;;;:::o;23172:147::-;23267:45;23306:5;23267:45;:::i;:::-;23262:3;23255:58;23172:147;;:::o;23325:114::-;23392:6;23426:5;23420:12;23410:22;;23325:114;;;:::o;23445:184::-;23544:11;23578:6;23573:3;23566:19;23618:4;23613:3;23609:14;23594:29;;23445:184;;;;:::o;23635:132::-;23702:4;23725:3;23717:11;;23755:4;23750:3;23746:14;23738:22;;23635:132;;;:::o;23773:108::-;23850:24;23868:5;23850:24;:::i;:::-;23845:3;23838:37;23773:108;;:::o;23887:179::-;23956:10;23977:46;24019:3;24011:6;23977:46;:::i;:::-;24055:4;24050:3;24046:14;24032:28;;23887:179;;;;:::o;24072:113::-;24142:4;24174;24169:3;24165:14;24157:22;;24072:113;;;:::o;24221:732::-;24340:3;24369:54;24417:5;24369:54;:::i;:::-;24439:86;24518:6;24513:3;24439:86;:::i;:::-;24432:93;;24549:56;24599:5;24549:56;:::i;:::-;24628:7;24659:1;24644:284;24669:6;24666:1;24663:13;24644:284;;;24745:6;24739:13;24772:63;24831:3;24816:13;24772:63;:::i;:::-;24765:70;;24858:60;24911:6;24858:60;:::i;:::-;24848:70;;24704:224;24691:1;24688;24684:9;24679:14;;24644:284;;;24648:14;24944:3;24937:10;;24345:608;;;24221:732;;;;:::o;24959:831::-;25222:4;25260:3;25249:9;25245:19;25237:27;;25274:71;25342:1;25331:9;25327:17;25318:6;25274:71;:::i;:::-;25355:80;25431:2;25420:9;25416:18;25407:6;25355:80;:::i;:::-;25482:9;25476:4;25472:20;25467:2;25456:9;25452:18;25445:48;25510:108;25613:4;25604:6;25510:108;:::i;:::-;25502:116;;25628:72;25696:2;25685:9;25681:18;25672:6;25628:72;:::i;:::-;25710:73;25778:3;25767:9;25763:19;25754:6;25710:73;:::i;:::-;24959:831;;;;;;;;:::o;25796:483::-;25967:4;26005:2;25994:9;25990:18;25982:26;;26018:71;26086:1;26075:9;26071:17;26062:6;26018:71;:::i;:::-;26136:9;26130:4;26126:20;26121:2;26110:9;26106:18;26099:48;26164:108;26267:4;26258:6;26164:108;:::i;:::-;26156:116;;25796:483;;;;;:::o;26285:410::-;26325:7;26348:20;26366:1;26348:20;:::i;:::-;26343:25;;26382:20;26400:1;26382:20;:::i;:::-;26377:25;;26437:1;26434;26430:9;26459:30;26477:11;26459:30;:::i;:::-;26448:41;;26638:1;26629:7;26625:15;26622:1;26619:22;26599:1;26592:9;26572:83;26549:139;;26668:18;;:::i;:::-;26549:139;26333:362;26285:410;;;;:::o;26701:180::-;26749:77;26746:1;26739:88;26846:4;26843:1;26836:15;26870:4;26867:1;26860:15;26887:185;26927:1;26944:20;26962:1;26944:20;:::i;:::-;26939:25;;26978:20;26996:1;26978:20;:::i;:::-;26973:25;;27017:1;27007:35;;27022:18;;:::i;:::-;27007:35;27064:1;27061;27057:9;27052:14;;26887:185;;;;:::o;27078:220::-;27218:34;27214:1;27206:6;27202:14;27195:58;27287:3;27282:2;27274:6;27270:15;27263:28;27078:220;:::o;27304:366::-;27446:3;27467:67;27531:2;27526:3;27467:67;:::i;:::-;27460:74;;27543:93;27632:3;27543:93;:::i;:::-;27661:2;27656:3;27652:12;27645:19;;27304:366;;;:::o;27676:419::-;27842:4;27880:2;27869:9;27865:18;27857:26;;27929:9;27923:4;27919:20;27915:1;27904:9;27900:17;27893:47;27957:131;28083:4;27957:131;:::i;:::-;27949:139;;27676:419;;;:::o

Swarm Source

ipfs://0b5a5731b09616c1f420341e388204d8068ead8d71662d8cac328d926421bb69
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.