ETH Price: $3,148.34 (+0.91%)
Gas: 2 Gwei

Token

Baby Andy (BABYANDY)
 

Overview

Max Total Supply

1,000,000,000,000 BABYANDY

Holders

273

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,577,919,719.550633192 BABYANDY

Value
$0.00
0x2e08ab216a0e68f35e864b55b3e9d4e60dfc41a5
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Babyandy

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
https://t.me/babyandyerc 
https://twitter.com/babyandycoinerc
https://babyandycoin.com
*/

pragma solidity 0.8.25;

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

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

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

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

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

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

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract Babyandy is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExcludedFromFee;
    mapping (address => bool) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=250;
    uint256 private _midBuyTax=100;
    uint256 private _initialSellTax=250;
    uint256 private _midSellTax=100;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;

    uint256 private _midBuyTaxAt=20;
    uint256 private _reduceBuyTaxAt=30;

    uint256 private _midSellTaxAt=20;
    uint256 private _reduceSellTaxAt=30;
    uint256 private _preventSwapBefore=40;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000000 * 10**_decimals;
    string private constant _name = unicode"Baby Andy";
    string private constant _symbol = unicode"BABYANDY";
    uint256 public _maxTxAmount =   10000000000 * 10**_decimals;
    uint256 public _maxWalletSize = 10000000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 10000000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 20000000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool public rescueSwitch = false;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caSwitch = true;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(uniswapV2Pair)] = true;
        isExcludedFromFee[_taxWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setMarketPair(address addr) public onlyOwner {
        marketPair[addr] = true;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;

        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: ((_buyCount> _midBuyTaxAt)? _midBuyTax: _initialBuyTax)).div(1000);

            if (marketPair[from] && to != address(uniswapV2Router) && ! isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");

                if (firstBlock + 1  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (!marketPair[to] && ! isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(marketPair[to] && from!= address(this) ){
                taxAmount = amount.mul((_buyCount> _reduceSellTaxAt)? _finalSellTax: ((_buyCount> _midSellTaxAt)? _midSellTax: _initialSellTax)).div(1000);
            }

	    if (!marketPair[from] && !marketPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caSwitch && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount <2, "Only 2 CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

    function enableRescue(bool _status) external onlyOwner {
        rescueSwitch = _status;
    }

    function exemptAddress(address addr, bool exempt) external onlyOwner {
        isExcludedFromFee[addr] = exempt;
    }

    function switchStatus(bool _status) external onlyOwner {
        caSwitch = _status;
    }

    function freeStuckEth() public {
        require(rescueSwitch || tradingOpen);
        payable(_taxWallet).transfer(address(this).balance);
    }

    function rescueAnyERC20Tokens(address _tokenAddr, uint _amount) public {
        require(rescueSwitch || tradingOpen);
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }
 
    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function limitsRemoved() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketPair[address(uniswapV2Pair)] = true;
        isExcludedFromFee[address(uniswapV2Pair)] = true;
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caSwitch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableRescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsRemoved","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueSwitch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"switchStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260fa600755606460085560fa6009556064600a555f600b555f600c556014600d55601e600e556014600f55601e60105560286011555f6012555f6013555f6014556009600a6100539190610678565b6402540be40061006391906106c2565b6015556009600a6100749190610678565b6402540be40061008491906106c2565b6016556009600a6100959190610678565b6402540be4006100a591906106c2565b6017556009600a6100b69190610678565b6404a817c8006100c691906106c2565b6018555f601a60146101000a81548160ff0219169083151502179055505f601a60166101000a81548160ff0219169083151502179055505f601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff02191690831515021790555034801561013d575f80fd5b505f61014d6104d960201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101f76104d960201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6102449190610678565b64e8d4a5100061025491906106c2565b60015f6102656104d960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102b56104e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506104536104d960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6104af9190610678565b64e8d4a510006104bf91906106c2565b6040516104cc9190610712565b60405180910390a361072b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156105895780860481111561056557610564610507565b5b60018516156105745780820291505b808102905061058285610534565b9450610549565b94509492505050565b5f826105a1576001905061065c565b816105ae575f905061065c565b81600181146105c457600281146105ce576105fd565b600191505061065c565b60ff8411156105e0576105df610507565b5b8360020a9150848211156105f7576105f6610507565b5b5061065c565b5060208310610133831016604e8410600b84101617156106325782820a90508381111561062d5761062c610507565b5b61065c565b61063f8484846001610540565b9250905081840481111561065657610655610507565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61068282610663565b915061068d8361066c565b92506106ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610592565b905092915050565b5f6106cc82610663565b91506106d783610663565b92508282026106e581610663565b915082820484148315176106fc576106fb610507565b5b5092915050565b61070c81610663565b82525050565b5f6020820190506107255f830184610703565b92915050565b613c4e806107385f395ff3fe6080604052600436106101c5575f3560e01c80637ab3c762116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e146105d8578063f2fde38b14610614578063f468b4451461063c578063f5b3c3bf14610652576101cc565b8063a9059cbb14610520578063bf474bed1461055c578063c7a4bdf714610586578063cb2d9bd9146105b0576101cc565b80638da5cb5b116100d05780638da5cb5b1461047a5780638f9a55c0146104a457806395d89b41146104ce578063a3019cf8146104f8576101cc565b80637ab3c762146104105780637d1db4a51461043a5780638a8c523c14610464576101cc565b80633b23a5ca1161016357806353bc13dc1161013d57806353bc13dc1461036e57806359b999cb1461039657806370a08231146103be578063715018a6146103fa576101cc565b80633b23a5ca1461030657806349bd5a5e1461032e57806351bc3c8514610358576101cc565b806318160ddd1161019f57806318160ddd146102605780631d6f96551461028a57806323b872dd146102a0578063313ce567146102dc576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630faee56f14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e461068e565b6040516101f19190612c08565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190612cb9565b6106cb565b60405161022d9190612d11565b60405180910390f35b348015610241575f80fd5b5061024a6106e8565b6040516102579190612d39565b60405180910390f35b34801561026b575f80fd5b506102746106ee565b6040516102819190612d39565b60405180910390f35b348015610295575f80fd5b5061029e610712565b005b3480156102ab575f80fd5b506102c660048036038101906102c19190612d52565b610844565b6040516102d39190612d11565b60405180910390f35b3480156102e7575f80fd5b506102f0610918565b6040516102fd9190612dbd565b60405180910390f35b348015610311575f80fd5b5061032c60048036038101906103279190612e00565b610920565b005b348015610339575f80fd5b506103426109d1565b60405161034f9190612e3a565b60405180910390f35b348015610363575f80fd5b5061036c6109f6565b005b348015610379575f80fd5b50610394600480360381019061038f9190612e53565b610a8d565b005b3480156103a1575f80fd5b506103bc60048036038101906103b79190612cb9565b610b79565b005b3480156103c9575f80fd5b506103e460048036038101906103df9190612e53565b610c49565b6040516103f19190612d39565b60405180910390f35b348015610405575f80fd5b5061040e610c8f565b005b34801561041b575f80fd5b50610424610ddd565b6040516104319190612d11565b60405180910390f35b348015610445575f80fd5b5061044e610df0565b60405161045b9190612d39565b60405180910390f35b34801561046f575f80fd5b50610478610df6565b005b348015610485575f80fd5b5061048e61140c565b60405161049b9190612e3a565b60405180910390f35b3480156104af575f80fd5b506104b8611433565b6040516104c59190612d39565b60405180910390f35b3480156104d9575f80fd5b506104e2611439565b6040516104ef9190612c08565b60405180910390f35b348015610503575f80fd5b5061051e60048036038101906105199190612e7e565b611476565b005b34801561052b575f80fd5b5061054660048036038101906105419190612cb9565b611562565b6040516105539190612d11565b60405180910390f35b348015610567575f80fd5b5061057061157f565b60405161057d9190612d39565b60405180910390f35b348015610591575f80fd5b5061059a611585565b6040516105a79190612d11565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190612e00565b611598565b005b3480156105e3575f80fd5b506105fe60048036038101906105f99190612ebc565b611649565b60405161060b9190612d39565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190612e53565b6116cb565b005b348015610647575f80fd5b50610650611888565b005b34801561065d575f80fd5b5061067860048036038101906106739190612e53565b61191e565b6040516106859190612d11565b60405180910390f35b60606040518060400160405280600981526020017f4261627920416e64790000000000000000000000000000000000000000000000815250905090565b5f6106de6106d761193b565b8484611942565b6001905092915050565b60185481565b5f6009600a6106fd9190613056565b64e8d4a5100061070d91906130a0565b905090565b61071a61193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079d9061312b565b60405180910390fd5b6009600a6107b49190613056565b64e8d4a510006107c491906130a0565b6015819055506009600a6107d89190613056565b64e8d4a510006107e891906130a0565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61081d9190613056565b64e8d4a5100061082d91906130a0565b60405161083a9190612d39565b60405180910390a1565b5f610850848484611b05565b61090d8461085c61193b565b61090885604051806060016040528060288152602001613bf16028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108bf61193b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126739092919063ffffffff16565b611942565b600190509392505050565b5f6009905090565b61092861193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab9061312b565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a3661193b565b73ffffffffffffffffffffffffffffffffffffffff1614610a55575f80fd5b5f610a5f30610c49565b90505f811115610a7357610a72816126d5565b5b5f4790505f811115610a8957610a8881612940565b5b5050565b610a9561193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b189061312b565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1680610ba05750601a60159054906101000a900460ff165b610ba8575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c049291906131a4565b6020604051808303815f875af1158015610c20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4491906131df565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c9761193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a9061312b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601a60189054906101000a900460ff1681565b60155481565b610dfe61193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e819061312b565b60405180910390fd5b601a60159054906101000a900460ff1615610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed190613254565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f773060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f629190613056565b64e8d4a51000610f7291906130a0565b611942565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110059190613286565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110af9190613286565b6040518363ffffffff1660e01b81526004016110cc9291906132b1565b6020604051808303815f875af11580156110e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110c9190613286565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061127f30610c49565b5f8061128961140c565b426040518863ffffffff1660e01b81526004016112ab96959493929190613311565b60606040518083038185885af11580156112c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112ec9190613384565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161138c9291906133d4565b6020604051808303815f875af11580156113a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cc91906131df565b506001601a60176101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600881526020017f42414259414e4459000000000000000000000000000000000000000000000000815250905090565b61147e61193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115019061312b565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61157561156e61193b565b8484611b05565b6001905092915050565b60175481565b601a60149054906101000a900460ff1681565b6115a061193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116239061312b565b60405180910390fd5b80601a60146101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116d361193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117569061312b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c49061346b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a60149054906101000a900460ff16806118af5750601a60159054906101000a900460ff165b6118b7575f80fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561191b573d5f803e3d5ffd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a7906134f9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590613587565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611af89190612d39565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613615565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd8906136a3565b60405180910390fd5b5f8111611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a90613731565b60405180910390fd5b5f611c2c61140c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c9a5750611c6a61140c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123c357611cf06103e8611ce2600e5460125411611ccf57600d5460125411611cc657600754611cca565b6008545b611cd3565b600b545b856129a890919063ffffffff16565b612a1f90919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d95575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611de8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ecb57601554821115611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990613799565b60405180910390fd5b60165482611e3f85610c49565b611e4991906137b7565b1115611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613834565b60405180910390fd5b436001600654611e9a91906137b7565b1115611eb357611ea983612a68565b15611eb2575f80fd5b5b60125f815480929190611ec590613852565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f69575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fc75760165482611f7b85610c49565b611f8591906137b7565b1115611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90613834565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561204957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120a25761209f6103e86120916010546012541161207e57600f546012541161207557600954612079565b600a545b612082565b600c545b856129a890919063ffffffff16565b612a1f90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612140575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561217857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612181575f90505b5f61218b30610c49565b9050601a60189054906101000a900460ff1680156121b65750601a60169054906101000a900460ff16155b8015612208575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156122205750601a60179054906101000a900460ff165b801561222d575060175481115b801561223c5750601154601254115b156122ef57601454431115612253575f6013819055505b600260135410612298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228f906138e3565b60405180910390fd5b6122b56122b0846122ab84601854612a79565b612a79565b6126d5565b5f4790505f8111156122cb576122ca47612940565b5b60135f8154809291906122dd90613852565b919050555043601481905550506123c1565b601a60169054906101000a900460ff16158015612352575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561236a5750601a60179054906101000a900460ff165b8015612377575060175481115b80156123865750601154601254115b156123c0576123a86123a38461239e84601854612a79565b612a79565b6126d5565b5f4790505f8111156123be576123bd47612940565b5b505b5b505b5f8111156124c25761241b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a9190919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124b99190612d39565b60405180910390a35b6125128260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612aee90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125b56125698284612aee90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a9190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6126588486612aee90919063ffffffff16565b6040516126659190612d39565b60405180910390a350505050565b5f8383111582906126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b19190612c08565b60405180910390fd5b505f83856126c89190613901565b9050809150509392505050565b6001601a60166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561270c5761270b613934565b5b60405190808252806020026020018201604052801561273a5781602001602082028036833780820191505090505b50905030815f8151811061275157612750613961565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128199190613286565b8160018151811061282d5761282c613961565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128933060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611942565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016128f5959493929190613a45565b5f604051808303815f87803b15801561290c575f80fd5b505af115801561291e573d5f803e3d5ffd5b50505050505f601a60166101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156129a4573d5f803e3d5ffd5b5050565b5f8083036129b8575f9050612a19565b5f82846129c591906130a0565b90508284826129d49190613aca565b14612a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0b90613b6a565b60405180910390fd5b809150505b92915050565b5f612a6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b37565b905092915050565b5f80823b90505f8111915050919050565b5f818311612a875782612a89565b815b905092915050565b5f808284612a9f91906137b7565b905083811015612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb90613bd2565b60405180910390fd5b8091505092915050565b5f612b2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612673565b905092915050565b5f8083118290612b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b749190612c08565b60405180910390fd5b505f8385612b8b9190613aca565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612bda82612b98565b612be48185612ba2565b9350612bf4818560208601612bb2565b612bfd81612bc0565b840191505092915050565b5f6020820190508181035f830152612c208184612bd0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c5582612c2c565b9050919050565b612c6581612c4b565b8114612c6f575f80fd5b50565b5f81359050612c8081612c5c565b92915050565b5f819050919050565b612c9881612c86565b8114612ca2575f80fd5b50565b5f81359050612cb381612c8f565b92915050565b5f8060408385031215612ccf57612cce612c28565b5b5f612cdc85828601612c72565b9250506020612ced85828601612ca5565b9150509250929050565b5f8115159050919050565b612d0b81612cf7565b82525050565b5f602082019050612d245f830184612d02565b92915050565b612d3381612c86565b82525050565b5f602082019050612d4c5f830184612d2a565b92915050565b5f805f60608486031215612d6957612d68612c28565b5b5f612d7686828701612c72565b9350506020612d8786828701612c72565b9250506040612d9886828701612ca5565b9150509250925092565b5f60ff82169050919050565b612db781612da2565b82525050565b5f602082019050612dd05f830184612dae565b92915050565b612ddf81612cf7565b8114612de9575f80fd5b50565b5f81359050612dfa81612dd6565b92915050565b5f60208284031215612e1557612e14612c28565b5b5f612e2284828501612dec565b91505092915050565b612e3481612c4b565b82525050565b5f602082019050612e4d5f830184612e2b565b92915050565b5f60208284031215612e6857612e67612c28565b5b5f612e7584828501612c72565b91505092915050565b5f8060408385031215612e9457612e93612c28565b5b5f612ea185828601612c72565b9250506020612eb285828601612dec565b9150509250929050565b5f8060408385031215612ed257612ed1612c28565b5b5f612edf85828601612c72565b9250506020612ef085828601612c72565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f7c57808604811115612f5857612f57612efa565b5b6001851615612f675780820291505b8081029050612f7585612f27565b9450612f3c565b94509492505050565b5f82612f94576001905061304f565b81612fa1575f905061304f565b8160018114612fb75760028114612fc157612ff0565b600191505061304f565b60ff841115612fd357612fd2612efa565b5b8360020a915084821115612fea57612fe9612efa565b5b5061304f565b5060208310610133831016604e8410600b84101617156130255782820a9050838111156130205761301f612efa565b5b61304f565b6130328484846001612f33565b9250905081840481111561304957613048612efa565b5b81810290505b9392505050565b5f61306082612c86565b915061306b83612da2565b92506130987fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f85565b905092915050565b5f6130aa82612c86565b91506130b583612c86565b92508282026130c381612c86565b915082820484148315176130da576130d9612efa565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613115602083612ba2565b9150613120826130e1565b602082019050919050565b5f6020820190508181035f83015261314281613109565b9050919050565b5f819050919050565b5f61316c61316761316284612c2c565b613149565b612c2c565b9050919050565b5f61317d82613152565b9050919050565b5f61318e82613173565b9050919050565b61319e81613184565b82525050565b5f6040820190506131b75f830185613195565b6131c46020830184612d2a565b9392505050565b5f815190506131d981612dd6565b92915050565b5f602082840312156131f4576131f3612c28565b5b5f613201848285016131cb565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61323e601783612ba2565b91506132498261320a565b602082019050919050565b5f6020820190508181035f83015261326b81613232565b9050919050565b5f8151905061328081612c5c565b92915050565b5f6020828403121561329b5761329a612c28565b5b5f6132a884828501613272565b91505092915050565b5f6040820190506132c45f830185612e2b565b6132d16020830184612e2b565b9392505050565b5f819050919050565b5f6132fb6132f66132f1846132d8565b613149565b612c86565b9050919050565b61330b816132e1565b82525050565b5f60c0820190506133245f830189612e2b565b6133316020830188612d2a565b61333e6040830187613302565b61334b6060830186613302565b6133586080830185612e2b565b61336560a0830184612d2a565b979650505050505050565b5f8151905061337e81612c8f565b92915050565b5f805f6060848603121561339b5761339a612c28565b5b5f6133a886828701613370565b93505060206133b986828701613370565b92505060406133ca86828701613370565b9150509250925092565b5f6040820190506133e75f830185612e2b565b6133f46020830184612d2a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613455602683612ba2565b9150613460826133fb565b604082019050919050565b5f6020820190508181035f83015261348281613449565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134e3602483612ba2565b91506134ee82613489565b604082019050919050565b5f6020820190508181035f830152613510816134d7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613571602283612ba2565b915061357c82613517565b604082019050919050565b5f6020820190508181035f83015261359e81613565565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135ff602583612ba2565b915061360a826135a5565b604082019050919050565b5f6020820190508181035f83015261362c816135f3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61368d602383612ba2565b915061369882613633565b604082019050919050565b5f6020820190508181035f8301526136ba81613681565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61371b602983612ba2565b9150613726826136c1565b604082019050919050565b5f6020820190508181035f8301526137488161370f565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613783601983612ba2565b915061378e8261374f565b602082019050919050565b5f6020820190508181035f8301526137b081613777565b9050919050565b5f6137c182612c86565b91506137cc83612c86565b92508282019050808211156137e4576137e3612efa565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61381e601a83612ba2565b9150613829826137ea565b602082019050919050565b5f6020820190508181035f83015261384b81613812565b9050919050565b5f61385c82612c86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361388e5761388d612efa565b5b600182019050919050565b7f4f6e6c7920322043412062616c616e63652073656c6c000000000000000000005f82015250565b5f6138cd601683612ba2565b91506138d882613899565b602082019050919050565b5f6020820190508181035f8301526138fa816138c1565b9050919050565b5f61390b82612c86565b915061391683612c86565b925082820390508181111561392e5761392d612efa565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6139c081612c4b565b82525050565b5f6139d183836139b7565b60208301905092915050565b5f602082019050919050565b5f6139f38261398e565b6139fd8185613998565b9350613a08836139a8565b805f5b83811015613a38578151613a1f88826139c6565b9750613a2a836139dd565b925050600181019050613a0b565b5085935050505092915050565b5f60a082019050613a585f830188612d2a565b613a656020830187613302565b8181036040830152613a7781866139e9565b9050613a866060830185612e2b565b613a936080830184612d2a565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ad482612c86565b9150613adf83612c86565b925082613aef57613aee613a9d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b54602183612ba2565b9150613b5f82613afa565b604082019050919050565b5f6020820190508181035f830152613b8181613b48565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bbc601b83612ba2565b9150613bc782613b88565b602082019050919050565b5f6020820190508181035f830152613be981613bb0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220888117dc51cfde289586206df7f138710ff54848183d3cce60c7a8ade394c84f64736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c80637ab3c762116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e146105d8578063f2fde38b14610614578063f468b4451461063c578063f5b3c3bf14610652576101cc565b8063a9059cbb14610520578063bf474bed1461055c578063c7a4bdf714610586578063cb2d9bd9146105b0576101cc565b80638da5cb5b116100d05780638da5cb5b1461047a5780638f9a55c0146104a457806395d89b41146104ce578063a3019cf8146104f8576101cc565b80637ab3c762146104105780637d1db4a51461043a5780638a8c523c14610464576101cc565b80633b23a5ca1161016357806353bc13dc1161013d57806353bc13dc1461036e57806359b999cb1461039657806370a08231146103be578063715018a6146103fa576101cc565b80633b23a5ca1461030657806349bd5a5e1461032e57806351bc3c8514610358576101cc565b806318160ddd1161019f57806318160ddd146102605780631d6f96551461028a57806323b872dd146102a0578063313ce567146102dc576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780630faee56f14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e461068e565b6040516101f19190612c08565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190612cb9565b6106cb565b60405161022d9190612d11565b60405180910390f35b348015610241575f80fd5b5061024a6106e8565b6040516102579190612d39565b60405180910390f35b34801561026b575f80fd5b506102746106ee565b6040516102819190612d39565b60405180910390f35b348015610295575f80fd5b5061029e610712565b005b3480156102ab575f80fd5b506102c660048036038101906102c19190612d52565b610844565b6040516102d39190612d11565b60405180910390f35b3480156102e7575f80fd5b506102f0610918565b6040516102fd9190612dbd565b60405180910390f35b348015610311575f80fd5b5061032c60048036038101906103279190612e00565b610920565b005b348015610339575f80fd5b506103426109d1565b60405161034f9190612e3a565b60405180910390f35b348015610363575f80fd5b5061036c6109f6565b005b348015610379575f80fd5b50610394600480360381019061038f9190612e53565b610a8d565b005b3480156103a1575f80fd5b506103bc60048036038101906103b79190612cb9565b610b79565b005b3480156103c9575f80fd5b506103e460048036038101906103df9190612e53565b610c49565b6040516103f19190612d39565b60405180910390f35b348015610405575f80fd5b5061040e610c8f565b005b34801561041b575f80fd5b50610424610ddd565b6040516104319190612d11565b60405180910390f35b348015610445575f80fd5b5061044e610df0565b60405161045b9190612d39565b60405180910390f35b34801561046f575f80fd5b50610478610df6565b005b348015610485575f80fd5b5061048e61140c565b60405161049b9190612e3a565b60405180910390f35b3480156104af575f80fd5b506104b8611433565b6040516104c59190612d39565b60405180910390f35b3480156104d9575f80fd5b506104e2611439565b6040516104ef9190612c08565b60405180910390f35b348015610503575f80fd5b5061051e60048036038101906105199190612e7e565b611476565b005b34801561052b575f80fd5b5061054660048036038101906105419190612cb9565b611562565b6040516105539190612d11565b60405180910390f35b348015610567575f80fd5b5061057061157f565b60405161057d9190612d39565b60405180910390f35b348015610591575f80fd5b5061059a611585565b6040516105a79190612d11565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190612e00565b611598565b005b3480156105e3575f80fd5b506105fe60048036038101906105f99190612ebc565b611649565b60405161060b9190612d39565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190612e53565b6116cb565b005b348015610647575f80fd5b50610650611888565b005b34801561065d575f80fd5b5061067860048036038101906106739190612e53565b61191e565b6040516106859190612d11565b60405180910390f35b60606040518060400160405280600981526020017f4261627920416e64790000000000000000000000000000000000000000000000815250905090565b5f6106de6106d761193b565b8484611942565b6001905092915050565b60185481565b5f6009600a6106fd9190613056565b64e8d4a5100061070d91906130a0565b905090565b61071a61193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079d9061312b565b60405180910390fd5b6009600a6107b49190613056565b64e8d4a510006107c491906130a0565b6015819055506009600a6107d89190613056565b64e8d4a510006107e891906130a0565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61081d9190613056565b64e8d4a5100061082d91906130a0565b60405161083a9190612d39565b60405180910390a1565b5f610850848484611b05565b61090d8461085c61193b565b61090885604051806060016040528060288152602001613bf16028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108bf61193b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126739092919063ffffffff16565b611942565b600190509392505050565b5f6009905090565b61092861193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab9061312b565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a3661193b565b73ffffffffffffffffffffffffffffffffffffffff1614610a55575f80fd5b5f610a5f30610c49565b90505f811115610a7357610a72816126d5565b5b5f4790505f811115610a8957610a8881612940565b5b5050565b610a9561193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b189061312b565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1680610ba05750601a60159054906101000a900460ff165b610ba8575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c049291906131a4565b6020604051808303815f875af1158015610c20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4491906131df565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c9761193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a9061312b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601a60189054906101000a900460ff1681565b60155481565b610dfe61193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e819061312b565b60405180910390fd5b601a60159054906101000a900460ff1615610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed190613254565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f773060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f629190613056565b64e8d4a51000610f7291906130a0565b611942565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110059190613286565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110af9190613286565b6040518363ffffffff1660e01b81526004016110cc9291906132b1565b6020604051808303815f875af11580156110e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110c9190613286565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061127f30610c49565b5f8061128961140c565b426040518863ffffffff1660e01b81526004016112ab96959493929190613311565b60606040518083038185885af11580156112c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112ec9190613384565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161138c9291906133d4565b6020604051808303815f875af11580156113a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cc91906131df565b506001601a60176101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600881526020017f42414259414e4459000000000000000000000000000000000000000000000000815250905090565b61147e61193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115019061312b565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61157561156e61193b565b8484611b05565b6001905092915050565b60175481565b601a60149054906101000a900460ff1681565b6115a061193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116239061312b565b60405180910390fd5b80601a60146101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116d361193b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117569061312b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c49061346b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a60149054906101000a900460ff16806118af5750601a60159054906101000a900460ff165b6118b7575f80fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561191b573d5f803e3d5ffd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a7906134f9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590613587565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611af89190612d39565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613615565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd8906136a3565b60405180910390fd5b5f8111611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a90613731565b60405180910390fd5b5f611c2c61140c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c9a5750611c6a61140c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123c357611cf06103e8611ce2600e5460125411611ccf57600d5460125411611cc657600754611cca565b6008545b611cd3565b600b545b856129a890919063ffffffff16565b612a1f90919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611d95575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611de8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ecb57601554821115611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2990613799565b60405180910390fd5b60165482611e3f85610c49565b611e4991906137b7565b1115611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613834565b60405180910390fd5b436001600654611e9a91906137b7565b1115611eb357611ea983612a68565b15611eb2575f80fd5b5b60125f815480929190611ec590613852565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f69575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fc75760165482611f7b85610c49565b611f8591906137b7565b1115611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90613834565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561204957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120a25761209f6103e86120916010546012541161207e57600f546012541161207557600954612079565b600a545b612082565b600c545b856129a890919063ffffffff16565b612a1f90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612140575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561217857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612181575f90505b5f61218b30610c49565b9050601a60189054906101000a900460ff1680156121b65750601a60169054906101000a900460ff16155b8015612208575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156122205750601a60179054906101000a900460ff165b801561222d575060175481115b801561223c5750601154601254115b156122ef57601454431115612253575f6013819055505b600260135410612298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228f906138e3565b60405180910390fd5b6122b56122b0846122ab84601854612a79565b612a79565b6126d5565b5f4790505f8111156122cb576122ca47612940565b5b60135f8154809291906122dd90613852565b919050555043601481905550506123c1565b601a60169054906101000a900460ff16158015612352575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561236a5750601a60179054906101000a900460ff165b8015612377575060175481115b80156123865750601154601254115b156123c0576123a86123a38461239e84601854612a79565b612a79565b6126d5565b5f4790505f8111156123be576123bd47612940565b5b505b5b505b5f8111156124c25761241b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a9190919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124b99190612d39565b60405180910390a35b6125128260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612aee90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125b56125698284612aee90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a9190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6126588486612aee90919063ffffffff16565b6040516126659190612d39565b60405180910390a350505050565b5f8383111582906126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b19190612c08565b60405180910390fd5b505f83856126c89190613901565b9050809150509392505050565b6001601a60166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561270c5761270b613934565b5b60405190808252806020026020018201604052801561273a5781602001602082028036833780820191505090505b50905030815f8151811061275157612750613961565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128199190613286565b8160018151811061282d5761282c613961565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128933060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611942565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016128f5959493929190613a45565b5f604051808303815f87803b15801561290c575f80fd5b505af115801561291e573d5f803e3d5ffd5b50505050505f601a60166101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156129a4573d5f803e3d5ffd5b5050565b5f8083036129b8575f9050612a19565b5f82846129c591906130a0565b90508284826129d49190613aca565b14612a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0b90613b6a565b60405180910390fd5b809150505b92915050565b5f612a6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b37565b905092915050565b5f80823b90505f8111915050919050565b5f818311612a875782612a89565b815b905092915050565b5f808284612a9f91906137b7565b905083811015612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb90613bd2565b60405180910390fd5b8091505092915050565b5f612b2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612673565b905092915050565b5f8083118290612b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b749190612c08565b60405180910390fd5b505f8385612b8b9190613aca565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612bda82612b98565b612be48185612ba2565b9350612bf4818560208601612bb2565b612bfd81612bc0565b840191505092915050565b5f6020820190508181035f830152612c208184612bd0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c5582612c2c565b9050919050565b612c6581612c4b565b8114612c6f575f80fd5b50565b5f81359050612c8081612c5c565b92915050565b5f819050919050565b612c9881612c86565b8114612ca2575f80fd5b50565b5f81359050612cb381612c8f565b92915050565b5f8060408385031215612ccf57612cce612c28565b5b5f612cdc85828601612c72565b9250506020612ced85828601612ca5565b9150509250929050565b5f8115159050919050565b612d0b81612cf7565b82525050565b5f602082019050612d245f830184612d02565b92915050565b612d3381612c86565b82525050565b5f602082019050612d4c5f830184612d2a565b92915050565b5f805f60608486031215612d6957612d68612c28565b5b5f612d7686828701612c72565b9350506020612d8786828701612c72565b9250506040612d9886828701612ca5565b9150509250925092565b5f60ff82169050919050565b612db781612da2565b82525050565b5f602082019050612dd05f830184612dae565b92915050565b612ddf81612cf7565b8114612de9575f80fd5b50565b5f81359050612dfa81612dd6565b92915050565b5f60208284031215612e1557612e14612c28565b5b5f612e2284828501612dec565b91505092915050565b612e3481612c4b565b82525050565b5f602082019050612e4d5f830184612e2b565b92915050565b5f60208284031215612e6857612e67612c28565b5b5f612e7584828501612c72565b91505092915050565b5f8060408385031215612e9457612e93612c28565b5b5f612ea185828601612c72565b9250506020612eb285828601612dec565b9150509250929050565b5f8060408385031215612ed257612ed1612c28565b5b5f612edf85828601612c72565b9250506020612ef085828601612c72565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f7c57808604811115612f5857612f57612efa565b5b6001851615612f675780820291505b8081029050612f7585612f27565b9450612f3c565b94509492505050565b5f82612f94576001905061304f565b81612fa1575f905061304f565b8160018114612fb75760028114612fc157612ff0565b600191505061304f565b60ff841115612fd357612fd2612efa565b5b8360020a915084821115612fea57612fe9612efa565b5b5061304f565b5060208310610133831016604e8410600b84101617156130255782820a9050838111156130205761301f612efa565b5b61304f565b6130328484846001612f33565b9250905081840481111561304957613048612efa565b5b81810290505b9392505050565b5f61306082612c86565b915061306b83612da2565b92506130987fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f85565b905092915050565b5f6130aa82612c86565b91506130b583612c86565b92508282026130c381612c86565b915082820484148315176130da576130d9612efa565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613115602083612ba2565b9150613120826130e1565b602082019050919050565b5f6020820190508181035f83015261314281613109565b9050919050565b5f819050919050565b5f61316c61316761316284612c2c565b613149565b612c2c565b9050919050565b5f61317d82613152565b9050919050565b5f61318e82613173565b9050919050565b61319e81613184565b82525050565b5f6040820190506131b75f830185613195565b6131c46020830184612d2a565b9392505050565b5f815190506131d981612dd6565b92915050565b5f602082840312156131f4576131f3612c28565b5b5f613201848285016131cb565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61323e601783612ba2565b91506132498261320a565b602082019050919050565b5f6020820190508181035f83015261326b81613232565b9050919050565b5f8151905061328081612c5c565b92915050565b5f6020828403121561329b5761329a612c28565b5b5f6132a884828501613272565b91505092915050565b5f6040820190506132c45f830185612e2b565b6132d16020830184612e2b565b9392505050565b5f819050919050565b5f6132fb6132f66132f1846132d8565b613149565b612c86565b9050919050565b61330b816132e1565b82525050565b5f60c0820190506133245f830189612e2b565b6133316020830188612d2a565b61333e6040830187613302565b61334b6060830186613302565b6133586080830185612e2b565b61336560a0830184612d2a565b979650505050505050565b5f8151905061337e81612c8f565b92915050565b5f805f6060848603121561339b5761339a612c28565b5b5f6133a886828701613370565b93505060206133b986828701613370565b92505060406133ca86828701613370565b9150509250925092565b5f6040820190506133e75f830185612e2b565b6133f46020830184612d2a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613455602683612ba2565b9150613460826133fb565b604082019050919050565b5f6020820190508181035f83015261348281613449565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134e3602483612ba2565b91506134ee82613489565b604082019050919050565b5f6020820190508181035f830152613510816134d7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613571602283612ba2565b915061357c82613517565b604082019050919050565b5f6020820190508181035f83015261359e81613565565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135ff602583612ba2565b915061360a826135a5565b604082019050919050565b5f6020820190508181035f83015261362c816135f3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61368d602383612ba2565b915061369882613633565b604082019050919050565b5f6020820190508181035f8301526136ba81613681565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61371b602983612ba2565b9150613726826136c1565b604082019050919050565b5f6020820190508181035f8301526137488161370f565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613783601983612ba2565b915061378e8261374f565b602082019050919050565b5f6020820190508181035f8301526137b081613777565b9050919050565b5f6137c182612c86565b91506137cc83612c86565b92508282019050808211156137e4576137e3612efa565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61381e601a83612ba2565b9150613829826137ea565b602082019050919050565b5f6020820190508181035f83015261384b81613812565b9050919050565b5f61385c82612c86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361388e5761388d612efa565b5b600182019050919050565b7f4f6e6c7920322043412062616c616e63652073656c6c000000000000000000005f82015250565b5f6138cd601683612ba2565b91506138d882613899565b602082019050919050565b5f6020820190508181035f8301526138fa816138c1565b9050919050565b5f61390b82612c86565b915061391683612c86565b925082820390508181111561392e5761392d612efa565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6139c081612c4b565b82525050565b5f6139d183836139b7565b60208301905092915050565b5f602082019050919050565b5f6139f38261398e565b6139fd8185613998565b9350613a08836139a8565b805f5b83811015613a38578151613a1f88826139c6565b9750613a2a836139dd565b925050600181019050613a0b565b5085935050505092915050565b5f60a082019050613a585f830188612d2a565b613a656020830187613302565b8181036040830152613a7781866139e9565b9050613a866060830185612e2b565b613a936080830184612d2a565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ad482612c86565b9150613adf83612c86565b925082613aef57613aee613a9d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b54602183612ba2565b9150613b5f82613afa565b604082019050919050565b5f6020820190508181035f830152613b8181613b48565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bbc601b83612ba2565b9150613bc782613b88565b602082019050919050565b5f6020820190508181035f830152613be981613bb0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220888117dc51cfde289586206df7f138710ff54848183d3cce60c7a8ade394c84f64736f6c63430008190033

Deployed Bytecode Sourcemap

3823:10057:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6062:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6895:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5196:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6339:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12752:160;;;;;;;;;;;;;:::i;:::-;;7064:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6248:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11946:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5309:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12396:348;;;;;;;;;;;;;:::i;:::-;;7728:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12202:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6442:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2654:148;;;;;;;;;;;;;:::i;:::-;;5487:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4996:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13020:820;;;;;;;;;;;;;:::i;:::-;;2440:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5062:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6153:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11818:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6569:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5128:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5344:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11714:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6744:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2810:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12046:148;;;;;;;;;;;;;:::i;:::-;;4096:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6062:83;6099:13;6132:5;;;;;;;;;;;;;;;;;6125:12;;6062:83;:::o;6895:161::-;6970:4;6987:39;6996:12;:10;:12::i;:::-;7010:7;7019:6;6987:8;:39::i;:::-;7044:4;7037:11;;6895:161;;;;:::o;5196:55::-;;;;:::o;6339:95::-;6392:7;4802:1;4861:2;:13;;;;:::i;:::-;4845;:29;;;;:::i;:::-;6412:14;;6339:95;:::o;12752:160::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4802:1:::1;4861:2;:13;;;;:::i;:::-;4845;:29;;;;:::i;:::-;12806:12;:22;;;;4802:1;4861:2;:13;;;;:::i;:::-;4845;:29;;;;:::i;:::-;12839:14;:22;;;;12877:27;4802:1;4861:2;:13;;;;:::i;:::-;4845;:29;;;;:::i;:::-;12877:27;;;;;;:::i;:::-;;;;;;;;12752:160::o:0;7064:313::-;7162:4;7179:36;7189:6;7197:9;7208:6;7179:9;:36::i;:::-;7226:121;7235:6;7243:12;:10;:12::i;:::-;7257:89;7295:6;7257:89;;;;;;;;;;;;;;;;;:11;:19;7269:6;7257:19;;;;;;;;;;;;;;;:33;7277:12;:10;:12::i;:::-;7257:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7226:8;:121::i;:::-;7365:4;7358:11;;7064:313;;;;;:::o;6248:83::-;6289:5;4802:1;6307:16;;6248:83;:::o;11946:92::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12023:7:::1;12012:8;;:18;;;;;;;;;;;;;;;;;;11946:92:::0;:::o;5309:28::-;;;;;;;;;;;;;:::o;12396:348::-;12460:10;;;;;;;;;;;12446:24;;:12;:10;:12::i;:::-;:24;;;12438:33;;;;;;12482:20;12503:24;12521:4;12503:9;:24::i;:::-;12482:45;;12554:1;12541:12;:14;12538:73;;;12569:30;12586:12;12569:16;:30::i;:::-;12538:73;12621:18;12640:21;12621:40;;12686:1;12675:10;:12;12672:65;;;12701:24;12714:10;12701:12;:24::i;:::-;12672:65;12427:317;;12396:348::o;7728:96::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7812:4:::1;7793:10;:16;7804:4;7793:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;7728:96:::0;:::o;12202:185::-;12292:12;;;;;;;;;;;:27;;;;12308:11;;;;;;;;;;;12292:27;12284:36;;;;;;12338:10;12331:27;;;12359:10;;;;;;;;;;;12371:7;12331:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12202:185;;:::o;6442:119::-;6508:7;6535:9;:18;6545:7;6535:18;;;;;;;;;;;;;;;;6528:25;;6442:119;;;:::o;2654:148::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2761:1:::1;2724:40;;2745:6;::::0;::::1;;;;;;;;2724:40;;;;;;;;;;;;2792:1;2775:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2654:148::o:0;5487:27::-;;;;;;;;;;;;;:::o;4996:59::-;;;;:::o;13020:820::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13086:11:::1;;;;;;;;;;;13085:12;13077:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13172:42;13135:15;;:80;;;;;;;;;;;;;;;;;;13226:58;13243:4;13258:15;;;;;;;;;;;4802:1;4861:2;:13;;;;:::i;:::-;4845;:29;;;;:::i;:::-;13226:8;:58::i;:::-;13329:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13311:55;;;13375:4;13382:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13311:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13295:13;;:110;;;;;;;;;;;;;;;;;;13453:4;13416:10;:34;13435:13;;;;;;;;;;;13416:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;13512:4;13468:17;:41;13494:13;;;;;;;;;;;13468:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;13527:15;;;;;;;;;;;:31;;;13566:21;13597:4;13603:24;13621:4;13603:9;:24::i;:::-;13628:1;13630::::0;13632:7:::1;:5;:7::i;:::-;13640:15;13527:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13674:13;;;;;;;;;;;13667:29;;;13705:15;;;;;;;;;;;13723:14;13667:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13763:4;13749:11;;:18;;;;;;;;;;;;;;;;;;13792:4;13778:11;;:18;;;;;;;;;;;;;;;;;;13820:12;13807:10;:25;;;;13020:820::o:0;2440:79::-;2478:7;2505:6;;;;;;;;;;;2498:13;;2440:79;:::o;5062:59::-;;;;:::o;6153:87::-;6192:13;6225:7;;;;;;;;;;;;;;;;;6218:14;;6153:87;:::o;11818:120::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11924:6:::1;11898:17;:23;11916:4;11898:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;11818:120:::0;;:::o;6569:167::-;6647:4;6664:42;6674:12;:10;:12::i;:::-;6688:9;6699:6;6664:9;:42::i;:::-;6724:4;6717:11;;6569:167;;;;:::o;5128:61::-;;;;:::o;5344:32::-;;;;;;;;;;;;;:::o;11714:96::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11795:7:::1;11780:12;;:22;;;;;;;;;;;;;;;;;;11714:96:::0;:::o;6744:143::-;6825:7;6852:11;:18;6864:5;6852:18;;;;;;;;;;;;;;;:27;6871:7;6852:27;;;;;;;;;;;;;;;;6845:34;;6744:143;;;;:::o;2810:244::-;2577:12;:10;:12::i;:::-;2567:22;;:6;;;;;;;;;;:22;;;2559:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2919:1:::1;2899:22;;:8;:22;;::::0;2891:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3009:8;2980:38;;3001:6;::::0;::::1;;;;;;;;2980:38;;;;;;;;;;;;3038:8;3029:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2810:244:::0;:::o;12046:148::-;12096:12;;;;;;;;;;;:27;;;;12112:11;;;;;;;;;;;12096:27;12088:36;;;;;;12143:10;;;;;;;;;;;12135:28;;:51;12164:21;12135:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12046:148::o;4096:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;195:98::-;248:7;275:10;268:17;;195:98;:::o;7385:335::-;7495:1;7478:19;;:5;:19;;;7470:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7576:1;7557:21;;:7;:21;;;7549:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7658:6;7628:11;:18;7640:5;7628:18;;;;;;;;;;;;;;;:27;7647:7;7628:27;;;;;;;;;;;;;;;:36;;;;7696:7;7680:32;;7689:5;7680:32;;;7705:6;7680:32;;;;;;:::i;:::-;;;;;;;;7385:335;;;:::o;7832:3072::-;7936:1;7920:18;;:4;:18;;;7912:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8013:1;7999:16;;:2;:16;;;7991:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8083:1;8074:6;:10;8066:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8141:17;8185:7;:5;:7::i;:::-;8177:15;;:4;:15;;;;:32;;;;;8202:7;:5;:7::i;:::-;8196:13;;:2;:13;;;;8177:32;8173:2375;;;8238:121;8354:4;8238:111;8261:15;;8250:9;;:26;8249:99;;8306:12;;8295:9;;:23;8294:53;;8333:14;;8294:53;;;8321:10;;8294:53;8249:99;;;8279:12;;8249:99;8238:6;:10;;:111;;;;:::i;:::-;:115;;:121;;;;:::i;:::-;8226:133;;8380:10;:16;8391:4;8380:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8414:15;;;;;;;;;;;8400:30;;:2;:30;;;;8380:50;:77;;;;;8436:17;:21;8454:2;8436:21;;;;;;;;;;;;;;;;;;;;;;;;;8434:23;8380:77;8376:430;;;8497:12;;8487:6;:22;;8479:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8592:14;;8582:6;8566:13;8576:2;8566:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8558:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8680:12;8675:1;8662:10;;:14;;;;:::i;:::-;:30;8658:103;;;8726:14;8737:2;8726:10;:14::i;:::-;8725:15;8717:24;;;;;;8658:103;8779:9;;:11;;;;;;;;;:::i;:::-;;;;;;8376:430;8827:10;:14;8838:2;8827:14;;;;;;;;;;;;;;;;;;;;;;;;;8826:15;:42;;;;;8847:17;:21;8865:2;8847:21;;;;;;;;;;;;;;;;;;;;;;;;;8845:23;8826:42;8822:162;;;8923:14;;8913:6;8897:13;8907:2;8897:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8889:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8822:162;9003:10;:14;9014:2;9003:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;9036:4;9021:20;;:4;:20;;;;9003:38;9000:216;;;9074:126;9195:4;9074:116;9097:16;;9086:9;;:27;9085:104;;9144:13;;9133:9;;:24;9132:56;;9173:15;;9132:56;;;9160:11;;9132:56;9085:104;;;9116:13;;9085:104;9074:6;:10;;:116;;;;:::i;:::-;:120;;:126;;;;:::i;:::-;9062:138;;9000:216;9230:10;:16;9241:4;9230:16;;;;;;;;;;;;;;;;;;;;;;;;;9229:17;:36;;;;;9251:10;:14;9262:2;9251:14;;;;;;;;;;;;;;;;;;;;;;;;;9250:15;9229:36;:60;;;;;9284:4;9269:20;;:4;:20;;;;9229:60;9225:115;;;9323:1;9311:13;;9225:115;9356:28;9387:24;9405:4;9387:9;:24::i;:::-;9356:55;;9430:8;;;;;;;;;;;:19;;;;;9443:6;;;;;;;;;;;9442:7;9430:19;:37;;;;;9453:10;:14;9464:2;9453:14;;;;;;;;;;;;;;;;;;;;;;;;;9430:37;:52;;;;;9471:11;;;;;;;;;;;9430:52;:94;;;;;9507:17;;9486:20;:38;9430:94;:126;;;;;9538:18;;9528:9;;:28;9430:126;9426:1111;;;9596:13;;9581:12;:28;9577:90;;;9646:1;9634:9;:13;;;;9577:90;9704:1;9693:9;;:12;9685:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9751:67;9768:49;9772:6;9779:37;9783:20;9804:11;;9779:3;:37::i;:::-;9768:3;:49::i;:::-;9751:16;:67::i;:::-;9837:26;9866:21;9837:50;;9930:1;9909:18;:22;9906:105;;;9956:35;9969:21;9956:12;:35::i;:::-;9906:105;10029:9;;:11;;;;;;;;;:::i;:::-;;;;;;10075:12;10059:13;:28;;;;9558:545;9426:1111;;;10128:6;;;;;;;;;;;10127:7;:25;;;;;10138:10;:14;10149:2;10138:14;;;;;;;;;;;;;;;;;;;;;;;;;10127:25;:40;;;;;10156:11;;;;;;;;;;;10127:40;:82;;;;;10192:17;;10171:20;:38;10127:82;:114;;;;;10223:18;;10213:9;;:28;10127:114;10124:413;;;10262:67;10279:49;10283:6;10290:37;10294:20;10315:11;;10290:3;:37::i;:::-;10279:3;:49::i;:::-;10262:16;:67::i;:::-;10348:26;10377:21;10348:50;;10441:1;10420:18;:22;10417:105;;;10467:35;10480:21;10467:12;:35::i;:::-;10417:105;10243:294;10124:413;9426:1111;8211:2337;8173:2375;10573:1;10563:9;:11;10560:161;;;10613:39;10642:9;10613;:24;10631:4;10613:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10588:9;:24;10606:4;10588:24;;;;;;;;;;;;;;;:64;;;;10693:4;10670:39;;10679:4;10670:39;;;10699:9;10670:39;;;;;;:::i;:::-;;;;;;;;10560:161;10747:27;10767:6;10747:9;:15;10757:4;10747:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10731:9;:15;10741:4;10731:15;;;;;;;;;;;;;;;:43;;;;10799:40;10817:21;10828:9;10817:6;:10;;:21;;;;:::i;:::-;10799:9;:13;10809:2;10799:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10785:9;:13;10795:2;10785:13;;;;;;;;;;;;;;;:54;;;;10870:2;10855:41;;10864:4;10855:41;;;10874:21;10885:9;10874:6;:10;;:21;;;;:::i;:::-;10855:41;;;;;;:::i;:::-;;;;;;;;7901:3003;7832:3072;;;:::o;1332:190::-;1418:7;1451:1;1446;:6;;1454:12;1438:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1478:9;1494:1;1490;:5;;;;:::i;:::-;1478:17;;1513:1;1506:8;;;1332:190;;;;;:::o;11223:483::-;5614:4;5605:6;;:13;;;;;;;;;;;;;;;;;;11301:21:::1;11339:1;11325:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11301:40;;11370:4;11352;11357:1;11352:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11396:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11386:4;11391:1;11386:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11429:62;11446:4;11461:15;;;;;;;;;;;11479:11;11429:8;:62::i;:::-;11502:15;;;;;;;;;;;:66;;;11583:11;11609:1;11625:4;11652;11672:15;11502:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11290:416;5650:5:::0;5641:6;;:14;;;;;;;;;;;;;;;;;;11223:483;:::o;12920:92::-;12977:10;;;;;;;;;;;:19;;:27;12997:6;12977:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12920:92;:::o;1530:246::-;1588:7;1617:1;1612;:6;1608:47;;1642:1;1635:8;;;;1608:47;1665:9;1681:1;1677;:5;;;;:::i;:::-;1665:17;;1710:1;1705;1701;:5;;;;:::i;:::-;:10;1693:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1767:1;1760:8;;;1530:246;;;;;:::o;1784:132::-;1842:7;1869:39;1873:1;1876;1869:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1862:46;;1784:132;;;;:::o;11020:195::-;11079:4;11096:12;11163:7;11151:20;11143:28;;11206:1;11199:4;:8;11192:15;;;11020:195;;;:::o;10914:98::-;10971:7;10998:1;10996;:3;10995:9;;11003:1;10995:9;;;11001:1;10995:9;10988:16;;10914:98;;;;:::o;1001:179::-;1059:7;1079:9;1095:1;1091;:5;;;;:::i;:::-;1079:17;;1120:1;1115;:6;;1107:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1171:1;1164:8;;;1001:179;;;;:::o;1188:136::-;1246:7;1273:43;1277:1;1280;1273:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1266:50;;1188:136;;;;:::o;1924:189::-;2010:7;2042:1;2038;:5;2045:12;2030:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2069:9;2085:1;2081;:5;;;;:::i;:::-;2069:17;;2104:1;2097:8;;;1924:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:116::-;4816:21;4831:5;4816:21;:::i;:::-;4809:5;4806:32;4796:60;;4852:1;4849;4842:12;4796:60;4746:116;:::o;4868:133::-;4911:5;4949:6;4936:20;4927:29;;4965:30;4989:5;4965:30;:::i;:::-;4868:133;;;;:::o;5007:323::-;5063:6;5112:2;5100:9;5091:7;5087:23;5083:32;5080:119;;;5118:79;;:::i;:::-;5080:119;5238:1;5263:50;5305:7;5296:6;5285:9;5281:22;5263:50;:::i;:::-;5253:60;;5209:114;5007:323;;;;:::o;5336:118::-;5423:24;5441:5;5423:24;:::i;:::-;5418:3;5411:37;5336:118;;:::o;5460:222::-;5553:4;5591:2;5580:9;5576:18;5568:26;;5604:71;5672:1;5661:9;5657:17;5648:6;5604:71;:::i;:::-;5460:222;;;;:::o;5688:329::-;5747:6;5796:2;5784:9;5775:7;5771:23;5767:32;5764:119;;;5802:79;;:::i;:::-;5764:119;5922:1;5947:53;5992:7;5983:6;5972:9;5968:22;5947:53;:::i;:::-;5937:63;;5893:117;5688:329;;;;:::o;6023:468::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:50;6466:7;6457:6;6446:9;6442:22;6424:50;:::i;:::-;6414:60;;6369:115;6023:468;;;;;:::o;6497:474::-;6565:6;6573;6622:2;6610:9;6601:7;6597:23;6593:32;6590:119;;;6628:79;;:::i;:::-;6590:119;6748:1;6773:53;6818:7;6809:6;6798:9;6794:22;6773:53;:::i;:::-;6763:63;;6719:117;6875:2;6901:53;6946:7;6937:6;6926:9;6922:22;6901:53;:::i;:::-;6891:63;;6846:118;6497:474;;;;;:::o;6977:180::-;7025:77;7022:1;7015:88;7122:4;7119:1;7112:15;7146:4;7143:1;7136:15;7163:102;7205:8;7252:5;7249:1;7245:13;7224:34;;7163:102;;;:::o;7271:848::-;7332:5;7339:4;7363:6;7354:15;;7387:5;7378:14;;7401:712;7422:1;7412:8;7409:15;7401:712;;;7517:4;7512:3;7508:14;7502:4;7499:24;7496:50;;;7526:18;;:::i;:::-;7496:50;7576:1;7566:8;7562:16;7559:451;;;7991:4;7984:5;7980:16;7971:25;;7559:451;8041:4;8035;8031:15;8023:23;;8071:32;8094:8;8071:32;:::i;:::-;8059:44;;7401:712;;;7271:848;;;;;;;:::o;8125:1073::-;8179:5;8370:8;8360:40;;8391:1;8382:10;;8393:5;;8360:40;8419:4;8409:36;;8436:1;8427:10;;8438:5;;8409:36;8505:4;8553:1;8548:27;;;;8589:1;8584:191;;;;8498:277;;8548:27;8566:1;8557:10;;8568:5;;;8584:191;8629:3;8619:8;8616:17;8613:43;;;8636:18;;:::i;:::-;8613:43;8685:8;8682:1;8678:16;8669:25;;8720:3;8713:5;8710:14;8707:40;;;8727:18;;:::i;:::-;8707:40;8760:5;;;8498:277;;8884:2;8874:8;8871:16;8865:3;8859:4;8856:13;8852:36;8834:2;8824:8;8821:16;8816:2;8810:4;8807:12;8803:35;8787:111;8784:246;;;8940:8;8934:4;8930:19;8921:28;;8975:3;8968:5;8965:14;8962:40;;;8982:18;;:::i;:::-;8962:40;9015:5;;8784:246;9055:42;9093:3;9083:8;9077:4;9074:1;9055:42;:::i;:::-;9040:57;;;;9129:4;9124:3;9120:14;9113:5;9110:25;9107:51;;;9138:18;;:::i;:::-;9107:51;9187:4;9180:5;9176:16;9167:25;;8125:1073;;;;;;:::o;9204:281::-;9262:5;9286:23;9304:4;9286:23;:::i;:::-;9278:31;;9330:25;9346:8;9330:25;:::i;:::-;9318:37;;9374:104;9411:66;9401:8;9395:4;9374:104;:::i;:::-;9365:113;;9204:281;;;;:::o;9491:410::-;9531:7;9554:20;9572:1;9554:20;:::i;:::-;9549:25;;9588:20;9606:1;9588:20;:::i;:::-;9583:25;;9643:1;9640;9636:9;9665:30;9683:11;9665:30;:::i;:::-;9654:41;;9844:1;9835:7;9831:15;9828:1;9825:22;9805:1;9798:9;9778:83;9755:139;;9874:18;;:::i;:::-;9755:139;9539:362;9491:410;;;;:::o;9907:182::-;10047:34;10043:1;10035:6;10031:14;10024:58;9907:182;:::o;10095:366::-;10237:3;10258:67;10322:2;10317:3;10258:67;:::i;:::-;10251:74;;10334:93;10423:3;10334:93;:::i;:::-;10452:2;10447:3;10443:12;10436:19;;10095:366;;;:::o;10467:419::-;10633:4;10671:2;10660:9;10656:18;10648:26;;10720:9;10714:4;10710:20;10706:1;10695:9;10691:17;10684:47;10748:131;10874:4;10748:131;:::i;:::-;10740:139;;10467:419;;;:::o;10892:60::-;10920:3;10941:5;10934:12;;10892:60;;;:::o;10958:142::-;11008:9;11041:53;11059:34;11068:24;11086:5;11068:24;:::i;:::-;11059:34;:::i;:::-;11041:53;:::i;:::-;11028:66;;10958:142;;;:::o;11106:126::-;11156:9;11189:37;11220:5;11189:37;:::i;:::-;11176:50;;11106:126;;;:::o;11238:134::-;11296:9;11329:37;11360:5;11329:37;:::i;:::-;11316:50;;11238:134;;;:::o;11378:147::-;11473:45;11512:5;11473:45;:::i;:::-;11468:3;11461:58;11378:147;;:::o;11531:348::-;11660:4;11698:2;11687:9;11683:18;11675:26;;11711:79;11787:1;11776:9;11772:17;11763:6;11711:79;:::i;:::-;11800:72;11868:2;11857:9;11853:18;11844:6;11800:72;:::i;:::-;11531:348;;;;;:::o;11885:137::-;11939:5;11970:6;11964:13;11955:22;;11986:30;12010:5;11986:30;:::i;:::-;11885:137;;;;:::o;12028:345::-;12095:6;12144:2;12132:9;12123:7;12119:23;12115:32;12112:119;;;12150:79;;:::i;:::-;12112:119;12270:1;12295:61;12348:7;12339:6;12328:9;12324:22;12295:61;:::i;:::-;12285:71;;12241:125;12028:345;;;;:::o;12379:173::-;12519:25;12515:1;12507:6;12503:14;12496:49;12379:173;:::o;12558:366::-;12700:3;12721:67;12785:2;12780:3;12721:67;:::i;:::-;12714:74;;12797:93;12886:3;12797:93;:::i;:::-;12915:2;12910:3;12906:12;12899:19;;12558:366;;;:::o;12930:419::-;13096:4;13134:2;13123:9;13119:18;13111:26;;13183:9;13177:4;13173:20;13169:1;13158:9;13154:17;13147:47;13211:131;13337:4;13211:131;:::i;:::-;13203:139;;12930:419;;;:::o;13355:143::-;13412:5;13443:6;13437:13;13428:22;;13459:33;13486:5;13459:33;:::i;:::-;13355:143;;;;:::o;13504:351::-;13574:6;13623:2;13611:9;13602:7;13598:23;13594:32;13591:119;;;13629:79;;:::i;:::-;13591:119;13749:1;13774:64;13830:7;13821:6;13810:9;13806:22;13774:64;:::i;:::-;13764:74;;13720:128;13504:351;;;;:::o;13861:332::-;13982:4;14020:2;14009:9;14005:18;13997:26;;14033:71;14101:1;14090:9;14086:17;14077:6;14033:71;:::i;:::-;14114:72;14182:2;14171:9;14167:18;14158:6;14114:72;:::i;:::-;13861:332;;;;;:::o;14199:85::-;14244:7;14273:5;14262:16;;14199:85;;;:::o;14290:158::-;14348:9;14381:61;14399:42;14408:32;14434:5;14408:32;:::i;:::-;14399:42;:::i;:::-;14381:61;:::i;:::-;14368:74;;14290:158;;;:::o;14454:147::-;14549:45;14588:5;14549:45;:::i;:::-;14544:3;14537:58;14454:147;;:::o;14607:807::-;14856:4;14894:3;14883:9;14879:19;14871:27;;14908:71;14976:1;14965:9;14961:17;14952:6;14908:71;:::i;:::-;14989:72;15057:2;15046:9;15042:18;15033:6;14989:72;:::i;:::-;15071:80;15147:2;15136:9;15132:18;15123:6;15071:80;:::i;:::-;15161;15237:2;15226:9;15222:18;15213:6;15161:80;:::i;:::-;15251:73;15319:3;15308:9;15304:19;15295:6;15251:73;:::i;:::-;15334;15402:3;15391:9;15387:19;15378:6;15334:73;:::i;:::-;14607:807;;;;;;;;;:::o;15420:143::-;15477:5;15508:6;15502:13;15493:22;;15524:33;15551:5;15524:33;:::i;:::-;15420:143;;;;:::o;15569:663::-;15657:6;15665;15673;15722:2;15710:9;15701:7;15697:23;15693:32;15690:119;;;15728:79;;:::i;:::-;15690:119;15848:1;15873:64;15929:7;15920:6;15909:9;15905:22;15873:64;:::i;:::-;15863:74;;15819:128;15986:2;16012:64;16068:7;16059:6;16048:9;16044:22;16012:64;:::i;:::-;16002:74;;15957:129;16125:2;16151:64;16207:7;16198:6;16187:9;16183:22;16151:64;:::i;:::-;16141:74;;16096:129;15569:663;;;;;:::o;16238:332::-;16359:4;16397:2;16386:9;16382:18;16374:26;;16410:71;16478:1;16467:9;16463:17;16454:6;16410:71;:::i;:::-;16491:72;16559:2;16548:9;16544:18;16535:6;16491:72;:::i;:::-;16238:332;;;;;:::o;16576:225::-;16716:34;16712:1;16704:6;16700:14;16693:58;16785:8;16780:2;16772:6;16768:15;16761:33;16576:225;:::o;16807:366::-;16949:3;16970:67;17034:2;17029:3;16970:67;:::i;:::-;16963:74;;17046:93;17135:3;17046:93;:::i;:::-;17164:2;17159:3;17155:12;17148:19;;16807:366;;;:::o;17179:419::-;17345:4;17383:2;17372:9;17368:18;17360:26;;17432:9;17426:4;17422:20;17418:1;17407:9;17403:17;17396:47;17460:131;17586:4;17460:131;:::i;:::-;17452:139;;17179:419;;;:::o;17604:223::-;17744:34;17740:1;17732:6;17728:14;17721:58;17813:6;17808:2;17800:6;17796:15;17789:31;17604:223;:::o;17833:366::-;17975:3;17996:67;18060:2;18055:3;17996:67;:::i;:::-;17989:74;;18072:93;18161:3;18072:93;:::i;:::-;18190:2;18185:3;18181:12;18174:19;;17833:366;;;:::o;18205:419::-;18371:4;18409:2;18398:9;18394:18;18386:26;;18458:9;18452:4;18448:20;18444:1;18433:9;18429:17;18422:47;18486:131;18612:4;18486:131;:::i;:::-;18478:139;;18205:419;;;:::o;18630:221::-;18770:34;18766:1;18758:6;18754:14;18747:58;18839:4;18834:2;18826:6;18822:15;18815:29;18630:221;:::o;18857:366::-;18999:3;19020:67;19084:2;19079:3;19020:67;:::i;:::-;19013:74;;19096:93;19185:3;19096:93;:::i;:::-;19214:2;19209:3;19205:12;19198:19;;18857:366;;;:::o;19229:419::-;19395:4;19433:2;19422:9;19418:18;19410:26;;19482:9;19476:4;19472:20;19468:1;19457:9;19453:17;19446:47;19510:131;19636:4;19510:131;:::i;:::-;19502:139;;19229:419;;;:::o;19654:224::-;19794:34;19790:1;19782:6;19778:14;19771:58;19863:7;19858:2;19850:6;19846:15;19839:32;19654:224;:::o;19884:366::-;20026:3;20047:67;20111:2;20106:3;20047:67;:::i;:::-;20040:74;;20123:93;20212:3;20123:93;:::i;:::-;20241:2;20236:3;20232:12;20225:19;;19884:366;;;:::o;20256:419::-;20422:4;20460:2;20449:9;20445:18;20437:26;;20509:9;20503:4;20499:20;20495:1;20484:9;20480:17;20473:47;20537:131;20663:4;20537:131;:::i;:::-;20529:139;;20256:419;;;:::o;20681:222::-;20821:34;20817:1;20809:6;20805:14;20798:58;20890:5;20885:2;20877:6;20873:15;20866:30;20681:222;:::o;20909:366::-;21051:3;21072:67;21136:2;21131:3;21072:67;:::i;:::-;21065:74;;21148:93;21237:3;21148:93;:::i;:::-;21266:2;21261:3;21257:12;21250:19;;20909:366;;;:::o;21281:419::-;21447:4;21485:2;21474:9;21470:18;21462:26;;21534:9;21528:4;21524:20;21520:1;21509:9;21505:17;21498:47;21562:131;21688:4;21562:131;:::i;:::-;21554:139;;21281:419;;;:::o;21706:228::-;21846:34;21842:1;21834:6;21830:14;21823:58;21915:11;21910:2;21902:6;21898:15;21891:36;21706:228;:::o;21940:366::-;22082:3;22103:67;22167:2;22162:3;22103:67;:::i;:::-;22096:74;;22179:93;22268:3;22179:93;:::i;:::-;22297:2;22292:3;22288:12;22281:19;;21940:366;;;:::o;22312:419::-;22478:4;22516:2;22505:9;22501:18;22493:26;;22565:9;22559:4;22555:20;22551:1;22540:9;22536:17;22529:47;22593:131;22719:4;22593:131;:::i;:::-;22585:139;;22312:419;;;:::o;22737:175::-;22877:27;22873:1;22865:6;22861:14;22854:51;22737:175;:::o;22918:366::-;23060:3;23081:67;23145:2;23140:3;23081:67;:::i;:::-;23074:74;;23157:93;23246:3;23157:93;:::i;:::-;23275:2;23270:3;23266:12;23259:19;;22918:366;;;:::o;23290:419::-;23456:4;23494:2;23483:9;23479:18;23471:26;;23543:9;23537:4;23533:20;23529:1;23518:9;23514:17;23507:47;23571:131;23697:4;23571:131;:::i;:::-;23563:139;;23290:419;;;:::o;23715:191::-;23755:3;23774:20;23792:1;23774:20;:::i;:::-;23769:25;;23808:20;23826:1;23808:20;:::i;:::-;23803:25;;23851:1;23848;23844:9;23837:16;;23872:3;23869:1;23866:10;23863:36;;;23879:18;;:::i;:::-;23863:36;23715:191;;;;:::o;23912:176::-;24052:28;24048:1;24040:6;24036:14;24029:52;23912:176;:::o;24094:366::-;24236:3;24257:67;24321:2;24316:3;24257:67;:::i;:::-;24250:74;;24333:93;24422:3;24333:93;:::i;:::-;24451:2;24446:3;24442:12;24435:19;;24094:366;;;:::o;24466:419::-;24632:4;24670:2;24659:9;24655:18;24647:26;;24719:9;24713:4;24709:20;24705:1;24694:9;24690:17;24683:47;24747:131;24873:4;24747:131;:::i;:::-;24739:139;;24466:419;;;:::o;24891:233::-;24930:3;24953:24;24971:5;24953:24;:::i;:::-;24944:33;;24999:66;24992:5;24989:77;24986:103;;25069:18;;:::i;:::-;24986:103;25116:1;25109:5;25105:13;25098:20;;24891:233;;;:::o;25130:172::-;25270:24;25266:1;25258:6;25254:14;25247:48;25130:172;:::o;25308:366::-;25450:3;25471:67;25535:2;25530:3;25471:67;:::i;:::-;25464:74;;25547:93;25636:3;25547:93;:::i;:::-;25665:2;25660:3;25656:12;25649:19;;25308:366;;;:::o;25680:419::-;25846:4;25884:2;25873:9;25869:18;25861:26;;25933:9;25927:4;25923:20;25919:1;25908:9;25904:17;25897:47;25961:131;26087:4;25961:131;:::i;:::-;25953:139;;25680:419;;;:::o;26105:194::-;26145:4;26165:20;26183:1;26165:20;:::i;:::-;26160:25;;26199:20;26217:1;26199:20;:::i;:::-;26194:25;;26243:1;26240;26236:9;26228:17;;26267:1;26261:4;26258:11;26255:37;;;26272:18;;:::i;:::-;26255:37;26105:194;;;;:::o;26305:180::-;26353:77;26350:1;26343:88;26450:4;26447:1;26440:15;26474:4;26471:1;26464:15;26491:180;26539:77;26536:1;26529:88;26636:4;26633:1;26626:15;26660:4;26657:1;26650:15;26677:114;26744:6;26778:5;26772:12;26762:22;;26677:114;;;:::o;26797:184::-;26896:11;26930:6;26925:3;26918:19;26970:4;26965:3;26961:14;26946:29;;26797:184;;;;:::o;26987:132::-;27054:4;27077:3;27069:11;;27107:4;27102:3;27098:14;27090:22;;26987:132;;;:::o;27125:108::-;27202:24;27220:5;27202:24;:::i;:::-;27197:3;27190:37;27125:108;;:::o;27239:179::-;27308:10;27329:46;27371:3;27363:6;27329:46;:::i;:::-;27407:4;27402:3;27398:14;27384:28;;27239:179;;;;:::o;27424:113::-;27494:4;27526;27521:3;27517:14;27509:22;;27424:113;;;:::o;27573:732::-;27692:3;27721:54;27769:5;27721:54;:::i;:::-;27791:86;27870:6;27865:3;27791:86;:::i;:::-;27784:93;;27901:56;27951:5;27901:56;:::i;:::-;27980:7;28011:1;27996:284;28021:6;28018:1;28015:13;27996:284;;;28097:6;28091:13;28124:63;28183:3;28168:13;28124:63;:::i;:::-;28117:70;;28210:60;28263:6;28210:60;:::i;:::-;28200:70;;28056:224;28043:1;28040;28036:9;28031:14;;27996:284;;;28000:14;28296:3;28289:10;;27697:608;;;27573:732;;;;:::o;28311:831::-;28574:4;28612:3;28601:9;28597:19;28589:27;;28626:71;28694:1;28683:9;28679:17;28670:6;28626:71;:::i;:::-;28707:80;28783:2;28772:9;28768:18;28759:6;28707:80;:::i;:::-;28834:9;28828:4;28824:20;28819:2;28808:9;28804:18;28797:48;28862:108;28965:4;28956:6;28862:108;:::i;:::-;28854:116;;28980:72;29048:2;29037:9;29033:18;29024:6;28980:72;:::i;:::-;29062:73;29130:3;29119:9;29115:19;29106:6;29062:73;:::i;:::-;28311:831;;;;;;;;:::o;29148:180::-;29196:77;29193:1;29186:88;29293:4;29290:1;29283:15;29317:4;29314:1;29307:15;29334:185;29374:1;29391:20;29409:1;29391:20;:::i;:::-;29386:25;;29425:20;29443:1;29425:20;:::i;:::-;29420:25;;29464:1;29454:35;;29469:18;;:::i;:::-;29454:35;29511:1;29508;29504:9;29499:14;;29334:185;;;;:::o;29525:220::-;29665:34;29661:1;29653:6;29649:14;29642:58;29734:3;29729:2;29721:6;29717:15;29710:28;29525:220;:::o;29751:366::-;29893:3;29914:67;29978:2;29973:3;29914:67;:::i;:::-;29907:74;;29990:93;30079:3;29990:93;:::i;:::-;30108:2;30103:3;30099:12;30092:19;;29751:366;;;:::o;30123:419::-;30289:4;30327:2;30316:9;30312:18;30304:26;;30376:9;30370:4;30366:20;30362:1;30351:9;30347:17;30340:47;30404:131;30530:4;30404:131;:::i;:::-;30396:139;;30123:419;;;:::o;30548:177::-;30688:29;30684:1;30676:6;30672:14;30665:53;30548:177;:::o;30731:366::-;30873:3;30894:67;30958:2;30953:3;30894:67;:::i;:::-;30887:74;;30970:93;31059:3;30970:93;:::i;:::-;31088:2;31083:3;31079:12;31072:19;;30731:366;;;:::o;31103:419::-;31269:4;31307:2;31296:9;31292:18;31284:26;;31356:9;31350:4;31346:20;31342:1;31331:9;31327:17;31320:47;31384:131;31510:4;31384:131;:::i;:::-;31376:139;;31103:419;;;:::o

Swarm Source

ipfs://888117dc51cfde289586206df7f138710ff54848183d3cce60c7a8ade394c84f
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.