ETH Price: $3,805.51 (+4.84%)
Gas: 30.6 Gwei

Token

Neuralink (NEURALINK)
 

Overview

Max Total Supply

1,000,000 NEURALINK

Holders

1,275

Market

Price

$0.35 @ 0.000093 ETH (-0.85%)

Onchain Market Cap

$352,405.05

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
160.208298944034827707 NEURALINK

Value
$56.46 ( ~0.0148363819304961 Eth) [0.0160%]
0xe8458752f2da5bc80c5fdb65a0d89aa6bd514298
Loading...
Loading
Loading...
Loading
Loading...
Loading

Market

Volume (24H):$2,005.93
Market Capitalization:$0.00
Circulating Supply:0.00 NEURALINK
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Neuralink

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-25
*/

// SPDX-License-Identifier: MIT
//https://t.me/NeuralinkPortal
pragma solidity 0.8.16;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return (true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {

    address internal owner;

    constructor(address _owner) {owner = _owner;}

    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}

    function isOwner(address account) public view returns (bool) {return account == owner;}

    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}

    function renounceOwnership() public onlyOwner {owner = 0x000000000000000000000000000000000000dEaD; emit OwnershipTransferred(0x000000000000000000000000000000000000dEaD);}

    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract Neuralink is IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Neuralink";
    string private constant _symbol = "NEURALINK";

    uint8 private constant _decimals = 18;

    uint256 private _totalSupply = 1000000 * (10 ** _decimals);

    uint256 private _maxTxAmountPercent = 2; 
    uint256 private _maxTransferPercent = 2;
    uint256 private _maxWalletPercent = 2;


    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcludedFromFees;

    IRouter router;
    address public pair;

    bool private tradingOpen = true;

    uint256 private liqFee = 0;
    uint256 private devFee = 20;
    uint256 private totalFee = 20;
    uint256 private sellFee = 70;
    uint256 private transferFee = 100;
    uint256 private denominator = 100;


    bool private contractSwapEnabled = true;

    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 3;

    uint256 private swapThreshold = ( _totalSupply * 2000 ) / 100000; //2%
    uint256 private minSwapTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public devWallet = 0xD5fce3152212136F5393283c53564FBae2B6Bdc6; 

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    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 getOwner() external view override returns (address) { 
        
    return owner; 
    
    }

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

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

    function allowance(address owner, address spender) public view override returns (uint256) {

        return _allowances[owner][spender];
        
    }

    function isCont(address addr) internal view returns (bool) {
        uint size; assembly { size := extcodesize(addr) 
    } 
    return size > 0; 
    
    }

    function excludeFromFees(address _address, bool _enabled) external onlyOwner {
        isExcludedFromFees[_address] = _enabled;
        
    }

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

    function totalSupply() public view override returns (uint256) {
        
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
        
    }

    function _maxWalletToken() public view returns (uint256) {
        return totalSupply() * _maxWalletPercent / denominator;
        
    }

    function _maxTxAmount() public view returns (uint256) {
        return totalSupply() * _maxTxAmountPercent / denominator;
    }

    function _maxTransferAmount() public view returns (uint256) {
        return totalSupply() * _maxTransferPercent / denominator;
    }

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }


    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkIfTradingIsAllowed(sender, recipient);
        checkMaxWalletLimit(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function updateFees(uint256 _liq, uint256 _dev, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liqFee = _liq;
        devFee = _dev;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
    
    }

    function updateLimits(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
       
       
    }
 
    function updateDevWallet(address newDevWallet) external onlyOwner{
        	devWallet = newDevWallet;

    }


   

    function removeLimits() external onlyOwner {
        _maxTxAmountPercent = totalSupply();
        _maxTransferPercent = totalSupply();
        _maxWalletPercent = totalSupply();
    }

    function commenceTrade() external onlyOwner {
        tradingOpen = true;
        
        }


    function checkIfTradingIsAllowed(address sender, address recipient) internal view {
        if(!isExcludedFromFees[sender] && !isExcludedFromFees[recipient]){require(tradingOpen, "tradingAllowed");}
    }
    
    function checkMaxWalletLimit(address sender, address recipient, uint256 amount) internal view {
        if(!isExcludedFromFees[sender] && !isExcludedFromFees[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isExcludedFromFees[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isExcludedFromFees[sender] || isExcludedFromFees[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isExcludedFromFees[sender] || isExcludedFromFees[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {

        uint256 _denominator = (liqFee.add(1).add(devFee)).mul(2);

        uint256 tokensToAddLiquidityWith = tokens.mul(liqFee).div(_denominator);

        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;

        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liqFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liqFee);

        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 remainingBalance = address(this).balance;

        if(remainingBalance > uint256(0)){payable(devWallet).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            devWallet,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        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);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minSwapTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && contractSwapEnabled && tradingOpen && aboveMin && !isExcludedFromFees[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function updateSwapTrheshold(uint256 _newSwapTreshold) external onlyOwner{
        swapThreshold = _totalSupply.mul(_newSwapTreshold).div(uint256(100000)); 
    }


    function updateMinSwapTokensAmount(uint256 _newMinSwapTokensAtAmount) external onlyOwner{
        minSwapTokenAmount = _totalSupply.mul(_newMinSwapTokensAtAmount).div(uint256(100000));
    }
    

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isExcludedFromFees[sender] && !isExcludedFromFees[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);} return amount;
    }

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"commenceTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liq","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinSwapTokensAtAmount","type":"uint256"}],"name":"updateMinSwapTokensAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapTreshold","type":"uint256"}],"name":"updateSwapTrheshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000682565b620f4240620000249190620006d3565b60015560028055600260035560026004556001600960146101000a81548160ff0219169083151502179055506000600a556014600b556014600c556046600d556064600e556064600f556001601060006101000a81548160ff0219169083151502179055506003601355620186a06107d0600154620000a49190620006d3565b620000b0919062000763565b601455620186a0600a600154620000c89190620006d3565b620000d4919062000763565b60155573d5fce3152212136f5393283c53564fbae2b6bdc6601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200013957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000209919062000805565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000271573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000297919062000805565b6040518363ffffffff1660e01b8152600401620002b692919062000848565b6020604051808303816000875af1158015620002d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fc919062000805565b905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620004d8919062000886565b60405180910390a35050620008a3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000576578086048111156200054e576200054d620004e8565b5b60018516156200055e5780820291505b80810290506200056e8562000517565b94506200052e565b94509492505050565b60008262000591576001905062000664565b81620005a1576000905062000664565b8160018114620005ba5760028114620005c557620005fb565b600191505062000664565b60ff841115620005da57620005d9620004e8565b5b8360020a915084821115620005f457620005f3620004e8565b5b5062000664565b5060208310610133831016604e8410600b8410161715620006355782820a9050838111156200062f576200062e620004e8565b5b62000664565b62000644848484600162000524565b925090508184048111156200065e576200065d620004e8565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200068f826200066b565b91506200069c8362000675565b9250620006cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200057f565b905092915050565b6000620006e0826200066b565b9150620006ed836200066b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007295762000728620004e8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000770826200066b565b91506200077d836200066b565b92508262000790576200078f62000734565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007cd82620007a0565b9050919050565b620007df81620007c0565b8114620007eb57600080fd5b50565b600081519050620007ff81620007d4565b92915050565b6000602082840312156200081e576200081d6200079b565b5b60006200082e84828501620007ee565b91505092915050565b6200084281620007c0565b82525050565b60006040820190506200085f600083018562000837565b6200086e602083018462000837565b9392505050565b62000880816200066b565b82525050565b60006020820190506200089d600083018462000875565b92915050565b61339c80620008b36000396000f3fe6080604052600436106101a05760003560e01c806370a08231116100ec5780638ea5220f1161008a578063a9059cbb11610064578063a9059cbb1461059d578063c0246668146105da578063dd62ed3e14610603578063f2fde38b14610640576101a7565b80638ea5220f1461051c57806395d89b4114610547578063a8aa1b3114610572576101a7565b806378109e54116100c657806378109e54146104725780637d1db4a51461049d57806384a63000146104c8578063893d20e8146104f1576101a7565b806370a0823114610407578063715018a614610444578063751039fc1461045b576101a7565b80632acc38071161015957806336a0f8a51161013357806336a0f8a51461034f5780633b30322114610378578063457ffca2146103a15780634fbee193146103ca576101a7565b80632acc3807146102d05780632f54bf6e146102e7578063313ce56714610324576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd146102145780631816467f1461023f5780631f976b7e1461026857806323b872dd14610293576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce919061254d565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612608565b6106a6565b60405161020b9190612663565b60405180910390f35b34801561022057600080fd5b506102296106bd565b604051610236919061268d565b60405180910390f35b34801561024b57600080fd5b50610266600480360381019061026191906126a8565b6106fe565b005b34801561027457600080fd5b5061027d61078a565b60405161028a919061268d565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b591906126d5565b6107b3565b6040516102c79190612663565b60405180910390f35b3480156102dc57600080fd5b506102e561087e565b005b3480156102f357600080fd5b5061030e600480360381019061030991906126a8565b6108e3565b60405161031b9190612663565b60405180910390f35b34801561033057600080fd5b5061033961093c565b6040516103469190612744565b60405180910390f35b34801561035b57600080fd5b506103766004803603810190610371919061275f565b610945565b005b34801561038457600080fd5b5061039f600480360381019061039a91906127b2565b6109a7565b005b3480156103ad57600080fd5b506103c860048036038101906103c391906127df565b610a22565b005b3480156103d657600080fd5b506103f160048036038101906103ec91906126a8565b610a94565b6040516103fe9190612663565b60405180910390f35b34801561041357600080fd5b5061042e600480360381019061042991906126a8565b610ab4565b60405161043b919061268d565b60405180910390f35b34801561045057600080fd5b50610459610afd565b005b34801561046757600080fd5b50610470610bc2565b005b34801561047e57600080fd5b50610487610c36565b604051610494919061268d565b60405180910390f35b3480156104a957600080fd5b506104b2610c5f565b6040516104bf919061268d565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea91906127b2565b610c88565b005b3480156104fd57600080fd5b50610506610d03565b6040516105139190612869565b60405180910390f35b34801561052857600080fd5b50610531610d2c565b60405161053e9190612869565b60405180910390f35b34801561055357600080fd5b5061055c610d52565b604051610569919061254d565b60405180910390f35b34801561057e57600080fd5b50610587610d8f565b6040516105949190612869565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612608565b610db5565b6040516105d19190612663565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc91906128b0565b610dcc565b005b34801561060f57600080fd5b5061062a600480360381019061062591906128f0565b610e6f565b604051610637919061268d565b60405180910390f35b34801561064c57600080fd5b506106676004803603810190610662919061296e565b610ef6565b005b60606040518060400160405280600981526020017f4e657572616c696e6b0000000000000000000000000000000000000000000000815250905090565b60006106b3338484610fb8565b6001905092915050565b60006106f96106cc6000610ab4565b6106eb6106da61dead610ab4565b60015461118190919063ffffffff16565b61118190919063ffffffff16565b905090565b610707336108e3565b610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073d906129e7565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600f5460035461079a6106bd565b6107a49190612a36565b6107ae9190612abf565b905090565b60006107c0848484611197565b610873843361086e8560405180606001604052806028815260200161333f60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113909092919063ffffffff16565b610fb8565b600190509392505050565b610887336108e3565b6108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd906129e7565b60405180910390fd5b6001600960146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b61094e336108e3565b61098d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610984906129e7565b60405180910390fd5b826002819055508160038190555080600481905550505050565b6109b0336108e3565b6109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e6906129e7565b60405180910390fd5b610a19620186a0610a0b836001546113e590919063ffffffff16565b6113fb90919063ffffffff16565b60158190555050565b610a2b336108e3565b610a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a61906129e7565b60405180910390fd5b84600a8190555083600b8190555082600c8190555081600d8190555080600e819055505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b06336108e3565b610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906129e7565b60405180910390fd5b61dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616361dead604051610bb89190612869565b60405180910390a1565b610bcb336108e3565b610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c01906129e7565b60405180910390fd5b610c126106bd565b600281905550610c206106bd565b600381905550610c2e6106bd565b600481905550565b6000600f54600454610c466106bd565b610c509190612a36565b610c5a9190612abf565b905090565b6000600f54600254610c6f6106bd565b610c799190612a36565b610c839190612abf565b905090565b610c91336108e3565b610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc7906129e7565b60405180910390fd5b610cfa620186a0610cec836001546113e590919063ffffffff16565b6113fb90919063ffffffff16565b60148190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600981526020017f4e455552414c494e4b0000000000000000000000000000000000000000000000815250905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dc2338484611197565b6001905092915050565b610dd5336108e3565b610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b906129e7565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610eff336108e3565b610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f35906129e7565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610fad9190612b4f565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90612bdc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90612c6e565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611174919061268d565b60405180910390a3505050565b6000818361118f9190612c8e565b905092915050565b6111a2838383611411565b6111ac8383611582565b6111b783838361167f565b6111c1838361185d565b6111cc838383611928565b6111d7838383611b67565b61122981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118190919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006112788484611b90565b611282578161128e565b61128d848484611c3e565b5b90506112e281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611382919061268d565b60405180910390a350505050565b60008383111582906113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf919061254d565b60405180910390fd5b5082840390509392505050565b600081836113f39190612a36565b905092915050565b600081836114099190612abf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790612d34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e690612dc6565b60405180910390fd5b60008111611532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152990612e58565b60405180910390fd5b61153b83610ab4565b81111561157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612eea565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116265750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561167b57600960149054906101000a900460ff1661167a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167190612f56565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117235750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561177d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117b7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611858576117c4610c36565b61181682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da590919063ffffffff16565b1115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90612fc2565b60405180910390fd5b5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156119045750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119245760016011600082825461191c9190612fe2565b925050819055505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a705761198561078a565b811115806119dc5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a305750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6690613062565b60405180910390fd5b5b611a78610c5f565b81111580611acf5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b235750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5990613062565b60405180910390fd5b505050565b611b72838383611dbb565b15611b8b57611b82601454611ef5565b60006011819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c365750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611c4b85856120ae565b1115611d9a576000611c83611c6086866120ae565b611c75600f54866113fb90919063ffffffff16565b6113e590919063ffffffff16565b9050611cd781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d77919061268d565b60405180910390a3611d92818461118190919063ffffffff16565b915050611d9e565b8190505b9392505050565b60008183611db39190612fe2565b905092915050565b60008060155483101590506000601454611dd430610ab4565b10159050601260009054906101000a900460ff16158015611e015750601060009054906101000a900460ff165b8015611e195750600960149054906101000a900460ff165b8015611e225750815b8015611e785750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ed15750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611ee1575060135460115410155b8015611eea5750805b925050509392505050565b6001601260006101000a81548160ff0219169083151502179055506000611f4f6002611f41600b54611f336001600a54611da590919063ffffffff16565b611da590919063ffffffff16565b6113e590919063ffffffff16565b90506000611f7a82611f6c600a54866113e590919063ffffffff16565b6113fb90919063ffffffff16565b90506000611f91828561118190919063ffffffff16565b90506000479050611fa18261217a565b6000611fb6824761118190919063ffffffff16565b90506000611fe1611fd2600a548861118190919063ffffffff16565b836113fb90919063ffffffff16565b90506000611ffa600a54836113e590919063ffffffff16565b905060008111156120105761200f86826123bd565b5b6000479050600081111561208857601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612086573d6000803e3d6000fd5b505b50505050505050506000601260006101000a81548160ff02191690831515021790555050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361210f57600d549050612174565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361216e57600c549050612174565b600e5490505b92915050565b6000600267ffffffffffffffff81111561219757612196613082565b5b6040519080825280602002602001820160405280156121c55781602001602082028036833780820191505090505b50905030816000815181106121dd576121dc6130b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a891906130f5565b816001815181106122bc576122bb6130b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061232330600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fb8565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161238795949392919061321b565b600060405180830381600087803b1580156123a157600080fd5b505af11580156123b5573d6000803e3d6000fd5b505050505050565b6123ea30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fb8565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161247396959493929190613275565b60606040518083038185885af1158015612491573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b691906132eb565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124f75780820151818401526020810190506124dc565b60008484015250505050565b6000601f19601f8301169050919050565b600061251f826124bd565b61252981856124c8565b93506125398185602086016124d9565b61254281612503565b840191505092915050565b600060208201905081810360008301526125678184612514565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259f82612574565b9050919050565b6125af81612594565b81146125ba57600080fd5b50565b6000813590506125cc816125a6565b92915050565b6000819050919050565b6125e5816125d2565b81146125f057600080fd5b50565b600081359050612602816125dc565b92915050565b6000806040838503121561261f5761261e61256f565b5b600061262d858286016125bd565b925050602061263e858286016125f3565b9150509250929050565b60008115159050919050565b61265d81612648565b82525050565b60006020820190506126786000830184612654565b92915050565b612687816125d2565b82525050565b60006020820190506126a2600083018461267e565b92915050565b6000602082840312156126be576126bd61256f565b5b60006126cc848285016125bd565b91505092915050565b6000806000606084860312156126ee576126ed61256f565b5b60006126fc868287016125bd565b935050602061270d868287016125bd565b925050604061271e868287016125f3565b9150509250925092565b600060ff82169050919050565b61273e81612728565b82525050565b60006020820190506127596000830184612735565b92915050565b6000806000606084860312156127785761277761256f565b5b6000612786868287016125f3565b9350506020612797868287016125f3565b92505060406127a8868287016125f3565b9150509250925092565b6000602082840312156127c8576127c761256f565b5b60006127d6848285016125f3565b91505092915050565b600080600080600060a086880312156127fb576127fa61256f565b5b6000612809888289016125f3565b955050602061281a888289016125f3565b945050604061282b888289016125f3565b935050606061283c888289016125f3565b925050608061284d888289016125f3565b9150509295509295909350565b61286381612594565b82525050565b600060208201905061287e600083018461285a565b92915050565b61288d81612648565b811461289857600080fd5b50565b6000813590506128aa81612884565b92915050565b600080604083850312156128c7576128c661256f565b5b60006128d5858286016125bd565b92505060206128e68582860161289b565b9150509250929050565b600080604083850312156129075761290661256f565b5b6000612915858286016125bd565b9250506020612926858286016125bd565b9150509250929050565b600061293b82612574565b9050919050565b61294b81612930565b811461295657600080fd5b50565b60008135905061296881612942565b92915050565b6000602082840312156129845761298361256f565b5b600061299284828501612959565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006129d16006836124c8565b91506129dc8261299b565b602082019050919050565b60006020820190508181036000830152612a00816129c4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a41826125d2565b9150612a4c836125d2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a8557612a84612a07565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aca826125d2565b9150612ad5836125d2565b925082612ae557612ae4612a90565b5b828204905092915050565b6000819050919050565b6000612b15612b10612b0b84612574565b612af0565b612574565b9050919050565b6000612b2782612afa565b9050919050565b6000612b3982612b1c565b9050919050565b612b4981612b2e565b82525050565b6000602082019050612b646000830184612b40565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bc66024836124c8565b9150612bd182612b6a565b604082019050919050565b60006020820190508181036000830152612bf581612bb9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c586022836124c8565b9150612c6382612bfc565b604082019050919050565b60006020820190508181036000830152612c8781612c4b565b9050919050565b6000612c99826125d2565b9150612ca4836125d2565b9250828203905081811115612cbc57612cbb612a07565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d1e6025836124c8565b9150612d2982612cc2565b604082019050919050565b60006020820190508181036000830152612d4d81612d11565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612db06023836124c8565b9150612dbb82612d54565b604082019050919050565b60006020820190508181036000830152612ddf81612da3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e426029836124c8565b9150612e4d82612de6565b604082019050919050565b60006020820190508181036000830152612e7181612e35565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612ed46031836124c8565b9150612edf82612e78565b604082019050919050565b60006020820190508181036000830152612f0381612ec7565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f40600e836124c8565b9150612f4b82612f0a565b602082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612fac601e836124c8565b9150612fb782612f76565b602082019050919050565b60006020820190508181036000830152612fdb81612f9f565b9050919050565b6000612fed826125d2565b9150612ff8836125d2565b92508282019050808211156130105761300f612a07565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061304c6011836124c8565b915061305782613016565b602082019050919050565b6000602082019050818103600083015261307b8161303f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130ef816125a6565b92915050565b60006020828403121561310b5761310a61256f565b5b6000613119848285016130e0565b91505092915050565b6000819050919050565b600061314761314261313d84613122565b612af0565b6125d2565b9050919050565b6131578161312c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61319281612594565b82525050565b60006131a48383613189565b60208301905092915050565b6000602082019050919050565b60006131c88261315d565b6131d28185613168565b93506131dd83613179565b8060005b8381101561320e5781516131f58882613198565b9750613200836131b0565b9250506001810190506131e1565b5085935050505092915050565b600060a082019050613230600083018861267e565b61323d602083018761314e565b818103604083015261324f81866131bd565b905061325e606083018561285a565b61326b608083018461267e565b9695505050505050565b600060c08201905061328a600083018961285a565b613297602083018861267e565b6132a4604083018761314e565b6132b1606083018661314e565b6132be608083018561285a565b6132cb60a083018461267e565b979650505050505050565b6000815190506132e5816125dc565b92915050565b6000806000606084860312156133045761330361256f565b5b6000613312868287016132d6565b9350506020613323868287016132d6565b9250506040613334868287016132d6565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122086e69e33be2407c86dd7806ea3b2ae1a3f49909ba70bee0cfcf013c9cf92127464736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c806370a08231116100ec5780638ea5220f1161008a578063a9059cbb11610064578063a9059cbb1461059d578063c0246668146105da578063dd62ed3e14610603578063f2fde38b14610640576101a7565b80638ea5220f1461051c57806395d89b4114610547578063a8aa1b3114610572576101a7565b806378109e54116100c657806378109e54146104725780637d1db4a51461049d57806384a63000146104c8578063893d20e8146104f1576101a7565b806370a0823114610407578063715018a614610444578063751039fc1461045b576101a7565b80632acc38071161015957806336a0f8a51161013357806336a0f8a51461034f5780633b30322114610378578063457ffca2146103a15780634fbee193146103ca576101a7565b80632acc3807146102d05780632f54bf6e146102e7578063313ce56714610324576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd146102145780631816467f1461023f5780631f976b7e1461026857806323b872dd14610293576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce919061254d565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612608565b6106a6565b60405161020b9190612663565b60405180910390f35b34801561022057600080fd5b506102296106bd565b604051610236919061268d565b60405180910390f35b34801561024b57600080fd5b50610266600480360381019061026191906126a8565b6106fe565b005b34801561027457600080fd5b5061027d61078a565b60405161028a919061268d565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b591906126d5565b6107b3565b6040516102c79190612663565b60405180910390f35b3480156102dc57600080fd5b506102e561087e565b005b3480156102f357600080fd5b5061030e600480360381019061030991906126a8565b6108e3565b60405161031b9190612663565b60405180910390f35b34801561033057600080fd5b5061033961093c565b6040516103469190612744565b60405180910390f35b34801561035b57600080fd5b506103766004803603810190610371919061275f565b610945565b005b34801561038457600080fd5b5061039f600480360381019061039a91906127b2565b6109a7565b005b3480156103ad57600080fd5b506103c860048036038101906103c391906127df565b610a22565b005b3480156103d657600080fd5b506103f160048036038101906103ec91906126a8565b610a94565b6040516103fe9190612663565b60405180910390f35b34801561041357600080fd5b5061042e600480360381019061042991906126a8565b610ab4565b60405161043b919061268d565b60405180910390f35b34801561045057600080fd5b50610459610afd565b005b34801561046757600080fd5b50610470610bc2565b005b34801561047e57600080fd5b50610487610c36565b604051610494919061268d565b60405180910390f35b3480156104a957600080fd5b506104b2610c5f565b6040516104bf919061268d565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea91906127b2565b610c88565b005b3480156104fd57600080fd5b50610506610d03565b6040516105139190612869565b60405180910390f35b34801561052857600080fd5b50610531610d2c565b60405161053e9190612869565b60405180910390f35b34801561055357600080fd5b5061055c610d52565b604051610569919061254d565b60405180910390f35b34801561057e57600080fd5b50610587610d8f565b6040516105949190612869565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612608565b610db5565b6040516105d19190612663565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc91906128b0565b610dcc565b005b34801561060f57600080fd5b5061062a600480360381019061062591906128f0565b610e6f565b604051610637919061268d565b60405180910390f35b34801561064c57600080fd5b506106676004803603810190610662919061296e565b610ef6565b005b60606040518060400160405280600981526020017f4e657572616c696e6b0000000000000000000000000000000000000000000000815250905090565b60006106b3338484610fb8565b6001905092915050565b60006106f96106cc6000610ab4565b6106eb6106da61dead610ab4565b60015461118190919063ffffffff16565b61118190919063ffffffff16565b905090565b610707336108e3565b610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073d906129e7565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600f5460035461079a6106bd565b6107a49190612a36565b6107ae9190612abf565b905090565b60006107c0848484611197565b610873843361086e8560405180606001604052806028815260200161333f60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113909092919063ffffffff16565b610fb8565b600190509392505050565b610887336108e3565b6108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd906129e7565b60405180910390fd5b6001600960146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b61094e336108e3565b61098d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610984906129e7565b60405180910390fd5b826002819055508160038190555080600481905550505050565b6109b0336108e3565b6109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e6906129e7565b60405180910390fd5b610a19620186a0610a0b836001546113e590919063ffffffff16565b6113fb90919063ffffffff16565b60158190555050565b610a2b336108e3565b610a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a61906129e7565b60405180910390fd5b84600a8190555083600b8190555082600c8190555081600d8190555080600e819055505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b06336108e3565b610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906129e7565b60405180910390fd5b61dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616361dead604051610bb89190612869565b60405180910390a1565b610bcb336108e3565b610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c01906129e7565b60405180910390fd5b610c126106bd565b600281905550610c206106bd565b600381905550610c2e6106bd565b600481905550565b6000600f54600454610c466106bd565b610c509190612a36565b610c5a9190612abf565b905090565b6000600f54600254610c6f6106bd565b610c799190612a36565b610c839190612abf565b905090565b610c91336108e3565b610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc7906129e7565b60405180910390fd5b610cfa620186a0610cec836001546113e590919063ffffffff16565b6113fb90919063ffffffff16565b60148190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600981526020017f4e455552414c494e4b0000000000000000000000000000000000000000000000815250905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dc2338484611197565b6001905092915050565b610dd5336108e3565b610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b906129e7565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610eff336108e3565b610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f35906129e7565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610fad9190612b4f565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90612bdc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90612c6e565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611174919061268d565b60405180910390a3505050565b6000818361118f9190612c8e565b905092915050565b6111a2838383611411565b6111ac8383611582565b6111b783838361167f565b6111c1838361185d565b6111cc838383611928565b6111d7838383611b67565b61122981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118190919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006112788484611b90565b611282578161128e565b61128d848484611c3e565b5b90506112e281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611382919061268d565b60405180910390a350505050565b60008383111582906113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf919061254d565b60405180910390fd5b5082840390509392505050565b600081836113f39190612a36565b905092915050565b600081836114099190612abf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790612d34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e690612dc6565b60405180910390fd5b60008111611532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152990612e58565b60405180910390fd5b61153b83610ab4565b81111561157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612eea565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116265750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561167b57600960149054906101000a900460ff1661167a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167190612f56565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117235750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561177d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117b7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611858576117c4610c36565b61181682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da590919063ffffffff16565b1115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90612fc2565b60405180910390fd5b5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156119045750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119245760016011600082825461191c9190612fe2565b925050819055505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a705761198561078a565b811115806119dc5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a305750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6690613062565b60405180910390fd5b5b611a78610c5f565b81111580611acf5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b235750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5990613062565b60405180910390fd5b505050565b611b72838383611dbb565b15611b8b57611b82601454611ef5565b60006011819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c365750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611c4b85856120ae565b1115611d9a576000611c83611c6086866120ae565b611c75600f54866113fb90919063ffffffff16565b6113e590919063ffffffff16565b9050611cd781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d77919061268d565b60405180910390a3611d92818461118190919063ffffffff16565b915050611d9e565b8190505b9392505050565b60008183611db39190612fe2565b905092915050565b60008060155483101590506000601454611dd430610ab4565b10159050601260009054906101000a900460ff16158015611e015750601060009054906101000a900460ff165b8015611e195750600960149054906101000a900460ff165b8015611e225750815b8015611e785750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ed15750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611ee1575060135460115410155b8015611eea5750805b925050509392505050565b6001601260006101000a81548160ff0219169083151502179055506000611f4f6002611f41600b54611f336001600a54611da590919063ffffffff16565b611da590919063ffffffff16565b6113e590919063ffffffff16565b90506000611f7a82611f6c600a54866113e590919063ffffffff16565b6113fb90919063ffffffff16565b90506000611f91828561118190919063ffffffff16565b90506000479050611fa18261217a565b6000611fb6824761118190919063ffffffff16565b90506000611fe1611fd2600a548861118190919063ffffffff16565b836113fb90919063ffffffff16565b90506000611ffa600a54836113e590919063ffffffff16565b905060008111156120105761200f86826123bd565b5b6000479050600081111561208857601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612086573d6000803e3d6000fd5b505b50505050505050506000601260006101000a81548160ff02191690831515021790555050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361210f57600d549050612174565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361216e57600c549050612174565b600e5490505b92915050565b6000600267ffffffffffffffff81111561219757612196613082565b5b6040519080825280602002602001820160405280156121c55781602001602082028036833780820191505090505b50905030816000815181106121dd576121dc6130b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a891906130f5565b816001815181106122bc576122bb6130b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061232330600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fb8565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161238795949392919061321b565b600060405180830381600087803b1580156123a157600080fd5b505af11580156123b5573d6000803e3d6000fd5b505050505050565b6123ea30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fb8565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161247396959493929190613275565b60606040518083038185885af1158015612491573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b691906132eb565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124f75780820151818401526020810190506124dc565b60008484015250505050565b6000601f19601f8301169050919050565b600061251f826124bd565b61252981856124c8565b93506125398185602086016124d9565b61254281612503565b840191505092915050565b600060208201905081810360008301526125678184612514565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259f82612574565b9050919050565b6125af81612594565b81146125ba57600080fd5b50565b6000813590506125cc816125a6565b92915050565b6000819050919050565b6125e5816125d2565b81146125f057600080fd5b50565b600081359050612602816125dc565b92915050565b6000806040838503121561261f5761261e61256f565b5b600061262d858286016125bd565b925050602061263e858286016125f3565b9150509250929050565b60008115159050919050565b61265d81612648565b82525050565b60006020820190506126786000830184612654565b92915050565b612687816125d2565b82525050565b60006020820190506126a2600083018461267e565b92915050565b6000602082840312156126be576126bd61256f565b5b60006126cc848285016125bd565b91505092915050565b6000806000606084860312156126ee576126ed61256f565b5b60006126fc868287016125bd565b935050602061270d868287016125bd565b925050604061271e868287016125f3565b9150509250925092565b600060ff82169050919050565b61273e81612728565b82525050565b60006020820190506127596000830184612735565b92915050565b6000806000606084860312156127785761277761256f565b5b6000612786868287016125f3565b9350506020612797868287016125f3565b92505060406127a8868287016125f3565b9150509250925092565b6000602082840312156127c8576127c761256f565b5b60006127d6848285016125f3565b91505092915050565b600080600080600060a086880312156127fb576127fa61256f565b5b6000612809888289016125f3565b955050602061281a888289016125f3565b945050604061282b888289016125f3565b935050606061283c888289016125f3565b925050608061284d888289016125f3565b9150509295509295909350565b61286381612594565b82525050565b600060208201905061287e600083018461285a565b92915050565b61288d81612648565b811461289857600080fd5b50565b6000813590506128aa81612884565b92915050565b600080604083850312156128c7576128c661256f565b5b60006128d5858286016125bd565b92505060206128e68582860161289b565b9150509250929050565b600080604083850312156129075761290661256f565b5b6000612915858286016125bd565b9250506020612926858286016125bd565b9150509250929050565b600061293b82612574565b9050919050565b61294b81612930565b811461295657600080fd5b50565b60008135905061296881612942565b92915050565b6000602082840312156129845761298361256f565b5b600061299284828501612959565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006129d16006836124c8565b91506129dc8261299b565b602082019050919050565b60006020820190508181036000830152612a00816129c4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a41826125d2565b9150612a4c836125d2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a8557612a84612a07565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aca826125d2565b9150612ad5836125d2565b925082612ae557612ae4612a90565b5b828204905092915050565b6000819050919050565b6000612b15612b10612b0b84612574565b612af0565b612574565b9050919050565b6000612b2782612afa565b9050919050565b6000612b3982612b1c565b9050919050565b612b4981612b2e565b82525050565b6000602082019050612b646000830184612b40565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bc66024836124c8565b9150612bd182612b6a565b604082019050919050565b60006020820190508181036000830152612bf581612bb9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c586022836124c8565b9150612c6382612bfc565b604082019050919050565b60006020820190508181036000830152612c8781612c4b565b9050919050565b6000612c99826125d2565b9150612ca4836125d2565b9250828203905081811115612cbc57612cbb612a07565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d1e6025836124c8565b9150612d2982612cc2565b604082019050919050565b60006020820190508181036000830152612d4d81612d11565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612db06023836124c8565b9150612dbb82612d54565b604082019050919050565b60006020820190508181036000830152612ddf81612da3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e426029836124c8565b9150612e4d82612de6565b604082019050919050565b60006020820190508181036000830152612e7181612e35565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612ed46031836124c8565b9150612edf82612e78565b604082019050919050565b60006020820190508181036000830152612f0381612ec7565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f40600e836124c8565b9150612f4b82612f0a565b602082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612fac601e836124c8565b9150612fb782612f76565b602082019050919050565b60006020820190508181036000830152612fdb81612f9f565b9050919050565b6000612fed826125d2565b9150612ff8836125d2565b92508282019050808211156130105761300f612a07565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061304c6011836124c8565b915061305782613016565b602082019050919050565b6000602082019050818103600083015261307b8161303f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130ef816125a6565b92915050565b60006020828403121561310b5761310a61256f565b5b6000613119848285016130e0565b91505092915050565b6000819050919050565b600061314761314261313d84613122565b612af0565b6125d2565b9050919050565b6131578161312c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61319281612594565b82525050565b60006131a48383613189565b60208301905092915050565b6000602082019050919050565b60006131c88261315d565b6131d28185613168565b93506131dd83613179565b8060005b8381101561320e5781516131f58882613198565b9750613200836131b0565b9250506001810190506131e1565b5085935050505092915050565b600060a082019050613230600083018861267e565b61323d602083018761314e565b818103604083015261324f81866131bd565b905061325e606083018561285a565b61326b608083018461267e565b9695505050505050565b600060c08201905061328a600083018961285a565b613297602083018861267e565b6132a4604083018761314e565b6132b1606083018661314e565b6132be608083018561285a565b6132cb60a083018461267e565b979650505050505050565b6000815190506132e5816125dc565b92915050565b6000806000606084860312156133045761330361256f565b5b6000613312868287016132d6565b9350506020613323868287016132d6565b9250506040613334868287016132d6565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122086e69e33be2407c86dd7806ea3b2ae1a3f49909ba70bee0cfcf013c9cf92127464736f6c63430008100033

Deployed Bytecode Sourcemap

4831:11342:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6800:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8019:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8176:168;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10438:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8637:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15516:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10761:95;;;;;;;;;;;;;:::i;:::-;;3029:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7006:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10201:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14256:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9932:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5390:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7223:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3243:170;;;;;;;;;;;;;:::i;:::-;;10566:187;;;;;;;;;;;;;:::i;:::-;;8352:140;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8500:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14082:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7109:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6200:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6901:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5471:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7360:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7866:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7533:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3124:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6800:93;6837:13;6870:5;;;;;;;;;;;;;;;;;6863:12;;6800:93;:::o;8019:149::-;8094:4;8111:37;8120:10;8132:7;8141:6;8111:8;:37::i;:::-;8156:4;8149:11;;8019:149;;;;:::o;8176:168::-;8229:7;8266:60;8304:21;8322:1;8304:9;:21::i;:::-;8266:33;8283:15;6151:42;8283:9;:15::i;:::-;8266:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8259:67;;8176:168;:::o;10438:111::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10527:12:::1;10515:9;;:24;;;;;;;;;;;;;;;;;;10438:111:::0;:::o;8637:135::-;8688:7;8753:11;;8731:19;;8715:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8708:56;;8637:135;:::o;15516:309::-;15614:4;15631:36;15641:6;15649:9;15660:6;15631:9;:36::i;:::-;15678:117;15687:6;15695:10;15707:87;15743:6;15707:87;;;;;;;;;;;;;;;;;:11;:19;15719:6;15707:19;;;;;;;;;;;;;;;:31;15727:10;15707:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15678:8;:117::i;:::-;15813:4;15806:11;;15516:309;;;;;:::o;10761:95::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10830:4:::1;10816:11;;:18;;;;;;;;;;;;;;;;;;10761:95::o:0;3029:87::-;3084:4;3109:5;;;;;;;;;;;3098:16;;:7;:16;;;3091:23;;3029:87;;;:::o;7006:95::-;7047:5;5050:2;7071:16;;7006:95;:::o;10201:228::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10322:4:::1;10300:19;:26;;;;10359:6;10337:19;:28;;;;10396:7;10376:17;:27;;;;10201:228:::0;;;:::o;14256:192::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14376:64:::1;14432:6;14376:43;14393:25;14376:12;;:16;;:43;;;;:::i;:::-;:47;;:64;;;;:::i;:::-;14355:18;:85;;;;14256:192:::0;:::o;9932:261::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10066:4:::1;10057:6;:13;;;;10090:4;10081:6;:13;;;;10116:6;10105:8;:17;;;;10143:5;10133:7;:15;;;;10173:6;10159:11;:20;;;;9932:261:::0;;;;;:::o;5390:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;7223:129::-;7289:7;7316:9;:18;7326:7;7316:18;;;;;;;;;;;;;;;;7309:25;;7223:129;;;:::o;3243:170::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3298:42:::1;3290:5;::::0;:50:::1;;;;;;;;;;;;;;;;;;3347:64;3368:42;3347:64;;;;;;:::i;:::-;;;;;;;;3243:170::o:0;10566:187::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10642:13:::1;:11;:13::i;:::-;10620:19;:35;;;;10688:13;:11;:13::i;:::-;10666:19;:35;;;;10732:13;:11;:13::i;:::-;10712:17;:33;;;;10566:187::o:0;8352:140::-;8400:7;8463:11;;8443:17;;8427:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8420:54;;8352:140;:::o;8500:129::-;8545:7;8610:11;;8588:19;;8572:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8565:56;;8500:129;:::o;14082:164::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14182:55:::1;14229:6;14182:34;14199:16;14182:12;;:16;;:34;;;;:::i;:::-;:38;;:55;;;;:::i;:::-;14166:13;:71;;;;14082:164:::0;:::o;7109:106::-;7161:7;7195:5;;;;;;;;;;;7188:12;;7109:106;:::o;6200:69::-;;;;;;;;;;;;;:::o;6901:97::-;6940:13;6973:7;;;;;;;;;;;;;;;;;6966:14;;6901:97;:::o;5471:19::-;;;;;;;;;;;;;:::o;7360:165::-;7438:4;7455:40;7465:10;7477:9;7488:6;7455:9;:40::i;:::-;7513:4;7506:11;;7360:165;;;;:::o;7866:145::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7985:8:::1;7954:18;:28;7973:8;7954:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7866:145:::0;;:::o;7533:155::-;7614:7;7643:11;:18;7655:5;7643:18;;;;;;;;;;;;;;;:27;7662:7;7643:27;;;;;;;;;;;;;;;;7636:34;;7533:155;;;;:::o;3124:111::-;2986:19;2994:10;2986:7;:19::i;:::-;2978:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3198:3:::1;3190:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3208:25;3229:3;3208:25;;;;;;:::i;:::-;;;;;;;;3124:111:::0;:::o;15833:335::-;15943:1;15926:19;;:5;:19;;;15918:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16024:1;16005:21;;:7;:21;;;15997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16106:6;16076:11;:18;16088:5;16076:18;;;;;;;;;;;;;;;:27;16095:7;16076:27;;;;;;;;;;;;;;;:36;;;;16144:7;16128:32;;16137:5;16128:32;;;16153:6;16128:32;;;;;;:::i;:::-;;;;;;;;15833:335;;;:::o;206:82::-;264:7;285:1;281;:5;;;;:::i;:::-;274:12;;206:82;;;;:::o;9229:695::-;9318:37;9329:6;9337:9;9348:6;9318:10;:37::i;:::-;9366:42;9390:6;9398:9;9366:23;:42::i;:::-;9419:46;9439:6;9447:9;9458:6;9419:19;:46::i;:::-;9477:35;9494:6;9502:9;9477:16;:35::i;:::-;9523:39;9536:6;9544:9;9555:6;9523:12;:39::i;:::-;9574:35;9583:6;9591:9;9602:6;9574:8;:35::i;:::-;9640:29;9662:6;9640:9;:17;9650:6;9640:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9620:9;:17;9630:6;9620:17;;;;;;;;;;;;;;;:49;;;;9680:22;9705:32;9719:6;9727:9;9705:13;:32::i;:::-;:78;;9777:6;9705:78;;;9740:34;9748:6;9756:9;9767:6;9740:7;:34::i;:::-;9705:78;9680:103;;9817:40;9842:14;9817:9;:20;9827:9;9817:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9794:9;:20;9804:9;9794:20;;;;;;;;;;;;;;;:63;;;;9890:9;9873:43;;9882:6;9873:43;;;9901:14;9873:43;;;;;;:::i;:::-;;;;;;;;9307:617;9229:695;;;:::o;1420:162::-;1506:7;1549:1;1544;:6;;1552:12;1536:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1578:1;1574;:5;1567:12;;1420:162;;;;;:::o;294:82::-;352:7;373:1;369;:5;;;;:::i;:::-;362:12;;294:82;;;;:::o;382:::-;440:7;461:1;457;:5;;;;:::i;:::-;450:12;;382:82;;;;:::o;8780:439::-;8902:1;8884:20;;:6;:20;;;8876:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8986:1;8965:23;;:9;:23;;;8957:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9064:1;9047:6;:19;9039:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9141:17;9151:6;9141:9;:17::i;:::-;9131:6;:27;;9123:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8780:439;;;:::o;10866:206::-;10963:18;:26;10982:6;10963:26;;;;;;;;;;;;;;;;;;;;;;;;;10962:27;:61;;;;;10994:18;:29;11013:9;10994:29;;;;;;;;;;;;;;;;;;;;;;;;;10993:30;10962:61;10959:106;;;11033:11;;;;;;;;;;;11025:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10959:106;10866:206;;:::o;11084:352::-;11193:18;:26;11212:6;11193:26;;;;;;;;;;;;;;;;;;;;;;;;;11192:27;:61;;;;;11224:18;:29;11243:9;11224:29;;;;;;;;;;;;;;;;;;;;;;;;;11223:30;11192:61;:91;;;;;11278:4;;;;;;;;;;;11257:26;;:9;:26;;;;11192:91;:121;;;;;6151:42;11287:26;;:9;:26;;;;11192:121;11189:240;;;11375:17;:15;:17::i;:::-;11338:32;11363:6;11338:9;:20;11348:9;11338:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11337:55;;11329:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11189:240;11084:352;;;:::o;11444:166::-;11541:4;;;;;;;;;;;11528:17;;:9;:17;;;:48;;;;;11550:18;:26;11569:6;11550:26;;;;;;;;;;;;;;;;;;;;;;;;;11549:27;11528:48;11525:78;;;11599:1;11578:9;;:23;;;;;;;:::i;:::-;;;;;;;;11525:78;11444:166;;:::o;11618:377::-;11729:4;;;;;;;;;;;11719:14;;:6;:14;;;11716:144;;11753:20;:18;:20::i;:::-;11743:6;:30;;:60;;;;11777:18;:26;11796:6;11777:26;;;;;;;;;;;;;;;;;;;;;;;;;11743:60;:93;;;;11807:18;:29;11826:9;11807:29;;;;;;;;;;;;;;;;;;;;;;;;;11743:93;11735:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;11716:144;11888:14;:12;:14::i;:::-;11878:6;:24;;:54;;;;11906:18;:26;11925:6;11906:26;;;;;;;;;;;;;;;;;;;;;;;;;11878:54;:87;;;;11936:18;:29;11955:9;11936:29;;;;;;;;;;;;;;;;;;;;;;;;;11878:87;11870:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;11618:377;;;:::o;14462:197::-;14554:41;14569:6;14577:9;14588:6;14554:14;:41::i;:::-;14551:101;;;14597:29;14612:13;;14597:14;:29::i;:::-;14648:1;14628:9;:22;;;;14551:101;14462:197;;;:::o;14667:174::-;14748:4;14773:18;:26;14792:6;14773:26;;;;;;;;;;;;;;;;;;;;;;;;;14772:27;:61;;;;;14804:18;:29;14823:9;14804:29;;;;;;;;;;;;;;;;;;;;;;;;;14803:30;14772:61;14765:68;;14667:174;;;;:::o;15076:432::-;15162:7;15218:1;15185:30;15197:6;15205:9;15185:11;:30::i;:::-;:34;15182:304;;;15231:17;15251:59;15279:30;15291:6;15299:9;15279:11;:30::i;:::-;15251:23;15262:11;;15251:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15231:79;;15348:39;15377:9;15348;:24;15366:4;15348:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15321:9;:24;15339:4;15321:24;;;;;;;;;;;;;;;:66;;;;15428:4;15403:42;;15412:6;15403:42;;;15435:9;15403:42;;;;;;:::i;:::-;;;;;;;;15463:21;15474:9;15463:6;:10;;:21;;;;:::i;:::-;15456:28;;;;;15182:304;15494:6;15487:13;;15076:432;;;;;;:::o;118:82::-;176:7;197:1;193;:5;;;;:::i;:::-;186:12;;118:82;;;;:::o;13659:415::-;13757:4;13774:13;13800:18;;13790:6;:28;;13774:44;;13829:19;13879:13;;13851:24;13869:4;13851:9;:24::i;:::-;:41;;13829:63;;13911:8;;;;;;;;;;;13910:9;:32;;;;;13923:19;;;;;;;;;;;13910:32;:47;;;;;13946:11;;;;;;;;;;;13910:47;:59;;;;;13961:8;13910:59;:90;;;;;13974:18;:26;13993:6;13974:26;;;;;;;;;;;;;;;;;;;;;;;;;13973:27;13910:90;:111;;;;;14017:4;;;;;;;;;;;14004:17;;:9;:17;;;13910:111;:138;;;;;14038:10;;14025:9;;:23;;13910:138;:156;;;;;14052:14;13910:156;13903:163;;;;13659:415;;;;;:::o;12003:864::-;6083:4;6072:8;;:15;;;;;;;;;;;;;;;;;;12076:20:::1;12099:34;12131:1;12100:25;12118:6;;12100:13;12111:1;12100:6;;:10;;:13;;;;:::i;:::-;:17;;:25;;;;:::i;:::-;12099:31;;:34;;;;:::i;:::-;12076:57;;12146:32;12181:36;12204:12;12181:18;12192:6;;12181;:10;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;12146:71;;12230:14;12247:36;12258:24;12247:6;:10;;:36;;;;:::i;:::-;12230:53;;12294:22;12319:21;12294:46;;12353:24;12370:6;12353:16;:24::i;:::-;12388:20;12411:41;12437:14;12411:21;:25;;:41;;;;:::i;:::-;12388:64;;12463:19;12484:42;12501:24;12518:6;;12501:12;:16;;:24;;;;:::i;:::-;12484:12;:16;;:42;;;;:::i;:::-;12463:63;;12537:29;12569:23;12585:6;;12569:11;:15;;:23;;;;:::i;:::-;12537:55;;12640:1;12608:21;:34;12605:103;;;12644:61;12657:24;12683:21;12644:12;:61::i;:::-;12605:103;12718:24;12745:21;12718:48;;12809:1;12782:16;:29;12779:81;;;12821:9;;;;;;;;;;;12813:27;;:45;12841:16;12813:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12779:81;12063:804;;;;;;;;6103:5:::0;6092:8;;:16;;;;;;;;;;;;;;;;;;12003:864;:::o;14849:219::-;14928:7;14964:4;;;;;;;;;;;14951:17;;:9;:17;;;14948:38;;14977:7;;14970:14;;;;14948:38;15009:4;;;;;;;;;;;14999:14;;:6;:14;;;14996:36;;15022:8;;15015:15;;;;14996:36;15049:11;;15042:18;;14849:219;;;;;:::o;13217:434::-;13283:21;13321:1;13307:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13283:40;;13352:4;13334;13339:1;13334:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13378:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13368:4;13373:1;13368:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13402:53;13419:4;13434:6;;;;;;;;;;;13443:11;13402:8;:53::i;:::-;13466:6;;;;;;;;;;;:57;;;13538:11;13564:1;13580:4;13607;13627:15;13466:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13272:379;13217:434;:::o;12875:334::-;12956:53;12973:4;12988:6;;;;;;;;;;;12997:11;12956:8;:53::i;:::-;13020:6;;;;;;;;;;;:22;;;13050:9;13083:4;13103:11;13129:1;13145;13161:9;;;;;;;;;;;13185:15;13020:181;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12875:334;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::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:619::-;5265:6;5273;5281;5330:2;5318:9;5309:7;5305:23;5301:32;5298:119;;;5336:79;;:::i;:::-;5298:119;5456:1;5481:53;5526:7;5517:6;5506:9;5502:22;5481:53;:::i;:::-;5471:63;;5427:117;5583:2;5609:53;5654:7;5645:6;5634:9;5630:22;5609:53;:::i;:::-;5599:63;;5554:118;5711:2;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;:::i;:::-;5727:63;;5682:118;5188:619;;;;;:::o;5813:329::-;5872:6;5921:2;5909:9;5900:7;5896:23;5892:32;5889:119;;;5927:79;;:::i;:::-;5889:119;6047:1;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6018:117;5813:329;;;;:::o;6148:911::-;6243:6;6251;6259;6267;6275;6324:3;6312:9;6303:7;6299:23;6295:33;6292:120;;;6331:79;;:::i;:::-;6292:120;6451:1;6476:53;6521:7;6512:6;6501:9;6497:22;6476:53;:::i;:::-;6466:63;;6422:117;6578:2;6604:53;6649:7;6640:6;6629:9;6625:22;6604:53;:::i;:::-;6594:63;;6549:118;6706:2;6732:53;6777:7;6768:6;6757:9;6753:22;6732:53;:::i;:::-;6722:63;;6677:118;6834:2;6860:53;6905:7;6896:6;6885:9;6881:22;6860:53;:::i;:::-;6850:63;;6805:118;6962:3;6989:53;7034:7;7025:6;7014:9;7010:22;6989:53;:::i;:::-;6979:63;;6933:119;6148:911;;;;;;;;:::o;7065:118::-;7152:24;7170:5;7152:24;:::i;:::-;7147:3;7140:37;7065:118;;:::o;7189:222::-;7282:4;7320:2;7309:9;7305:18;7297:26;;7333:71;7401:1;7390:9;7386:17;7377:6;7333:71;:::i;:::-;7189:222;;;;:::o;7417:116::-;7487:21;7502:5;7487:21;:::i;:::-;7480:5;7477:32;7467:60;;7523:1;7520;7513:12;7467:60;7417:116;:::o;7539:133::-;7582:5;7620:6;7607:20;7598:29;;7636:30;7660:5;7636:30;:::i;:::-;7539:133;;;;:::o;7678:468::-;7743:6;7751;7800:2;7788:9;7779:7;7775:23;7771:32;7768:119;;;7806:79;;:::i;:::-;7768:119;7926:1;7951:53;7996:7;7987:6;7976:9;7972:22;7951:53;:::i;:::-;7941:63;;7897:117;8053:2;8079:50;8121:7;8112:6;8101:9;8097:22;8079:50;:::i;:::-;8069:60;;8024:115;7678:468;;;;;:::o;8152:474::-;8220:6;8228;8277:2;8265:9;8256:7;8252:23;8248:32;8245:119;;;8283:79;;:::i;:::-;8245:119;8403:1;8428:53;8473:7;8464:6;8453:9;8449:22;8428:53;:::i;:::-;8418:63;;8374:117;8530:2;8556:53;8601:7;8592:6;8581:9;8577:22;8556:53;:::i;:::-;8546:63;;8501:118;8152:474;;;;;:::o;8632:104::-;8677:7;8706:24;8724:5;8706:24;:::i;:::-;8695:35;;8632:104;;;:::o;8742:138::-;8823:32;8849:5;8823:32;:::i;:::-;8816:5;8813:43;8803:71;;8870:1;8867;8860:12;8803:71;8742:138;:::o;8886:155::-;8940:5;8978:6;8965:20;8956:29;;8994:41;9029:5;8994:41;:::i;:::-;8886:155;;;;:::o;9047:345::-;9114:6;9163:2;9151:9;9142:7;9138:23;9134:32;9131:119;;;9169:79;;:::i;:::-;9131:119;9289:1;9314:61;9367:7;9358:6;9347:9;9343:22;9314:61;:::i;:::-;9304:71;;9260:125;9047:345;;;;:::o;9398:156::-;9538:8;9534:1;9526:6;9522:14;9515:32;9398:156;:::o;9560:365::-;9702:3;9723:66;9787:1;9782:3;9723:66;:::i;:::-;9716:73;;9798:93;9887:3;9798:93;:::i;:::-;9916:2;9911:3;9907:12;9900:19;;9560:365;;;:::o;9931:419::-;10097:4;10135:2;10124:9;10120:18;10112:26;;10184:9;10178:4;10174:20;10170:1;10159:9;10155:17;10148:47;10212:131;10338:4;10212:131;:::i;:::-;10204:139;;9931:419;;;:::o;10356:180::-;10404:77;10401:1;10394:88;10501:4;10498:1;10491:15;10525:4;10522:1;10515:15;10542:348;10582:7;10605:20;10623:1;10605:20;:::i;:::-;10600:25;;10639:20;10657:1;10639:20;:::i;:::-;10634:25;;10827:1;10759:66;10755:74;10752:1;10749:81;10744:1;10737:9;10730:17;10726:105;10723:131;;;10834:18;;:::i;:::-;10723:131;10882:1;10879;10875:9;10864:20;;10542:348;;;;:::o;10896:180::-;10944:77;10941:1;10934:88;11041:4;11038:1;11031:15;11065:4;11062:1;11055:15;11082:185;11122:1;11139:20;11157:1;11139:20;:::i;:::-;11134:25;;11173:20;11191:1;11173:20;:::i;:::-;11168:25;;11212:1;11202:35;;11217:18;;:::i;:::-;11202:35;11259:1;11256;11252:9;11247:14;;11082:185;;;;:::o;11273:60::-;11301:3;11322:5;11315:12;;11273:60;;;:::o;11339:142::-;11389:9;11422:53;11440:34;11449:24;11467:5;11449:24;:::i;:::-;11440:34;:::i;:::-;11422:53;:::i;:::-;11409:66;;11339:142;;;:::o;11487:126::-;11537:9;11570:37;11601:5;11570:37;:::i;:::-;11557:50;;11487:126;;;:::o;11619:134::-;11677:9;11710:37;11741:5;11710:37;:::i;:::-;11697:50;;11619:134;;;:::o;11759:147::-;11854:45;11893:5;11854:45;:::i;:::-;11849:3;11842:58;11759:147;;:::o;11912:238::-;12013:4;12051:2;12040:9;12036:18;12028:26;;12064:79;12140:1;12129:9;12125:17;12116:6;12064:79;:::i;:::-;11912:238;;;;:::o;12156:223::-;12296:34;12292:1;12284:6;12280:14;12273:58;12365:6;12360:2;12352:6;12348:15;12341:31;12156:223;:::o;12385:366::-;12527:3;12548:67;12612:2;12607:3;12548:67;:::i;:::-;12541:74;;12624:93;12713:3;12624:93;:::i;:::-;12742:2;12737:3;12733:12;12726:19;;12385:366;;;:::o;12757:419::-;12923:4;12961:2;12950:9;12946:18;12938:26;;13010:9;13004:4;13000:20;12996:1;12985:9;12981:17;12974:47;13038:131;13164:4;13038:131;:::i;:::-;13030:139;;12757:419;;;:::o;13182:221::-;13322:34;13318:1;13310:6;13306:14;13299:58;13391:4;13386:2;13378:6;13374:15;13367:29;13182:221;:::o;13409:366::-;13551:3;13572:67;13636:2;13631:3;13572:67;:::i;:::-;13565:74;;13648:93;13737:3;13648:93;:::i;:::-;13766:2;13761:3;13757:12;13750:19;;13409:366;;;:::o;13781:419::-;13947:4;13985:2;13974:9;13970:18;13962:26;;14034:9;14028:4;14024:20;14020:1;14009:9;14005:17;13998:47;14062:131;14188:4;14062:131;:::i;:::-;14054:139;;13781:419;;;:::o;14206:194::-;14246:4;14266:20;14284:1;14266:20;:::i;:::-;14261:25;;14300:20;14318:1;14300:20;:::i;:::-;14295:25;;14344:1;14341;14337:9;14329:17;;14368:1;14362:4;14359:11;14356:37;;;14373:18;;:::i;:::-;14356:37;14206:194;;;;:::o;14406:224::-;14546:34;14542:1;14534:6;14530:14;14523:58;14615:7;14610:2;14602:6;14598:15;14591:32;14406:224;:::o;14636:366::-;14778:3;14799:67;14863:2;14858:3;14799:67;:::i;:::-;14792:74;;14875:93;14964:3;14875:93;:::i;:::-;14993:2;14988:3;14984:12;14977:19;;14636:366;;;:::o;15008:419::-;15174:4;15212:2;15201:9;15197:18;15189:26;;15261:9;15255:4;15251:20;15247:1;15236:9;15232:17;15225:47;15289:131;15415:4;15289:131;:::i;:::-;15281:139;;15008:419;;;:::o;15433:222::-;15573:34;15569:1;15561:6;15557:14;15550:58;15642:5;15637:2;15629:6;15625:15;15618:30;15433:222;:::o;15661:366::-;15803:3;15824:67;15888:2;15883:3;15824:67;:::i;:::-;15817:74;;15900:93;15989:3;15900:93;:::i;:::-;16018:2;16013:3;16009:12;16002:19;;15661:366;;;:::o;16033:419::-;16199:4;16237:2;16226:9;16222:18;16214:26;;16286:9;16280:4;16276:20;16272:1;16261:9;16257:17;16250:47;16314:131;16440:4;16314:131;:::i;:::-;16306:139;;16033:419;;;:::o;16458:228::-;16598:34;16594:1;16586:6;16582:14;16575:58;16667:11;16662:2;16654:6;16650:15;16643:36;16458:228;:::o;16692:366::-;16834:3;16855:67;16919:2;16914:3;16855:67;:::i;:::-;16848:74;;16931:93;17020:3;16931:93;:::i;:::-;17049:2;17044:3;17040:12;17033:19;;16692:366;;;:::o;17064:419::-;17230:4;17268:2;17257:9;17253:18;17245:26;;17317:9;17311:4;17307:20;17303:1;17292:9;17288:17;17281:47;17345:131;17471:4;17345:131;:::i;:::-;17337:139;;17064:419;;;:::o;17489:236::-;17629:34;17625:1;17617:6;17613:14;17606:58;17698:19;17693:2;17685:6;17681:15;17674:44;17489:236;:::o;17731:366::-;17873:3;17894:67;17958:2;17953:3;17894:67;:::i;:::-;17887:74;;17970:93;18059:3;17970:93;:::i;:::-;18088:2;18083:3;18079:12;18072:19;;17731:366;;;:::o;18103:419::-;18269:4;18307:2;18296:9;18292:18;18284:26;;18356:9;18350:4;18346:20;18342:1;18331:9;18327:17;18320:47;18384:131;18510:4;18384:131;:::i;:::-;18376:139;;18103:419;;;:::o;18528:164::-;18668:16;18664:1;18656:6;18652:14;18645:40;18528:164;:::o;18698:366::-;18840:3;18861:67;18925:2;18920:3;18861:67;:::i;:::-;18854:74;;18937:93;19026:3;18937:93;:::i;:::-;19055:2;19050:3;19046:12;19039:19;;18698:366;;;:::o;19070:419::-;19236:4;19274:2;19263:9;19259:18;19251:26;;19323:9;19317:4;19313:20;19309:1;19298:9;19294:17;19287:47;19351:131;19477:4;19351:131;:::i;:::-;19343:139;;19070:419;;;:::o;19495:180::-;19635:32;19631:1;19623:6;19619:14;19612:56;19495:180;:::o;19681:366::-;19823:3;19844:67;19908:2;19903:3;19844:67;:::i;:::-;19837:74;;19920:93;20009:3;19920:93;:::i;:::-;20038:2;20033:3;20029:12;20022:19;;19681:366;;;:::o;20053:419::-;20219:4;20257:2;20246:9;20242:18;20234:26;;20306:9;20300:4;20296:20;20292:1;20281:9;20277:17;20270:47;20334:131;20460:4;20334:131;:::i;:::-;20326:139;;20053:419;;;:::o;20478:191::-;20518:3;20537:20;20555:1;20537:20;:::i;:::-;20532:25;;20571:20;20589:1;20571:20;:::i;:::-;20566:25;;20614:1;20611;20607:9;20600:16;;20635:3;20632:1;20629:10;20626:36;;;20642:18;;:::i;:::-;20626:36;20478:191;;;;:::o;20675:167::-;20815:19;20811:1;20803:6;20799:14;20792:43;20675:167;:::o;20848:366::-;20990:3;21011:67;21075:2;21070:3;21011:67;:::i;:::-;21004:74;;21087:93;21176:3;21087:93;:::i;:::-;21205:2;21200:3;21196:12;21189:19;;20848:366;;;:::o;21220:419::-;21386:4;21424:2;21413:9;21409:18;21401:26;;21473:9;21467:4;21463:20;21459:1;21448:9;21444:17;21437:47;21501:131;21627:4;21501:131;:::i;:::-;21493:139;;21220:419;;;:::o;21645:180::-;21693:77;21690:1;21683:88;21790:4;21787:1;21780:15;21814:4;21811:1;21804:15;21831:180;21879:77;21876:1;21869:88;21976:4;21973:1;21966:15;22000:4;21997:1;21990:15;22017:143;22074:5;22105:6;22099:13;22090:22;;22121:33;22148:5;22121:33;:::i;:::-;22017:143;;;;:::o;22166:351::-;22236:6;22285:2;22273:9;22264:7;22260:23;22256:32;22253:119;;;22291:79;;:::i;:::-;22253:119;22411:1;22436:64;22492:7;22483:6;22472:9;22468:22;22436:64;:::i;:::-;22426:74;;22382:128;22166:351;;;;:::o;22523:85::-;22568:7;22597:5;22586:16;;22523:85;;;:::o;22614:158::-;22672:9;22705:61;22723:42;22732:32;22758:5;22732:32;:::i;:::-;22723:42;:::i;:::-;22705:61;:::i;:::-;22692:74;;22614:158;;;:::o;22778:147::-;22873:45;22912:5;22873:45;:::i;:::-;22868:3;22861:58;22778:147;;:::o;22931:114::-;22998:6;23032:5;23026:12;23016:22;;22931:114;;;:::o;23051:184::-;23150:11;23184:6;23179:3;23172:19;23224:4;23219:3;23215:14;23200:29;;23051:184;;;;:::o;23241:132::-;23308:4;23331:3;23323:11;;23361:4;23356:3;23352:14;23344:22;;23241:132;;;:::o;23379:108::-;23456:24;23474:5;23456:24;:::i;:::-;23451:3;23444:37;23379:108;;:::o;23493:179::-;23562:10;23583:46;23625:3;23617:6;23583:46;:::i;:::-;23661:4;23656:3;23652:14;23638:28;;23493:179;;;;:::o;23678:113::-;23748:4;23780;23775:3;23771:14;23763:22;;23678:113;;;:::o;23827:732::-;23946:3;23975:54;24023:5;23975:54;:::i;:::-;24045:86;24124:6;24119:3;24045:86;:::i;:::-;24038:93;;24155:56;24205:5;24155:56;:::i;:::-;24234:7;24265:1;24250:284;24275:6;24272:1;24269:13;24250:284;;;24351:6;24345:13;24378:63;24437:3;24422:13;24378:63;:::i;:::-;24371:70;;24464:60;24517:6;24464:60;:::i;:::-;24454:70;;24310:224;24297:1;24294;24290:9;24285:14;;24250:284;;;24254:14;24550:3;24543:10;;23951:608;;;23827:732;;;;:::o;24565:831::-;24828:4;24866:3;24855:9;24851:19;24843:27;;24880:71;24948:1;24937:9;24933:17;24924:6;24880:71;:::i;:::-;24961:80;25037:2;25026:9;25022:18;25013:6;24961:80;:::i;:::-;25088:9;25082:4;25078:20;25073:2;25062:9;25058:18;25051:48;25116:108;25219:4;25210:6;25116:108;:::i;:::-;25108:116;;25234:72;25302:2;25291:9;25287:18;25278:6;25234:72;:::i;:::-;25316:73;25384:3;25373:9;25369:19;25360:6;25316:73;:::i;:::-;24565:831;;;;;;;;:::o;25402:807::-;25651:4;25689:3;25678:9;25674:19;25666:27;;25703:71;25771:1;25760:9;25756:17;25747:6;25703:71;:::i;:::-;25784:72;25852:2;25841:9;25837:18;25828:6;25784:72;:::i;:::-;25866:80;25942:2;25931:9;25927:18;25918:6;25866:80;:::i;:::-;25956;26032:2;26021:9;26017:18;26008:6;25956:80;:::i;:::-;26046:73;26114:3;26103:9;26099:19;26090:6;26046:73;:::i;:::-;26129;26197:3;26186:9;26182:19;26173:6;26129:73;:::i;:::-;25402:807;;;;;;;;;:::o;26215:143::-;26272:5;26303:6;26297:13;26288:22;;26319:33;26346:5;26319:33;:::i;:::-;26215:143;;;;:::o;26364:663::-;26452:6;26460;26468;26517:2;26505:9;26496:7;26492:23;26488:32;26485:119;;;26523:79;;:::i;:::-;26485:119;26643:1;26668:64;26724:7;26715:6;26704:9;26700:22;26668:64;:::i;:::-;26658:74;;26614:128;26781:2;26807:64;26863:7;26854:6;26843:9;26839:22;26807:64;:::i;:::-;26797:74;;26752:129;26920:2;26946:64;27002:7;26993:6;26982:9;26978:22;26946:64;:::i;:::-;26936:74;;26891:129;26364:663;;;;;:::o

Swarm Source

ipfs://86e69e33be2407c86dd7806ea3b2ae1a3f49909ba70bee0cfcf013c9cf921274
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.