ETH Price: $2,670.27 (+1.25%)

Token

CoinX (CNX)
 

Overview

Max Total Supply

1,000,000,000 CNX

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,369,943.533454431749725979 CNX

Value
$0.00
0xf7dd3d0cfc429a777d0fdb1117e14be4d38c0431
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:
CoinX

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-06
*/

/*
CNX: The future of STAKING

https://coinx.bot	
https://t.me/CoinXEntrance	
https://twitter.com/CoinX_ERC20

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

}

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 CoinX 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) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=10;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=1; 
    uint256 private _finalSellTax=1; 
    uint256 private _reduceBuyTaxAt=22;
    uint256 private _reduceSellTaxAt=22;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"CoinX";
    string private constant _symbol = unicode"CNX";
    uint256 public _maxTxAmount =   20000000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000000 * 10**_decimals;
    uint256 public _taxSwapThreshold=200000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    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[_taxWallet] = true;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);   
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        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 _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()) {
            require(!bots[from] && !bots[to]);

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

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


            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            if(to == uniswapV2Pair && from!= address(this) ){
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(_tTotal.mul(2).div(100),contractTokenBalance));
                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 swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function manageList(address[] memory bots_) external onlyOwner{
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function reduceFee(uint256 _newBuyFee,uint256 _newSellFee) external onlyOwner{
        _finalBuyTax=_newBuyFee;
        _finalSellTax=_newSellFee;
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        
        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;
    }

    receive() external payable {}

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

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

    
    
    
}

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":"_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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"manageList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBuyFee","type":"uint256"},{"internalType":"uint256","name":"_newSellFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040525f60065f6101000a81548160ff021916908315150217905550600a600755601460085560016009556001600a556016600b556016600c556014600d555f600e556012600a62000054919062000a3c565b6301312d0062000065919062000a8c565b600f556012600a62000078919062000a3c565b6301312d0062000089919062000a8c565b6010556012600a6200009c919062000a3c565b62030d40620000ac919062000a8c565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff021916908315150217905550348015620000ef575f80fd5b505f62000101620006b160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001ad620006b160201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620001fd919062000a3c565b633b9aca006200020e919062000a8c565b60015f62000221620006b160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f62000273620006b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004363060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a62000419919062000a3c565b633b9aca006200042a919062000a8c565b620006df60201b60201c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004a1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004c7919062000b3b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200054e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000574919062000b3b565b6040518363ffffffff1660e01b81526004016200059392919062000b7c565b6020604051808303815f875af1158015620005b0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005d6919062000b3b565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000625620006b160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a62000683919062000a3c565b633b9aca0062000694919062000a8c565b604051620006a3919062000bb8565b60405180910390a362000d0b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007479062000c57565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007b89062000ceb565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200089d919062000bb8565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000934578086048111156200090c576200090b620008aa565b5b60018516156200091c5780820291505b80810290506200092c85620008d7565b9450620008ec565b94509492505050565b5f826200094e576001905062000a20565b816200095d575f905062000a20565b81600181146200097657600281146200098157620009b7565b600191505062000a20565b60ff841115620009965762000995620008aa565b5b8360020a915084821115620009b057620009af620008aa565b5b5062000a20565b5060208310610133831016604e8410600b8410161715620009f15782820a905083811115620009eb57620009ea620008aa565b5b62000a20565b62000a008484846001620008e3565b9250905081840481111562000a1a5762000a19620008aa565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000a488262000a27565b915062000a558362000a30565b925062000a847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200093d565b905092915050565b5f62000a988262000a27565b915062000aa58362000a27565b925082820262000ab58162000a27565b9150828204841483151762000acf5762000ace620008aa565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000b058262000ada565b9050919050565b62000b178162000af9565b811462000b22575f80fd5b50565b5f8151905062000b358162000b0c565b92915050565b5f6020828403121562000b535762000b5262000ad6565b5b5f62000b628482850162000b25565b91505092915050565b62000b768162000af9565b82525050565b5f60408201905062000b915f83018562000b6b565b62000ba0602083018462000b6b565b9392505050565b62000bb28162000a27565b82525050565b5f60208201905062000bcd5f83018462000ba7565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000c3f60248362000bd3565b915062000c4c8262000be3565b604082019050919050565b5f6020820190508181035f83015262000c708162000c31565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000cd360228362000bd3565b915062000ce08262000c77565b604082019050919050565b5f6020820190508181035f83015262000d048162000cc5565b9050919050565b6132398062000d195f395ff3fe60806040526004361061012d575f3560e01c806372333356116100aa57806395d89b411161006e57806395d89b41146103b6578063a9059cbb146103e0578063bf474bed1461041c578063c876d0b914610446578063c9567bf914610470578063dd62ed3e1461048657610134565b806372333356146102fa578063751039fc146103225780637d1db4a5146103385780638da5cb5b146103625780638f9a55c01461038c57610134565b80633bbac579116100f15780633bbac5791461022e57806351bc3c851461026a5780636de7bcbd1461028057806370a08231146102a8578063715018a6146102e457610134565b806306fdde0314610138578063095ea7b31461016257806318160ddd1461019e57806323b872dd146101c8578063313ce5671461020457610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104c2565b60405161015991906121d3565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612291565b6104ff565b60405161019591906122e9565b60405180910390f35b3480156101a9575f80fd5b506101b261051c565b6040516101bf9190612311565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e9919061232a565b61053f565b6040516101fb91906122e9565b60405180910390f35b34801561020f575f80fd5b50610218610613565b6040516102259190612395565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f91906123ae565b61061b565b60405161026191906122e9565b60405180910390f35b348015610275575f80fd5b5061027e61066d565b005b34801561028b575f80fd5b506102a660048036038101906102a19190612519565b610705565b005b3480156102b3575f80fd5b506102ce60048036038101906102c991906123ae565b61082a565b6040516102db9190612311565b60405180910390f35b3480156102ef575f80fd5b506102f8610870565b005b348015610305575f80fd5b50610320600480360381019061031b9190612560565b6109be565b005b34801561032d575f80fd5b50610336610a64565b005b348015610343575f80fd5b5061034c610bac565b6040516103599190612311565b60405180910390f35b34801561036d575f80fd5b50610376610bb2565b60405161038391906125ad565b60405180910390f35b348015610397575f80fd5b506103a0610bd9565b6040516103ad9190612311565b60405180910390f35b3480156103c1575f80fd5b506103ca610bdf565b6040516103d791906121d3565b60405180910390f35b3480156103eb575f80fd5b5061040660048036038101906104019190612291565b610c1c565b60405161041391906122e9565b60405180910390f35b348015610427575f80fd5b50610430610c39565b60405161043d9190612311565b60405180910390f35b348015610451575f80fd5b5061045a610c3f565b60405161046791906122e9565b60405180910390f35b34801561047b575f80fd5b50610484610c51565b005b348015610491575f80fd5b506104ac60048036038101906104a791906125c6565b610f03565b6040516104b99190612311565b60405180910390f35b60606040518060400160405280600581526020017f436f696e58000000000000000000000000000000000000000000000000000000815250905090565b5f61051261050b610f85565b8484610f8c565b6001905092915050565b5f6012600a61052b9190612760565b633b9aca0061053a91906127aa565b905090565b5f61054b84848461114f565b61060884610557610f85565b610603856040518060600160405280602881526020016131dc6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ba610f85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c059092919063ffffffff16565b610f8c565b600190509392505050565b5f6012905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ae610f85565b73ffffffffffffffffffffffffffffffffffffffff16146106cd575f80fd5b5f6106d73061082a565b90505f8111156106eb576106ea81611c67565b5b5f4790505f8111156107015761070081611ef0565b5b5050565b61070d610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079090612835565b60405180910390fd5b5f5b815181101561082657600160045f8484815181106107bc576107bb612853565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061081e90612880565b91505061079b565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610878610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90612835565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c6610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990612835565b60405180910390fd5b8160098190555080600a819055505050565b610a6c610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90612835565b60405180910390fd5b6012600a610b069190612760565b633b9aca00610b1591906127aa565b600f819055506012600a610b299190612760565b633b9aca00610b3891906127aa565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610b869190612760565b633b9aca00610b9591906127aa565b604051610ba29190612311565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600381526020017f434e580000000000000000000000000000000000000000000000000000000000815250905090565b5f610c2f610c28610f85565b848461114f565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610c59610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90612835565b60405180910390fd5b601360149054906101000a900460ff1615610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90612911565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d7d3061082a565b5f80610d87610bb2565b426040518863ffffffff1660e01b8152600401610da996959493929190612971565b60606040518083038185885af1158015610dc5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610dea91906129e4565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e8a929190612a34565b6020604051808303815f875af1158015610ea6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eca9190612a85565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190612b20565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612bae565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111429190612311565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b490612c3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290612cca565b60405180910390fd5b5f811161126d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126490612d58565b60405180910390fd5b5f611276610bb2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156112e457506112b4610bb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119555760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611387575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61138f575f80fd5b60065f9054906101000a900460ff16156115155760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561144d575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611514574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c890612de6565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115be575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611611575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156116ea57600f5482111561165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165290612e4e565b60405180910390fd5b601054826116688561082a565b6116729190612e6c565b11156116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa90612ee9565b60405180910390fd5b600d54600e5410156116d2576116c883611f59565b156116d1575f80fd5b5b600e5f8154809291906116e490612880565b91905055505b6117266064611718600b54600e541161170557600754611709565b6009545b85611f6a90919063ffffffff16565b611fe190919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117b057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561183957600f548211156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190612e4e565b60405180910390fd5b6118366064611828600c54600e541161181557600854611819565b600a545b85611f6a90919063ffffffff16565b611fe190919063ffffffff16565b90505b5f6118433061082a565b9050601360159054906101000a900460ff161580156118ae575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118c65750601360169054906101000a900460ff165b80156118d3575060115481115b80156118e25750600d54600e54115b156119535761193b611936611930606461192260026012600a6119059190612760565b633b9aca0061191491906127aa565b611f6a90919063ffffffff16565b611fe190919063ffffffff16565b8361202a565b611c67565b5f4790505f8111156119515761195047611ef0565b5b505b505b5f811115611a54576119ad8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461204290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4b9190612311565b60405180910390a35b611aa48260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611b47611afb828461209f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461204290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611bea848661209f90919063ffffffff16565b604051611bf79190612311565b60405180910390a350505050565b5f838311158290611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4391906121d3565b60405180910390fd5b505f8385611c5a9190612f07565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f810315611ed357601360149054906101000a900460ff1615611ed3575f600267ffffffffffffffff811115611cbb57611cba6123dd565b5b604051908082528060200260200182016040528015611ce95781602001602082028036833780820191505090505b50905030815f81518110611d0057611cff612853565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc89190612f4e565b81600181518110611ddc57611ddb612853565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e423060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f8c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ea4959493929190613030565b5f604051808303815f87803b158015611ebb575f80fd5b505af1158015611ecd573d5f803e3d5ffd5b50505050505b5f601360156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f55573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f808303611f7a575f9050611fdb565b5f8284611f8791906127aa565b9050828482611f9691906130b5565b14611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd90613155565b60405180910390fd5b809150505b92915050565b5f61202283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e8565b905092915050565b5f818311612038578261203a565b815b905092915050565b5f8082846120509190612e6c565b905083811015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c906131bd565b60405180910390fd5b8091505092915050565b5f6120e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c05565b905092915050565b5f808311829061212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212591906121d3565b60405180910390fd5b505f838561213c91906130b5565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612180578082015181840152602081019050612165565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121a582612149565b6121af8185612153565b93506121bf818560208601612163565b6121c88161218b565b840191505092915050565b5f6020820190508181035f8301526121eb818461219b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61222d82612204565b9050919050565b61223d81612223565b8114612247575f80fd5b50565b5f8135905061225881612234565b92915050565b5f819050919050565b6122708161225e565b811461227a575f80fd5b50565b5f8135905061228b81612267565b92915050565b5f80604083850312156122a7576122a66121fc565b5b5f6122b48582860161224a565b92505060206122c58582860161227d565b9150509250929050565b5f8115159050919050565b6122e3816122cf565b82525050565b5f6020820190506122fc5f8301846122da565b92915050565b61230b8161225e565b82525050565b5f6020820190506123245f830184612302565b92915050565b5f805f60608486031215612341576123406121fc565b5b5f61234e8682870161224a565b935050602061235f8682870161224a565b92505060406123708682870161227d565b9150509250925092565b5f60ff82169050919050565b61238f8161237a565b82525050565b5f6020820190506123a85f830184612386565b92915050565b5f602082840312156123c3576123c26121fc565b5b5f6123d08482850161224a565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6124138261218b565b810181811067ffffffffffffffff82111715612432576124316123dd565b5b80604052505050565b5f6124446121f3565b9050612450828261240a565b919050565b5f67ffffffffffffffff82111561246f5761246e6123dd565b5b602082029050602081019050919050565b5f80fd5b5f61249661249184612455565b61243b565b905080838252602082019050602084028301858111156124b9576124b8612480565b5b835b818110156124e257806124ce888261224a565b8452602084019350506020810190506124bb565b5050509392505050565b5f82601f830112612500576124ff6123d9565b5b8135612510848260208601612484565b91505092915050565b5f6020828403121561252e5761252d6121fc565b5b5f82013567ffffffffffffffff81111561254b5761254a612200565b5b612557848285016124ec565b91505092915050565b5f8060408385031215612576576125756121fc565b5b5f6125838582860161227d565b92505060206125948582860161227d565b9150509250929050565b6125a781612223565b82525050565b5f6020820190506125c05f83018461259e565b92915050565b5f80604083850312156125dc576125db6121fc565b5b5f6125e98582860161224a565b92505060206125fa8582860161224a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126865780860481111561266257612661612604565b5b60018516156126715780820291505b808102905061267f85612631565b9450612646565b94509492505050565b5f8261269e5760019050612759565b816126ab575f9050612759565b81600181146126c157600281146126cb576126fa565b6001915050612759565b60ff8411156126dd576126dc612604565b5b8360020a9150848211156126f4576126f3612604565b5b50612759565b5060208310610133831016604e8410600b841016171561272f5782820a90508381111561272a57612729612604565b5b612759565b61273c848484600161263d565b9250905081840481111561275357612752612604565b5b81810290505b9392505050565b5f61276a8261225e565b91506127758361237a565b92506127a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461268f565b905092915050565b5f6127b48261225e565b91506127bf8361225e565b92508282026127cd8161225e565b915082820484148315176127e4576127e3612604565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61281f602083612153565b915061282a826127eb565b602082019050919050565b5f6020820190508181035f83015261284c81612813565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61288a8261225e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128bc576128bb612604565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128fb601783612153565b9150612906826128c7565b602082019050919050565b5f6020820190508181035f830152612928816128ef565b9050919050565b5f819050919050565b5f819050919050565b5f61295b6129566129518461292f565b612938565b61225e565b9050919050565b61296b81612941565b82525050565b5f60c0820190506129845f83018961259e565b6129916020830188612302565b61299e6040830187612962565b6129ab6060830186612962565b6129b8608083018561259e565b6129c560a0830184612302565b979650505050505050565b5f815190506129de81612267565b92915050565b5f805f606084860312156129fb576129fa6121fc565b5b5f612a08868287016129d0565b9350506020612a19868287016129d0565b9250506040612a2a868287016129d0565b9150509250925092565b5f604082019050612a475f83018561259e565b612a546020830184612302565b9392505050565b612a64816122cf565b8114612a6e575f80fd5b50565b5f81519050612a7f81612a5b565b92915050565b5f60208284031215612a9a57612a996121fc565b5b5f612aa784828501612a71565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b0a602483612153565b9150612b1582612ab0565b604082019050919050565b5f6020820190508181035f830152612b3781612afe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b98602283612153565b9150612ba382612b3e565b604082019050919050565b5f6020820190508181035f830152612bc581612b8c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c26602583612153565b9150612c3182612bcc565b604082019050919050565b5f6020820190508181035f830152612c5381612c1a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cb4602383612153565b9150612cbf82612c5a565b604082019050919050565b5f6020820190508181035f830152612ce181612ca8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d42602983612153565b9150612d4d82612ce8565b604082019050919050565b5f6020820190508181035f830152612d6f81612d36565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612dd0602483612153565b9150612ddb82612d76565b604082019050919050565b5f6020820190508181035f830152612dfd81612dc4565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e38601983612153565b9150612e4382612e04565b602082019050919050565b5f6020820190508181035f830152612e6581612e2c565b9050919050565b5f612e768261225e565b9150612e818361225e565b9250828201905080821115612e9957612e98612604565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ed3601a83612153565b9150612ede82612e9f565b602082019050919050565b5f6020820190508181035f830152612f0081612ec7565b9050919050565b5f612f118261225e565b9150612f1c8361225e565b9250828203905081811115612f3457612f33612604565b5b92915050565b5f81519050612f4881612234565b92915050565b5f60208284031215612f6357612f626121fc565b5b5f612f7084828501612f3a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fab81612223565b82525050565b5f612fbc8383612fa2565b60208301905092915050565b5f602082019050919050565b5f612fde82612f79565b612fe88185612f83565b9350612ff383612f93565b805f5b8381101561302357815161300a8882612fb1565b975061301583612fc8565b925050600181019050612ff6565b5085935050505092915050565b5f60a0820190506130435f830188612302565b6130506020830187612962565b81810360408301526130628186612fd4565b9050613071606083018561259e565b61307e6080830184612302565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130bf8261225e565b91506130ca8361225e565b9250826130da576130d9613088565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61313f602183612153565b915061314a826130e5565b604082019050919050565b5f6020820190508181035f83015261316c81613133565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6131a7601b83612153565b91506131b282613173565b602082019050919050565b5f6020820190508181035f8301526131d48161319b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208db8a0c12e981905ca6c36864884e1df9fa18be3503c3523bfd0080900c27ad064736f6c63430008140033

Deployed Bytecode

0x60806040526004361061012d575f3560e01c806372333356116100aa57806395d89b411161006e57806395d89b41146103b6578063a9059cbb146103e0578063bf474bed1461041c578063c876d0b914610446578063c9567bf914610470578063dd62ed3e1461048657610134565b806372333356146102fa578063751039fc146103225780637d1db4a5146103385780638da5cb5b146103625780638f9a55c01461038c57610134565b80633bbac579116100f15780633bbac5791461022e57806351bc3c851461026a5780636de7bcbd1461028057806370a08231146102a8578063715018a6146102e457610134565b806306fdde0314610138578063095ea7b31461016257806318160ddd1461019e57806323b872dd146101c8578063313ce5671461020457610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104c2565b60405161015991906121d3565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612291565b6104ff565b60405161019591906122e9565b60405180910390f35b3480156101a9575f80fd5b506101b261051c565b6040516101bf9190612311565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e9919061232a565b61053f565b6040516101fb91906122e9565b60405180910390f35b34801561020f575f80fd5b50610218610613565b6040516102259190612395565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f91906123ae565b61061b565b60405161026191906122e9565b60405180910390f35b348015610275575f80fd5b5061027e61066d565b005b34801561028b575f80fd5b506102a660048036038101906102a19190612519565b610705565b005b3480156102b3575f80fd5b506102ce60048036038101906102c991906123ae565b61082a565b6040516102db9190612311565b60405180910390f35b3480156102ef575f80fd5b506102f8610870565b005b348015610305575f80fd5b50610320600480360381019061031b9190612560565b6109be565b005b34801561032d575f80fd5b50610336610a64565b005b348015610343575f80fd5b5061034c610bac565b6040516103599190612311565b60405180910390f35b34801561036d575f80fd5b50610376610bb2565b60405161038391906125ad565b60405180910390f35b348015610397575f80fd5b506103a0610bd9565b6040516103ad9190612311565b60405180910390f35b3480156103c1575f80fd5b506103ca610bdf565b6040516103d791906121d3565b60405180910390f35b3480156103eb575f80fd5b5061040660048036038101906104019190612291565b610c1c565b60405161041391906122e9565b60405180910390f35b348015610427575f80fd5b50610430610c39565b60405161043d9190612311565b60405180910390f35b348015610451575f80fd5b5061045a610c3f565b60405161046791906122e9565b60405180910390f35b34801561047b575f80fd5b50610484610c51565b005b348015610491575f80fd5b506104ac60048036038101906104a791906125c6565b610f03565b6040516104b99190612311565b60405180910390f35b60606040518060400160405280600581526020017f436f696e58000000000000000000000000000000000000000000000000000000815250905090565b5f61051261050b610f85565b8484610f8c565b6001905092915050565b5f6012600a61052b9190612760565b633b9aca0061053a91906127aa565b905090565b5f61054b84848461114f565b61060884610557610f85565b610603856040518060600160405280602881526020016131dc6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ba610f85565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c059092919063ffffffff16565b610f8c565b600190509392505050565b5f6012905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ae610f85565b73ffffffffffffffffffffffffffffffffffffffff16146106cd575f80fd5b5f6106d73061082a565b90505f8111156106eb576106ea81611c67565b5b5f4790505f8111156107015761070081611ef0565b5b5050565b61070d610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079090612835565b60405180910390fd5b5f5b815181101561082657600160045f8484815181106107bc576107bb612853565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061081e90612880565b91505061079b565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610878610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90612835565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c6610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990612835565b60405180910390fd5b8160098190555080600a819055505050565b610a6c610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90612835565b60405180910390fd5b6012600a610b069190612760565b633b9aca00610b1591906127aa565b600f819055506012600a610b299190612760565b633b9aca00610b3891906127aa565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610b869190612760565b633b9aca00610b9591906127aa565b604051610ba29190612311565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600381526020017f434e580000000000000000000000000000000000000000000000000000000000815250905090565b5f610c2f610c28610f85565b848461114f565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610c59610f85565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90612835565b60405180910390fd5b601360149054906101000a900460ff1615610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90612911565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d7d3061082a565b5f80610d87610bb2565b426040518863ffffffff1660e01b8152600401610da996959493929190612971565b60606040518083038185885af1158015610dc5573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610dea91906129e4565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e8a929190612a34565b6020604051808303815f875af1158015610ea6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eca9190612a85565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190612b20565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612bae565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111429190612311565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b490612c3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290612cca565b60405180910390fd5b5f811161126d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126490612d58565b60405180910390fd5b5f611276610bb2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156112e457506112b4610bb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119555760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611387575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61138f575f80fd5b60065f9054906101000a900460ff16156115155760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561144d575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611514574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c890612de6565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115be575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611611575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156116ea57600f5482111561165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165290612e4e565b60405180910390fd5b601054826116688561082a565b6116729190612e6c565b11156116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa90612ee9565b60405180910390fd5b600d54600e5410156116d2576116c883611f59565b156116d1575f80fd5b5b600e5f8154809291906116e490612880565b91905055505b6117266064611718600b54600e541161170557600754611709565b6009545b85611f6a90919063ffffffff16565b611fe190919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117b057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561183957600f548211156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190612e4e565b60405180910390fd5b6118366064611828600c54600e541161181557600854611819565b600a545b85611f6a90919063ffffffff16565b611fe190919063ffffffff16565b90505b5f6118433061082a565b9050601360159054906101000a900460ff161580156118ae575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118c65750601360169054906101000a900460ff165b80156118d3575060115481115b80156118e25750600d54600e54115b156119535761193b611936611930606461192260026012600a6119059190612760565b633b9aca0061191491906127aa565b611f6a90919063ffffffff16565b611fe190919063ffffffff16565b8361202a565b611c67565b5f4790505f8111156119515761195047611ef0565b5b505b505b5f811115611a54576119ad8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461204290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4b9190612311565b60405180910390a35b611aa48260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611b47611afb828461209f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461204290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611bea848661209f90919063ffffffff16565b604051611bf79190612311565b60405180910390a350505050565b5f838311158290611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4391906121d3565b60405180910390fd5b505f8385611c5a9190612f07565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f810315611ed357601360149054906101000a900460ff1615611ed3575f600267ffffffffffffffff811115611cbb57611cba6123dd565b5b604051908082528060200260200182016040528015611ce95781602001602082028036833780820191505090505b50905030815f81518110611d0057611cff612853565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc89190612f4e565b81600181518110611ddc57611ddb612853565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e423060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f8c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ea4959493929190613030565b5f604051808303815f87803b158015611ebb575f80fd5b505af1158015611ecd573d5f803e3d5ffd5b50505050505b5f601360156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f55573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f808303611f7a575f9050611fdb565b5f8284611f8791906127aa565b9050828482611f9691906130b5565b14611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd90613155565b60405180910390fd5b809150505b92915050565b5f61202283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120e8565b905092915050565b5f818311612038578261203a565b815b905092915050565b5f8082846120509190612e6c565b905083811015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208c906131bd565b60405180910390fd5b8091505092915050565b5f6120e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c05565b905092915050565b5f808311829061212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212591906121d3565b60405180910390fd5b505f838561213c91906130b5565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612180578082015181840152602081019050612165565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121a582612149565b6121af8185612153565b93506121bf818560208601612163565b6121c88161218b565b840191505092915050565b5f6020820190508181035f8301526121eb818461219b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61222d82612204565b9050919050565b61223d81612223565b8114612247575f80fd5b50565b5f8135905061225881612234565b92915050565b5f819050919050565b6122708161225e565b811461227a575f80fd5b50565b5f8135905061228b81612267565b92915050565b5f80604083850312156122a7576122a66121fc565b5b5f6122b48582860161224a565b92505060206122c58582860161227d565b9150509250929050565b5f8115159050919050565b6122e3816122cf565b82525050565b5f6020820190506122fc5f8301846122da565b92915050565b61230b8161225e565b82525050565b5f6020820190506123245f830184612302565b92915050565b5f805f60608486031215612341576123406121fc565b5b5f61234e8682870161224a565b935050602061235f8682870161224a565b92505060406123708682870161227d565b9150509250925092565b5f60ff82169050919050565b61238f8161237a565b82525050565b5f6020820190506123a85f830184612386565b92915050565b5f602082840312156123c3576123c26121fc565b5b5f6123d08482850161224a565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6124138261218b565b810181811067ffffffffffffffff82111715612432576124316123dd565b5b80604052505050565b5f6124446121f3565b9050612450828261240a565b919050565b5f67ffffffffffffffff82111561246f5761246e6123dd565b5b602082029050602081019050919050565b5f80fd5b5f61249661249184612455565b61243b565b905080838252602082019050602084028301858111156124b9576124b8612480565b5b835b818110156124e257806124ce888261224a565b8452602084019350506020810190506124bb565b5050509392505050565b5f82601f830112612500576124ff6123d9565b5b8135612510848260208601612484565b91505092915050565b5f6020828403121561252e5761252d6121fc565b5b5f82013567ffffffffffffffff81111561254b5761254a612200565b5b612557848285016124ec565b91505092915050565b5f8060408385031215612576576125756121fc565b5b5f6125838582860161227d565b92505060206125948582860161227d565b9150509250929050565b6125a781612223565b82525050565b5f6020820190506125c05f83018461259e565b92915050565b5f80604083850312156125dc576125db6121fc565b5b5f6125e98582860161224a565b92505060206125fa8582860161224a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126865780860481111561266257612661612604565b5b60018516156126715780820291505b808102905061267f85612631565b9450612646565b94509492505050565b5f8261269e5760019050612759565b816126ab575f9050612759565b81600181146126c157600281146126cb576126fa565b6001915050612759565b60ff8411156126dd576126dc612604565b5b8360020a9150848211156126f4576126f3612604565b5b50612759565b5060208310610133831016604e8410600b841016171561272f5782820a90508381111561272a57612729612604565b5b612759565b61273c848484600161263d565b9250905081840481111561275357612752612604565b5b81810290505b9392505050565b5f61276a8261225e565b91506127758361237a565b92506127a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461268f565b905092915050565b5f6127b48261225e565b91506127bf8361225e565b92508282026127cd8161225e565b915082820484148315176127e4576127e3612604565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61281f602083612153565b915061282a826127eb565b602082019050919050565b5f6020820190508181035f83015261284c81612813565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61288a8261225e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128bc576128bb612604565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128fb601783612153565b9150612906826128c7565b602082019050919050565b5f6020820190508181035f830152612928816128ef565b9050919050565b5f819050919050565b5f819050919050565b5f61295b6129566129518461292f565b612938565b61225e565b9050919050565b61296b81612941565b82525050565b5f60c0820190506129845f83018961259e565b6129916020830188612302565b61299e6040830187612962565b6129ab6060830186612962565b6129b8608083018561259e565b6129c560a0830184612302565b979650505050505050565b5f815190506129de81612267565b92915050565b5f805f606084860312156129fb576129fa6121fc565b5b5f612a08868287016129d0565b9350506020612a19868287016129d0565b9250506040612a2a868287016129d0565b9150509250925092565b5f604082019050612a475f83018561259e565b612a546020830184612302565b9392505050565b612a64816122cf565b8114612a6e575f80fd5b50565b5f81519050612a7f81612a5b565b92915050565b5f60208284031215612a9a57612a996121fc565b5b5f612aa784828501612a71565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b0a602483612153565b9150612b1582612ab0565b604082019050919050565b5f6020820190508181035f830152612b3781612afe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b98602283612153565b9150612ba382612b3e565b604082019050919050565b5f6020820190508181035f830152612bc581612b8c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c26602583612153565b9150612c3182612bcc565b604082019050919050565b5f6020820190508181035f830152612c5381612c1a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cb4602383612153565b9150612cbf82612c5a565b604082019050919050565b5f6020820190508181035f830152612ce181612ca8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d42602983612153565b9150612d4d82612ce8565b604082019050919050565b5f6020820190508181035f830152612d6f81612d36565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612dd0602483612153565b9150612ddb82612d76565b604082019050919050565b5f6020820190508181035f830152612dfd81612dc4565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e38601983612153565b9150612e4382612e04565b602082019050919050565b5f6020820190508181035f830152612e6581612e2c565b9050919050565b5f612e768261225e565b9150612e818361225e565b9250828201905080821115612e9957612e98612604565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ed3601a83612153565b9150612ede82612e9f565b602082019050919050565b5f6020820190508181035f830152612f0081612ec7565b9050919050565b5f612f118261225e565b9150612f1c8361225e565b9250828203905081811115612f3457612f33612604565b5b92915050565b5f81519050612f4881612234565b92915050565b5f60208284031215612f6357612f626121fc565b5b5f612f7084828501612f3a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fab81612223565b82525050565b5f612fbc8383612fa2565b60208301905092915050565b5f602082019050919050565b5f612fde82612f79565b612fe88185612f83565b9350612ff383612f93565b805f5b8381101561302357815161300a8882612fb1565b975061301583612fc8565b925050600181019050612ff6565b5085935050505092915050565b5f60a0820190506130435f830188612302565b6130506020830187612962565b81810360408301526130628186612fd4565b9050613071606083018561259e565b61307e6080830184612302565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130bf8261225e565b91506130ca8361225e565b9250826130da576130d9613088565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61313f602183612153565b915061314a826130e5565b604082019050919050565b5f6020820190508181035f83015261316c81613133565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6131a7601b83612153565b91506131b282613173565b602082019050919050565b5f6020820190508181035f8301526131d48161319b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208db8a0c12e981905ca6c36864884e1df9fa18be3503c3523bfd0080900c27ad064736f6c63430008140033

Deployed Bytecode Sourcemap

3598:8738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5760:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6593:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6037:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6762:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5946:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10887;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11965:348;;;;;;;;;;;;;:::i;:::-;;10978:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6140:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2679:148;;;;;;;;;;;;;:::i;:::-;;11154:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10583:196;;;;;;;;;;;;;:::i;:::-;;4614:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2465:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4677:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5851:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6267:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4740:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3985:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11317:400;;;;;;;;;;;;;:::i;:::-;;6442:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5760:83;5797:13;5830:5;;;;;;;;;;;;;;;;;5823:12;;5760:83;:::o;6593:161::-;6668:4;6685:39;6694:12;:10;:12::i;:::-;6708:7;6717:6;6685:8;:39::i;:::-;6742:4;6735:11;;6593:161;;;;:::o;6037:95::-;6090:7;4431:2;4488;:13;;;;:::i;:::-;4475:10;:26;;;;:::i;:::-;6110:14;;6037:95;:::o;6762:313::-;6860:4;6877:36;6887:6;6895:9;6906:6;6877:9;:36::i;:::-;6924:121;6933:6;6941:12;:10;:12::i;:::-;6955:89;6993:6;6955:89;;;;;;;;;;;;;;;;;:11;:19;6967:6;6955:19;;;;;;;;;;;;;;;:33;6975:12;:10;:12::i;:::-;6955:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6924:8;:121::i;:::-;7063:4;7056:11;;6762:313;;;;;:::o;5946:83::-;5987:5;4431:2;6005:16;;5946:83;:::o;10887:::-;10934:4;10955;:7;10960:1;10955:7;;;;;;;;;;;;;;;;;;;;;;;;;10948:14;;10887:83;;;:::o;11965:348::-;12029:10;;;;;;;;;;;12015:24;;:12;:10;:12::i;:::-;:24;;;12007:33;;;;;;12051:20;12072:24;12090:4;12072:9;:24::i;:::-;12051:45;;12123:1;12110:12;:14;12107:73;;;12138:30;12155:12;12138:16;:30::i;:::-;12107:73;12190:18;12209:21;12190:40;;12255:1;12244:10;:12;12241:65;;;12270:24;12283:10;12270:12;:24::i;:::-;12241:65;11996:317;;11965:348::o;10978:168::-;2602:12;:10;:12::i;:::-;2592:22;;:6;;;;;;;;;;:22;;;2584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11056:6:::1;11051:88;11072:5;:12;11068:1;:16;11051:88;;;11123:4;11106;:14;11111:5;11117:1;11111:8;;;;;;;;:::i;:::-;;;;;;;;11106:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11086:3;;;;;:::i;:::-;;;;11051:88;;;;10978:168:::0;:::o;6140:119::-;6206:7;6233:9;:18;6243:7;6233:18;;;;;;;;;;;;;;;;6226:25;;6140:119;;;:::o;2679:148::-;2602:12;:10;:12::i;:::-;2592:22;;:6;;;;;;;;;;:22;;;2584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2786:1:::1;2749:40;;2770:6;::::0;::::1;;;;;;;;2749:40;;;;;;;;;;;;2817:1;2800:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2679:148::o:0;11154:155::-;2602:12;:10;:12::i;:::-;2592:22;;:6;;;;;;;;;;:22;;;2584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11255:10:::1;11242:12;:23;;;;11290:11;11276:13;:25;;;;11154:155:::0;;:::o;10583:196::-;2602:12;:10;:12::i;:::-;2592:22;;:6;;;;;;;;;;:22;;;2584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4431:2:::1;4488;:13;;;;:::i;:::-;4475:10;:26;;;;:::i;:::-;10636:12;:22;;;;4431:2;4488;:13;;;;:::i;:::-;4475:10;:26;;;;:::i;:::-;10669:14;:22;;;;10723:5;10702:20;;:26;;;;;;;;;;;;;;;;;;10744:27;4431:2;4488;:13;;;;:::i;:::-;4475:10;:26;;;;:::i;:::-;10744:27;;;;;;:::i;:::-;;;;;;;;10583:196::o:0;4614:56::-;;;;:::o;2465:79::-;2503:7;2530:6;;;;;;;;;;;2523:13;;2465:79;:::o;4677:56::-;;;;:::o;5851:87::-;5890:13;5923:7;;;;;;;;;;;;;;;;;5916:14;;5851:87;:::o;6267:167::-;6345:4;6362:42;6372:12;:10;:12::i;:::-;6386:9;6397:6;6362:9;:42::i;:::-;6422:4;6415:11;;6267:167;;;;:::o;4740:55::-;;;;:::o;3985:40::-;;;;;;;;;;;;;:::o;11317:400::-;2602:12;:10;:12::i;:::-;2592:22;;:6;;;;;;;;;;:22;;;2584:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11381:11:::1;;;;;;;;;;;11380:12;11372:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11440:15;;;;;;;;;;;:31;;;11479:21;11510:4;11516:24;11534:4;11516:9;:24::i;:::-;11541:1;11543::::0;11545:7:::1;:5;:7::i;:::-;11553:15;11440:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11587:13;;;;;;;;;;;11580:29;;;11618:15;;;;;;;;;;;11636:14;11580:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11676:4;11662:11;;:18;;;;;;;;;;;;;;;;;;11705:4;11691:11;;:18;;;;;;;;;;;;;;;;;;11317:400::o:0;6442:143::-;6523:7;6550:11;:18;6562:5;6550:18;;;;;;;;;;;;;;;:27;6569:7;6550:27;;;;;;;;;;;;;;;;6543:34;;6442:143;;;;:::o;220:98::-;273:7;300:10;293:17;;220:98;:::o;7083:335::-;7193:1;7176:19;;:5;:19;;;7168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7274:1;7255:21;;:7;:21;;;7247:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7356:6;7326:11;:18;7338:5;7326:18;;;;;;;;;;;;;;;:27;7345:7;7326:27;;;;;;;;;;;;;;;:36;;;;7394:7;7378:32;;7387:5;7378:32;;;7403:6;7378:32;;;;;;:::i;:::-;;;;;;;;7083:335;;;:::o;7426:2478::-;7530:1;7514:18;;:4;:18;;;7506:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7607:1;7593:16;;:2;:16;;;7585:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7677:1;7668:6;:10;7660:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7735:17;7777:7;:5;:7::i;:::-;7769:15;;:4;:15;;;;:32;;;;;7794:7;:5;:7::i;:::-;7788:13;;:2;:13;;;;7769:32;7765:1783;;;7827:4;:10;7832:4;7827:10;;;;;;;;;;;;;;;;;;;;;;;;;7826:11;:24;;;;;7842:4;:8;7847:2;7842:8;;;;;;;;;;;;;;;;;;;;;;;;;7841:9;7826:24;7818:33;;;;;;7872:20;;;;;;;;;;;7868:346;;;7931:15;;;;;;;;;;;7917:30;;:2;:30;;;;:62;;;;;7965:13;;;;;;;;;;;7951:28;;:2;:28;;;;7917:62;7913:286;;;8052:12;8010:28;:39;8039:9;8010:39;;;;;;;;;;;;;;;;:54;8002:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8167:12;8125:28;:39;8154:9;8125:39;;;;;;;;;;;;;;;:54;;;;7913:286;7868:346;8242:13;;;;;;;;;;;8234:21;;:4;:21;;;:55;;;;;8273:15;;;;;;;;;;;8259:30;;:2;:30;;;;8234:55;:83;;;;;8295:18;:22;8314:2;8295:22;;;;;;;;;;;;;;;;;;;;;;;;;8293:24;8234:83;8230:428;;;8357:12;;8347:6;:22;;8339:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8452:14;;8442:6;8426:13;8436:2;8426:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8418:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8529:18;;8519:9;;:28;8516:97;;;8578:14;8589:2;8578:10;:14::i;:::-;8577:15;8569:24;;;;;;8516:97;8631:9;;:11;;;;;;;;;:::i;:::-;;;;;;8230:428;8688:76;8760:3;8688:67;8710:15;;8700:9;;:25;8699:55;;8740:14;;8699:55;;;8727:12;;8699:55;8688:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8676:88;;8788:13;;;;;;;;;;;8782:19;;:2;:19;;;:43;;;;;8820:4;8805:20;;:4;:20;;;;8782:43;8779:253;;;8864:12;;8854:6;:22;;8846:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8937:79;9012:3;8937:70;8959:16;;8949:9;;:26;8948:58;;8991:15;;8948:58;;;8977:13;;8948:58;8937:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8925:91;;8779:253;9048:28;9079:24;9097:4;9079:9;:24::i;:::-;9048:55;;9123:6;;;;;;;;;;;9122:7;:30;;;;;9139:13;;;;;;;;;;;9133:19;;:2;:19;;;9122:30;:45;;;;;9156:11;;;;;;;;;;;9122:45;:87;;;;;9192:17;;9171:20;:38;9122:87;:119;;;;;9223:18;;9213:9;;:28;9122:119;9118:419;;;9262:67;9279:49;9283:23;9302:3;9283:14;9295:1;4431:2;4488;:13;;;;:::i;:::-;4475:10;:26;;;;:::i;:::-;9283:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;9307:20;9279:3;:49::i;:::-;9262:16;:67::i;:::-;9348:26;9377:21;9348:50;;9441:1;9420:18;:22;9417:105;;;9467:35;9480:21;9467:12;:35::i;:::-;9417:105;9243:294;9118:419;7803:1745;7765:1783;9573:1;9563:9;:11;9560:161;;;9613:39;9642:9;9613;:24;9631:4;9613:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9588:9;:24;9606:4;9588:24;;;;;;;;;;;;;;;:64;;;;9693:4;9670:39;;9679:4;9670:39;;;9699:9;9670:39;;;;;;:::i;:::-;;;;;;;;9560:161;9747:27;9767:6;9747:9;:15;9757:4;9747:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9731:9;:15;9741:4;9731:15;;;;;;;;;;;;;;;:43;;;;9799:40;9817:21;9828:9;9817:6;:10;;:21;;;;:::i;:::-;9799:9;:13;9809:2;9799:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9785:9;:13;9795:2;9785:13;;;;;;;;;;;;;;;:54;;;;9870:2;9855:41;;9864:4;9855:41;;;9874:21;9885:9;9874:6;:10;;:21;;;;:::i;:::-;9855:41;;;;;;:::i;:::-;;;;;;;;7495:2409;7426:2478;;;:::o;1357:190::-;1443:7;1476:1;1471;:6;;1479:12;1463:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1503:9;1519:1;1515;:5;;;;:::i;:::-;1503:17;;1538:1;1531:8;;;1357:190;;;;;:::o;10020:555::-;5086:4;5077:6;;:13;;;;;;;;;;;;;;;;;;10114:1:::1;10101:11;:14:::0;10098:27;10117:7:::1;10098:27;10139:11;;;;;;;;;;;10135:25:::0;10152:7:::1;10135:25;10170:21;10208:1;10194:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10170:40;;10239:4;10221;10226:1;10221:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10265:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10255:4;10260:1;10255:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10298:62;10315:4;10330:15;;;;;;;;;;;10348:11;10298:8;:62::i;:::-;10371:15;;;;;;;;;;;:66;;;10452:11;10478:1;10494:4;10521;10541:15;10371:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10087:488;5101:1;5122:5:::0;5113:6;;:14;;;;;;;;;;;;;;;;;;10020:555;:::o;10787:92::-;10844:10;;;;;;;;;;;:19;;:27;10864:6;10844:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10787:92;:::o;11762:195::-;11821:4;11838:12;11905:7;11893:20;11885:28;;11948:1;11941:4;:8;11934:15;;;11762:195;;;:::o;1555:246::-;1613:7;1642:1;1637;:6;1633:47;;1667:1;1660:8;;;;1633:47;1690:9;1706:1;1702;:5;;;;:::i;:::-;1690:17;;1735:1;1730;1726;:5;;;;:::i;:::-;:10;1718:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1792:1;1785:8;;;1555:246;;;;;:::o;1809:132::-;1867:7;1894:39;1898:1;1901;1894:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1887:46;;1809:132;;;;:::o;9914:98::-;9971:7;9998:1;9996;:3;9995:9;;10003:1;9995:9;;;10001:1;9995:9;9988:16;;9914:98;;;;:::o;1026:179::-;1084:7;1104:9;1120:1;1116;:5;;;;:::i;:::-;1104:17;;1145:1;1140;:6;;1132:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1196:1;1189:8;;;1026:179;;;;:::o;1213:136::-;1271:7;1298:43;1302:1;1305;1298:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1291:50;;1213:136;;;;:::o;1949:189::-;2035:7;2067:1;2063;:5;2070:12;2055:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2094:9;2110:1;2106;:5;;;;:::i;:::-;2094:17;;2129:1;2122:8;;;1949: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:117::-;5297:1;5294;5287:12;5311:180;5359:77;5356:1;5349:88;5456:4;5453:1;5446:15;5480:4;5477:1;5470:15;5497:281;5580:27;5602:4;5580:27;:::i;:::-;5572:6;5568:40;5710:6;5698:10;5695:22;5674:18;5662:10;5659:34;5656:62;5653:88;;;5721:18;;:::i;:::-;5653:88;5761:10;5757:2;5750:22;5540:238;5497:281;;:::o;5784:129::-;5818:6;5845:20;;:::i;:::-;5835:30;;5874:33;5902:4;5894:6;5874:33;:::i;:::-;5784:129;;;:::o;5919:311::-;5996:4;6086:18;6078:6;6075:30;6072:56;;;6108:18;;:::i;:::-;6072:56;6158:4;6150:6;6146:17;6138:25;;6218:4;6212;6208:15;6200:23;;5919:311;;;:::o;6236:117::-;6345:1;6342;6335:12;6376:710;6472:5;6497:81;6513:64;6570:6;6513:64;:::i;:::-;6497:81;:::i;:::-;6488:90;;6598:5;6627:6;6620:5;6613:21;6661:4;6654:5;6650:16;6643:23;;6714:4;6706:6;6702:17;6694:6;6690:30;6743:3;6735:6;6732:15;6729:122;;;6762:79;;:::i;:::-;6729:122;6877:6;6860:220;6894:6;6889:3;6886:15;6860:220;;;6969:3;6998:37;7031:3;7019:10;6998:37;:::i;:::-;6993:3;6986:50;7065:4;7060:3;7056:14;7049:21;;6936:144;6920:4;6915:3;6911:14;6904:21;;6860:220;;;6864:21;6478:608;;6376:710;;;;;:::o;7109:370::-;7180:5;7229:3;7222:4;7214:6;7210:17;7206:27;7196:122;;7237:79;;:::i;:::-;7196:122;7354:6;7341:20;7379:94;7469:3;7461:6;7454:4;7446:6;7442:17;7379:94;:::i;:::-;7370:103;;7186:293;7109:370;;;;:::o;7485:539::-;7569:6;7618:2;7606:9;7597:7;7593:23;7589:32;7586:119;;;7624:79;;:::i;:::-;7586:119;7772:1;7761:9;7757:17;7744:31;7802:18;7794:6;7791:30;7788:117;;;7824:79;;:::i;:::-;7788:117;7929:78;7999:7;7990:6;7979:9;7975:22;7929:78;:::i;:::-;7919:88;;7715:302;7485:539;;;;:::o;8030:474::-;8098:6;8106;8155:2;8143:9;8134:7;8130:23;8126:32;8123:119;;;8161:79;;:::i;:::-;8123:119;8281:1;8306:53;8351:7;8342:6;8331:9;8327:22;8306:53;:::i;:::-;8296:63;;8252:117;8408:2;8434:53;8479:7;8470:6;8459:9;8455:22;8434:53;:::i;:::-;8424:63;;8379:118;8030:474;;;;;:::o;8510:118::-;8597:24;8615:5;8597:24;:::i;:::-;8592:3;8585:37;8510:118;;:::o;8634:222::-;8727:4;8765:2;8754:9;8750:18;8742:26;;8778:71;8846:1;8835:9;8831:17;8822:6;8778:71;:::i;:::-;8634:222;;;;:::o;8862:474::-;8930:6;8938;8987:2;8975:9;8966:7;8962:23;8958:32;8955:119;;;8993:79;;:::i;:::-;8955:119;9113:1;9138:53;9183:7;9174:6;9163:9;9159:22;9138:53;:::i;:::-;9128:63;;9084:117;9240:2;9266:53;9311:7;9302:6;9291:9;9287:22;9266:53;:::i;:::-;9256:63;;9211:118;8862:474;;;;;:::o;9342:180::-;9390:77;9387:1;9380:88;9487:4;9484:1;9477:15;9511:4;9508:1;9501:15;9528:102;9570:8;9617:5;9614:1;9610:13;9589:34;;9528:102;;;:::o;9636:848::-;9697:5;9704:4;9728:6;9719:15;;9752:5;9743:14;;9766:712;9787:1;9777:8;9774:15;9766:712;;;9882:4;9877:3;9873:14;9867:4;9864:24;9861:50;;;9891:18;;:::i;:::-;9861:50;9941:1;9931:8;9927:16;9924:451;;;10356:4;10349:5;10345:16;10336:25;;9924:451;10406:4;10400;10396:15;10388:23;;10436:32;10459:8;10436:32;:::i;:::-;10424:44;;9766:712;;;9636:848;;;;;;;:::o;10490:1073::-;10544:5;10735:8;10725:40;;10756:1;10747:10;;10758:5;;10725:40;10784:4;10774:36;;10801:1;10792:10;;10803:5;;10774:36;10870:4;10918:1;10913:27;;;;10954:1;10949:191;;;;10863:277;;10913:27;10931:1;10922:10;;10933:5;;;10949:191;10994:3;10984:8;10981:17;10978:43;;;11001:18;;:::i;:::-;10978:43;11050:8;11047:1;11043:16;11034:25;;11085:3;11078:5;11075:14;11072:40;;;11092:18;;:::i;:::-;11072:40;11125:5;;;10863:277;;11249:2;11239:8;11236:16;11230:3;11224:4;11221:13;11217:36;11199:2;11189:8;11186:16;11181:2;11175:4;11172:12;11168:35;11152:111;11149:246;;;11305:8;11299:4;11295:19;11286:28;;11340:3;11333:5;11330:14;11327:40;;;11347:18;;:::i;:::-;11327:40;11380:5;;11149:246;11420:42;11458:3;11448:8;11442:4;11439:1;11420:42;:::i;:::-;11405:57;;;;11494:4;11489:3;11485:14;11478:5;11475:25;11472:51;;;11503:18;;:::i;:::-;11472:51;11552:4;11545:5;11541:16;11532:25;;10490:1073;;;;;;:::o;11569:281::-;11627:5;11651:23;11669:4;11651:23;:::i;:::-;11643:31;;11695:25;11711:8;11695:25;:::i;:::-;11683:37;;11739:104;11776:66;11766:8;11760:4;11739:104;:::i;:::-;11730:113;;11569:281;;;;:::o;11856:410::-;11896:7;11919:20;11937:1;11919:20;:::i;:::-;11914:25;;11953:20;11971:1;11953:20;:::i;:::-;11948:25;;12008:1;12005;12001:9;12030:30;12048:11;12030:30;:::i;:::-;12019:41;;12209:1;12200:7;12196:15;12193:1;12190:22;12170:1;12163:9;12143:83;12120:139;;12239:18;;:::i;:::-;12120:139;11904:362;11856:410;;;;:::o;12272:182::-;12412:34;12408:1;12400:6;12396:14;12389:58;12272:182;:::o;12460:366::-;12602:3;12623:67;12687:2;12682:3;12623:67;:::i;:::-;12616:74;;12699:93;12788:3;12699:93;:::i;:::-;12817:2;12812:3;12808:12;12801:19;;12460:366;;;:::o;12832:419::-;12998:4;13036:2;13025:9;13021:18;13013:26;;13085:9;13079:4;13075:20;13071:1;13060:9;13056:17;13049:47;13113:131;13239:4;13113:131;:::i;:::-;13105:139;;12832:419;;;:::o;13257:180::-;13305:77;13302:1;13295:88;13402:4;13399:1;13392:15;13426:4;13423:1;13416:15;13443:233;13482:3;13505:24;13523:5;13505:24;:::i;:::-;13496:33;;13551:66;13544:5;13541:77;13538:103;;13621:18;;:::i;:::-;13538:103;13668:1;13661:5;13657:13;13650:20;;13443:233;;;:::o;13682:173::-;13822:25;13818:1;13810:6;13806:14;13799:49;13682:173;:::o;13861:366::-;14003:3;14024:67;14088:2;14083:3;14024:67;:::i;:::-;14017:74;;14100:93;14189:3;14100:93;:::i;:::-;14218:2;14213:3;14209:12;14202:19;;13861:366;;;:::o;14233:419::-;14399:4;14437:2;14426:9;14422:18;14414:26;;14486:9;14480:4;14476:20;14472:1;14461:9;14457:17;14450:47;14514:131;14640:4;14514:131;:::i;:::-;14506:139;;14233:419;;;:::o;14658:85::-;14703:7;14732:5;14721:16;;14658:85;;;:::o;14749:60::-;14777:3;14798:5;14791:12;;14749:60;;;:::o;14815:158::-;14873:9;14906:61;14924:42;14933:32;14959:5;14933:32;:::i;:::-;14924:42;:::i;:::-;14906:61;:::i;:::-;14893:74;;14815:158;;;:::o;14979:147::-;15074:45;15113:5;15074:45;:::i;:::-;15069:3;15062:58;14979:147;;:::o;15132:807::-;15381:4;15419:3;15408:9;15404:19;15396:27;;15433:71;15501:1;15490:9;15486:17;15477:6;15433:71;:::i;:::-;15514:72;15582:2;15571:9;15567:18;15558:6;15514:72;:::i;:::-;15596:80;15672:2;15661:9;15657:18;15648:6;15596:80;:::i;:::-;15686;15762:2;15751:9;15747:18;15738:6;15686:80;:::i;:::-;15776:73;15844:3;15833:9;15829:19;15820:6;15776:73;:::i;:::-;15859;15927:3;15916:9;15912:19;15903:6;15859:73;:::i;:::-;15132:807;;;;;;;;;:::o;15945:143::-;16002:5;16033:6;16027:13;16018:22;;16049:33;16076:5;16049:33;:::i;:::-;15945:143;;;;:::o;16094:663::-;16182:6;16190;16198;16247:2;16235:9;16226:7;16222:23;16218:32;16215:119;;;16253:79;;:::i;:::-;16215:119;16373:1;16398:64;16454:7;16445:6;16434:9;16430:22;16398:64;:::i;:::-;16388:74;;16344:128;16511:2;16537:64;16593:7;16584:6;16573:9;16569:22;16537:64;:::i;:::-;16527:74;;16482:129;16650:2;16676:64;16732:7;16723:6;16712:9;16708:22;16676:64;:::i;:::-;16666:74;;16621:129;16094:663;;;;;:::o;16763:332::-;16884:4;16922:2;16911:9;16907:18;16899:26;;16935:71;17003:1;16992:9;16988:17;16979:6;16935:71;:::i;:::-;17016:72;17084:2;17073:9;17069:18;17060:6;17016:72;:::i;:::-;16763:332;;;;;:::o;17101:116::-;17171:21;17186:5;17171:21;:::i;:::-;17164:5;17161:32;17151:60;;17207:1;17204;17197:12;17151:60;17101:116;:::o;17223:137::-;17277:5;17308:6;17302:13;17293:22;;17324:30;17348:5;17324:30;:::i;:::-;17223:137;;;;:::o;17366:345::-;17433:6;17482:2;17470:9;17461:7;17457:23;17453:32;17450:119;;;17488:79;;:::i;:::-;17450:119;17608:1;17633:61;17686:7;17677:6;17666:9;17662:22;17633:61;:::i;:::-;17623:71;;17579:125;17366:345;;;;:::o;17717:223::-;17857:34;17853:1;17845:6;17841:14;17834:58;17926:6;17921:2;17913:6;17909:15;17902:31;17717:223;:::o;17946:366::-;18088:3;18109:67;18173:2;18168:3;18109:67;:::i;:::-;18102:74;;18185:93;18274:3;18185:93;:::i;:::-;18303:2;18298:3;18294:12;18287:19;;17946:366;;;:::o;18318:419::-;18484:4;18522:2;18511:9;18507:18;18499:26;;18571:9;18565:4;18561:20;18557:1;18546:9;18542:17;18535:47;18599:131;18725:4;18599:131;:::i;:::-;18591:139;;18318:419;;;:::o;18743:221::-;18883:34;18879:1;18871:6;18867:14;18860:58;18952:4;18947:2;18939:6;18935:15;18928:29;18743:221;:::o;18970:366::-;19112:3;19133:67;19197:2;19192:3;19133:67;:::i;:::-;19126:74;;19209:93;19298:3;19209:93;:::i;:::-;19327:2;19322:3;19318:12;19311:19;;18970:366;;;:::o;19342:419::-;19508:4;19546:2;19535:9;19531:18;19523:26;;19595:9;19589:4;19585:20;19581:1;19570:9;19566:17;19559:47;19623:131;19749:4;19623:131;:::i;:::-;19615:139;;19342:419;;;:::o;19767:224::-;19907:34;19903:1;19895:6;19891:14;19884:58;19976:7;19971:2;19963:6;19959:15;19952:32;19767:224;:::o;19997:366::-;20139:3;20160:67;20224:2;20219:3;20160:67;:::i;:::-;20153:74;;20236:93;20325:3;20236:93;:::i;:::-;20354:2;20349:3;20345:12;20338:19;;19997:366;;;:::o;20369:419::-;20535:4;20573:2;20562:9;20558:18;20550:26;;20622:9;20616:4;20612:20;20608:1;20597:9;20593:17;20586:47;20650:131;20776:4;20650:131;:::i;:::-;20642:139;;20369:419;;;:::o;20794:222::-;20934:34;20930:1;20922:6;20918:14;20911:58;21003:5;20998:2;20990:6;20986:15;20979:30;20794:222;:::o;21022:366::-;21164:3;21185:67;21249:2;21244:3;21185:67;:::i;:::-;21178:74;;21261:93;21350:3;21261:93;:::i;:::-;21379:2;21374:3;21370:12;21363:19;;21022:366;;;:::o;21394:419::-;21560:4;21598:2;21587:9;21583:18;21575:26;;21647:9;21641:4;21637:20;21633:1;21622:9;21618:17;21611:47;21675:131;21801:4;21675:131;:::i;:::-;21667:139;;21394:419;;;:::o;21819:228::-;21959:34;21955:1;21947:6;21943:14;21936:58;22028:11;22023:2;22015:6;22011:15;22004:36;21819:228;:::o;22053:366::-;22195:3;22216:67;22280:2;22275:3;22216:67;:::i;:::-;22209:74;;22292:93;22381:3;22292:93;:::i;:::-;22410:2;22405:3;22401:12;22394:19;;22053:366;;;:::o;22425:419::-;22591:4;22629:2;22618:9;22614:18;22606:26;;22678:9;22672:4;22668:20;22664:1;22653:9;22649:17;22642:47;22706:131;22832:4;22706:131;:::i;:::-;22698:139;;22425:419;;;:::o;22850:223::-;22990:34;22986:1;22978:6;22974:14;22967:58;23059:6;23054:2;23046:6;23042:15;23035:31;22850:223;:::o;23079:366::-;23221:3;23242:67;23306:2;23301:3;23242:67;:::i;:::-;23235:74;;23318:93;23407:3;23318:93;:::i;:::-;23436:2;23431:3;23427:12;23420:19;;23079:366;;;:::o;23451:419::-;23617:4;23655:2;23644:9;23640:18;23632:26;;23704:9;23698:4;23694:20;23690:1;23679:9;23675:17;23668:47;23732:131;23858:4;23732:131;:::i;:::-;23724:139;;23451:419;;;:::o;23876:175::-;24016:27;24012:1;24004:6;24000:14;23993:51;23876:175;:::o;24057:366::-;24199:3;24220:67;24284:2;24279:3;24220:67;:::i;:::-;24213:74;;24296:93;24385:3;24296:93;:::i;:::-;24414:2;24409:3;24405:12;24398:19;;24057:366;;;:::o;24429:419::-;24595:4;24633:2;24622:9;24618:18;24610:26;;24682:9;24676:4;24672:20;24668:1;24657:9;24653:17;24646:47;24710:131;24836:4;24710:131;:::i;:::-;24702:139;;24429:419;;;:::o;24854:191::-;24894:3;24913:20;24931:1;24913:20;:::i;:::-;24908:25;;24947:20;24965:1;24947:20;:::i;:::-;24942:25;;24990:1;24987;24983:9;24976:16;;25011:3;25008:1;25005:10;25002:36;;;25018:18;;:::i;:::-;25002:36;24854:191;;;;:::o;25051:176::-;25191:28;25187:1;25179:6;25175:14;25168:52;25051:176;:::o;25233:366::-;25375:3;25396:67;25460:2;25455:3;25396:67;:::i;:::-;25389:74;;25472:93;25561:3;25472:93;:::i;:::-;25590:2;25585:3;25581:12;25574:19;;25233:366;;;:::o;25605:419::-;25771:4;25809:2;25798:9;25794:18;25786:26;;25858:9;25852:4;25848:20;25844:1;25833:9;25829:17;25822:47;25886:131;26012:4;25886:131;:::i;:::-;25878:139;;25605:419;;;:::o;26030:194::-;26070:4;26090:20;26108:1;26090:20;:::i;:::-;26085:25;;26124:20;26142:1;26124:20;:::i;:::-;26119:25;;26168:1;26165;26161:9;26153:17;;26192:1;26186:4;26183:11;26180:37;;;26197:18;;:::i;:::-;26180:37;26030:194;;;;:::o;26230:143::-;26287:5;26318:6;26312:13;26303:22;;26334:33;26361:5;26334:33;:::i;:::-;26230:143;;;;:::o;26379:351::-;26449:6;26498:2;26486:9;26477:7;26473:23;26469:32;26466:119;;;26504:79;;:::i;:::-;26466:119;26624:1;26649:64;26705:7;26696:6;26685:9;26681:22;26649:64;:::i;:::-;26639:74;;26595:128;26379:351;;;;:::o;26736:114::-;26803:6;26837:5;26831:12;26821:22;;26736:114;;;:::o;26856:184::-;26955:11;26989:6;26984:3;26977:19;27029:4;27024:3;27020:14;27005:29;;26856:184;;;;:::o;27046:132::-;27113:4;27136:3;27128:11;;27166:4;27161:3;27157:14;27149:22;;27046:132;;;:::o;27184:108::-;27261:24;27279:5;27261:24;:::i;:::-;27256:3;27249:37;27184:108;;:::o;27298:179::-;27367:10;27388:46;27430:3;27422:6;27388:46;:::i;:::-;27466:4;27461:3;27457:14;27443:28;;27298:179;;;;:::o;27483:113::-;27553:4;27585;27580:3;27576:14;27568:22;;27483:113;;;:::o;27632:732::-;27751:3;27780:54;27828:5;27780:54;:::i;:::-;27850:86;27929:6;27924:3;27850:86;:::i;:::-;27843:93;;27960:56;28010:5;27960:56;:::i;:::-;28039:7;28070:1;28055:284;28080:6;28077:1;28074:13;28055:284;;;28156:6;28150:13;28183:63;28242:3;28227:13;28183:63;:::i;:::-;28176:70;;28269:60;28322:6;28269:60;:::i;:::-;28259:70;;28115:224;28102:1;28099;28095:9;28090:14;;28055:284;;;28059:14;28355:3;28348:10;;27756:608;;;27632:732;;;;:::o;28370:831::-;28633:4;28671:3;28660:9;28656:19;28648:27;;28685:71;28753:1;28742:9;28738:17;28729:6;28685:71;:::i;:::-;28766:80;28842:2;28831:9;28827:18;28818:6;28766:80;:::i;:::-;28893:9;28887:4;28883:20;28878:2;28867:9;28863:18;28856:48;28921:108;29024:4;29015:6;28921:108;:::i;:::-;28913:116;;29039:72;29107:2;29096:9;29092:18;29083:6;29039:72;:::i;:::-;29121:73;29189:3;29178:9;29174:19;29165:6;29121:73;:::i;:::-;28370:831;;;;;;;;:::o;29207:180::-;29255:77;29252:1;29245:88;29352:4;29349:1;29342:15;29376:4;29373:1;29366:15;29393:185;29433:1;29450:20;29468:1;29450:20;:::i;:::-;29445:25;;29484:20;29502:1;29484:20;:::i;:::-;29479:25;;29523:1;29513:35;;29528:18;;:::i;:::-;29513:35;29570:1;29567;29563:9;29558:14;;29393:185;;;;:::o;29584:220::-;29724:34;29720:1;29712:6;29708:14;29701:58;29793:3;29788:2;29780:6;29776:15;29769:28;29584:220;:::o;29810:366::-;29952:3;29973:67;30037:2;30032:3;29973:67;:::i;:::-;29966:74;;30049:93;30138:3;30049:93;:::i;:::-;30167:2;30162:3;30158:12;30151:19;;29810:366;;;:::o;30182:419::-;30348:4;30386:2;30375:9;30371:18;30363:26;;30435:9;30429:4;30425:20;30421:1;30410:9;30406:17;30399:47;30463:131;30589:4;30463:131;:::i;:::-;30455:139;;30182:419;;;:::o;30607:177::-;30747:29;30743:1;30735:6;30731:14;30724:53;30607:177;:::o;30790:366::-;30932:3;30953:67;31017:2;31012:3;30953:67;:::i;:::-;30946:74;;31029:93;31118:3;31029:93;:::i;:::-;31147:2;31142:3;31138:12;31131:19;;30790:366;;;:::o;31162:419::-;31328:4;31366:2;31355:9;31351:18;31343:26;;31415:9;31409:4;31405:20;31401:1;31390:9;31386:17;31379:47;31443:131;31569:4;31443:131;:::i;:::-;31435:139;;31162:419;;;:::o

Swarm Source

ipfs://8db8a0c12e981905ca6c36864884e1df9fa18be3503c3523bfd0080900c27ad0
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.