ETH Price: $3,458.40 (-1.66%)
Gas: 2 Gwei

Token

Baby Trump (BABYTRUMP)
 

Overview

Max Total Supply

10,000,000 BABYTRUMP

Holders

10

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
23,072.337706819 BABYTRUMP

Value
$0.00
0x617ce1e63aef93e4e5f6c81d0a30388a35394ffc
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
babytrump

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-26
*/

// SPDX-License-Identifier: MIT
/**

Baby Trump is a larger-than-life caricature of former President Donald Trump. 
This inflatable balloon gained popularity as a symbol of protest during various demonstrations across different cities. 

https://t.me/BabyTrumpERC20
**/

pragma solidity 0.8.19;

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 balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address __owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {  
    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() 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);
}

abstract contract Auth {
    address internal _owner;
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); 
        _; 
    }
    function owner() public view returns (address) { 
        return _owner; 
    }
    function transferOwnership(address payable newOwner) external onlyOwner { 
        _owner = newOwner; 
        emit OwnershipTransferred(newOwner); 
    }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0); 
        emit OwnershipTransferred(address(0)); 
    }
    event OwnershipTransferred(address _owner);
}

contract babytrump is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 10_000_000 * (10**_decimals);
    string private constant _name         = "Baby Trump";
    string private  constant _symbol       = "BABYTRUMP";

    uint8 private antiSnipeTax1 = 2;
    uint8 private antiSnipeTax2 = 1;
    uint8 private antiSnipeBlocks1 = 1;
    uint8 private antiSnipeBlocks2 = 1;
    uint256 private _antiMevBlock = 2;

    uint8 private _buyTaxRate  = 0;
    uint8 private _sellTaxRate = 1;

    uint16 private _taxSharesMarketing   = 50;
    uint16 private _taxSharesBuyback = 50;
    uint16 private _taxSharesLP          = 0;
    uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesBuyback + _taxSharesLP;

    address payable private _walletMarketing = payable(0xBAb39dED8C82AE0c0c66ba334C23B92f513A7Bc6); 
    address payable private _walletBuyback = payable(0x86b9eD1Fd2b63200Ee22b44B3eB7cA8e5497245c); 

    uint256 private _launchBlock;
    uint256 private _maxTxAmount     = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 990 / 100000;
    uint256 private _swapLimit = _taxSwapMin * 50 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;

    address private _lpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap { 
        _inTaxSwap = true; 
        _; 
        _inTaxSwap = false; 
    }

    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

    constructor() Auth(msg.sender) {
        _lpOwner = msg.sender;

        uint256 airdropAmount = _totalSupply * 1 / 100;
        
        _balances[address(this)] =  _totalSupply - airdropAmount;
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _balances[_owner] = airdropAmount;
        emit Transfer(address(0), _owner, _balances[_owner]);

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noFees[_walletBuyback] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
        _noLimits[_walletBuyback] = true;
    }

    receive() external payable {}
    
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingOpen, "trading is open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _balances[_primaryLP] -= _swapLimit;
        (bool lpAddSuccess,) = _primaryLP.call(abi.encodeWithSignature("sync()"));
        require(lpAddSuccess, "Failed adding liquidity");
        _isLP[_primaryLP] = lpAddSuccess;
        _openTrading();
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lpTokenRecipient = _lpOwner;
        if ( autoburn ) { lpTokenRecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxAmount     = _totalSupply * 2 / 100; 
        _maxWalletAmount = _totalSupply * 2 / 100;
        _tradingOpen = true;
        _launchBlock = block.number;
        _antiMevBlock = _antiMevBlock + _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
        if ( block.number < _antiMevBlock && block.number >= _launchBlock && _isLP[sender] ) {
            require(recipient == tx.origin, "MEV blocked");
        }
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); 
        }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        _swapLimit += _taxAmount;
        _balances[recipient] = _balances[recipient] + _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) {
            if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[sender] ) { 
            if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) {
                taxAmount = amount * _buyTaxRate / 100; 
            } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) {
                taxAmount = amount * antiSnipeTax2 / 100;
            } else if ( block.number >= _launchBlock) {
                taxAmount = amount * antiSnipeTax1 / 100;
            }
        } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxRate / 100; 
        }

        return taxAmount;
    }


    function exemptFromFees(address wallet) external view returns (bool) {
        return _noFees[wallet];
    } 
    function exemptFromLimits(address wallet) external view returns (bool) {
        return _noLimits[wallet];
    } 



    function feeSplit() external view returns (uint16 marketing, uint16 Buyback, uint16 LP ) {
        return ( _taxSharesMarketing, _taxSharesBuyback, _taxSharesLP);
    }


    function marketingWallet() external view returns (address) {
        return _walletMarketing;
    }
    function BuybackWallet() external view returns (address) {
        return _walletBuyback;
    }

    function updateWallets(address marketing, address Buyback, address LPtokens) external onlyOwner {
        require(!_isLP[marketing] && !_isLP[Buyback] && !_isLP[LPtokens], "LP cannot be tax wallet");
        
        _walletMarketing = payable(marketing);
        _walletBuyback = payable(Buyback);
        _lpOwner = LPtokens;
        
        _noFees[marketing] = true;
        _noLimits[marketing] = true;
        
        _noFees[Buyback] = true;        
        _noLimits[Buyback] = true;
    }

    function maxWallet() external view returns (uint256) {
        return _maxWalletAmount;
    }
    function maxTransaction() external view returns (uint256) {
        return _maxTxAmount;
    }

    function swapAtMin() external view returns (uint256) {
        return _taxSwapMin;
    }
    function swapAtMax() external view returns (uint256) {
        return _taxSwapMax;
    }

    function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }



    function _burnTokens(address fromWallet, uint256 amount) private {
        if ( amount > 0 ) {
            _balances[fromWallet] -= amount;
            _balances[address(0)] += amount;
            emit Transfer(fromWallet, address(0), amount);
        }
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = _swapLimit;
        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }
            uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2;
            
            uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
            if( _tokensToSwap > 10**_decimals ) {
                uint256 _ethPreSwap = address(this).balance;
                _balances[address(this)] += _taxTokensAvailable;
                _swapTaxTokensForEth(_tokensToSwap);
                _swapLimit -= _taxTokensAvailable;
                uint256 _ethSwapped = address(this).balance - _ethPreSwap;
                if ( _taxSharesLP > 0 ) {
                    uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ;
                    _approveRouter(_tokensForLP);
                    _addLiquidity(_tokensForLP, _ethWeiAmount, false);
                }
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _primarySwapRouter.WETH();
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesBuyback;
        if (_taxShareTotal > 0) {
            uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal;
            uint256 BuybackAmount = amount * _taxSharesBuyback / _taxShareTotal;
            if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); }
            if ( BuybackAmount > 0 ) { _walletBuyback.transfer(BuybackAmount); }
        }
    }



    function burn(uint256 amount) external {
        uint256 _tokensAvailable = balanceOf(msg.sender);
        require(amount <= _tokensAvailable, "balance too low");
        _burnTokens(msg.sender, amount);
        emit TokensBurned(msg.sender, 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":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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":"BuybackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSplit","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"Buyback","type":"uint16"},{"internalType":"uint16","name":"LP","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"Buyback","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055506001600060166101000a81548160ff021916908360ff1602179055506001600060176101000a81548160ff021916908360ff16021790555060026001556000600260006101000a81548160ff021916908360ff1602179055506001600260016101000a81548160ff021916908360ff16021790555060326002806101000a81548161ffff021916908361ffff1602179055506032600260046101000a81548161ffff021916908361ffff1602179055506000600260066101000a81548161ffff021916908361ffff160217905550600260069054906101000a900461ffff16600260049054906101000a900461ffff1660028054906101000a900461ffff1662000147919062000b4f565b62000153919062000b4f565b600260086101000a81548161ffff021916908361ffff16021790555073bab39ded8c82ae0c0c66ba334c23b92f513a7bc66002600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507386b9ed1fd2b63200ee22b44b3eb7ca8e5497245c600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000229919062000cf7565b6298968062000239919062000d48565b6005556009600a6200024c919062000cf7565b629896806200025c919062000d48565b600655620186a0600a6009600a62000275919062000cf7565b6298968062000285919062000d48565b62000291919062000d48565b6200029d919062000dc2565b600755620186a06103de6009600a620002b7919062000cf7565b62989680620002c7919062000d48565b620002d3919062000d48565b620002df919062000dc2565b60085560646032600754620002f5919062000d48565b62000301919062000d48565b600955737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260016101000a81548160ff0219169083151502179055503480156200038157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460016009600a6200041b919062000cf7565b629896806200042b919062000d48565b62000437919062000d48565b62000443919062000dc2565b9050806009600a62000456919062000cf7565b6298968062000466919062000d48565b62000472919062000dfa565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000554919062000e46565b60405180910390a380600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620006a1919062000e46565b60405180910390a36001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000e63565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b5c8262000b12565b915062000b698362000b12565b9250828201905061ffff81111562000b865762000b8562000b20565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000beb5780860481111562000bc35762000bc262000b20565b5b600185161562000bd35780820291505b808102905062000be38562000b8c565b945062000ba3565b94509492505050565b60008262000c06576001905062000cd9565b8162000c16576000905062000cd9565b816001811462000c2f576002811462000c3a5762000c70565b600191505062000cd9565b60ff84111562000c4f5762000c4e62000b20565b5b8360020a91508482111562000c695762000c6862000b20565b5b5062000cd9565b5060208310610133831016604e8410600b841016171562000caa5782820a90508381111562000ca45762000ca362000b20565b5b62000cd9565b62000cb9848484600162000b99565b9250905081840481111562000cd35762000cd262000b20565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d048262000ce0565b915062000d118362000cea565b925062000d407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bf4565b905092915050565b600062000d558262000ce0565b915062000d628362000ce0565b925082820262000d728162000ce0565b9150828204841483151762000d8c5762000d8b62000b20565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dcf8262000ce0565b915062000ddc8362000ce0565b92508262000def5762000dee62000d93565b5b828204905092915050565b600062000e078262000ce0565b915062000e148362000ce0565b925082820390508181111562000e2f5762000e2e62000b20565b5b92915050565b62000e408162000ce0565b82525050565b600060208201905062000e5d600083018462000e35565b92915050565b6142628062000e736000396000f3fe60806040526004361061016a5760003560e01c80636373ea69116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e14610551578063e8078d941461058e578063f2fde38b14610598578063f8b45b05146105c157610171565b806395d89b41146104be578063a9059cbb146104e9578063c3f70b521461052657610171565b80636373ea69146103aa57806370a08231146103d7578063715018a61461041457806375f0a8741461042b5780638d3e6e40146104565780638da5cb5b1461049357610171565b8063313ce56711610123578063313ce5671461029a578063368f4800146102c557806342966c68146102ee57806346b89834146103175780634d4ce935146103425780635a90a49e1461036d57610171565b806306fdde0314610176578063095ea7b3146101a15780630c0789c7146101de578063147c9f6d1461020957806318160ddd1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105ec565b6040516101989190613173565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061322e565b610629565b6040516101d59190613289565b60405180910390f35b3480156101ea57600080fd5b506101f361071b565b60405161020091906132b3565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b91906132ce565b610745565b005b34801561023e57600080fd5b50610247610b34565b6040516102549190613330565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061334b565b610b57565b6040516102919190613289565b60405180910390f35b3480156102a657600080fd5b506102af610d61565b6040516102bc91906133ba565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e7919061340f565b610d6a565b005b3480156102fa57600080fd5b506103156004803603810190610310919061344f565b610f26565b005b34801561032357600080fd5b5061032c610fd2565b6040516103399190613330565b60405180910390f35b34801561034e57600080fd5b50610357610fdc565b6040516103649190613330565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f919061347c565b610fe6565b6040516103a19190613289565b60405180910390f35b3480156103b657600080fd5b506103bf61103c565b6040516103ce939291906134b8565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f9919061347c565b61107d565b60405161040b9190613330565b60405180910390f35b34801561042057600080fd5b506104296110c6565b005b34801561043757600080fd5b506104406111cf565b60405161044d91906132b3565b60405180910390f35b34801561046257600080fd5b5061047d6004803603810190610478919061347c565b6111f9565b60405161048a9190613289565b60405180910390f35b34801561049f57600080fd5b506104a861124f565b6040516104b591906132b3565b60405180910390f35b3480156104ca57600080fd5b506104d3611278565b6040516104e09190613173565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b919061322e565b6112b5565b60405161051d9190613289565b60405180910390f35b34801561053257600080fd5b5061053b611312565b6040516105489190613330565b60405180910390f35b34801561055d57600080fd5b50610578600480360381019061057391906134ef565b61131c565b6040516105859190613330565b60405180910390f35b6105966113a3565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061356d565b611a90565b005b3480156105cd57600080fd5b506105d6611b98565b6040516105e39190613330565b60405180910390f35b60606040518060400160405280600a81526020017f42616279205472756d7000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107099190613330565b60405180910390a36001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca906135e6565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156108775750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156108cd5750601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390613652565b60405180910390fd5b826002600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009600a610b4491906137d4565b62989680610b52919061381f565b905090565b6000610b6284611ba2565b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b98906138ad565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d4d5781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ccc91906138cd565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d58848484611c7d565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def906135e6565b60405180910390fd5b600060016103e88461ffff166009600a610e1291906137d4565b62989680610e20919061381f565b610e2a919061381f565b610e349190613930565b610e3e9190613961565b9050600554811015610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c906139e1565b60405180910390fd5b80600581905550600060016103e88461ffff166009600a610ea691906137d4565b62989680610eb4919061381f565b610ebe919061381f565b610ec89190613930565b610ed29190613961565b9050600654811015610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1090613a4d565b60405180910390fd5b8060068190555050505050565b6000610f313361107d565b905080821115610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90613ab9565b60405180910390fd5b610f803383612209565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb683604051610fc69190613330565b60405180910390a25050565b6000600754905090565b6000600854905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600060028054906101000a900461ffff16600260049054906101000a900461ffff16600260069054906101000a900461ffff16925092509250909192565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b906135e6565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516111c591906132b3565b60405180910390a1565b60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f424142595452554d500000000000000000000000000000000000000000000000815250905090565b60006112c033611ba2565b6112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f6906138ad565b60405180910390fd5b61130a338484611c7d565b905092915050565b6000600554905090565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611428906135e6565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490613b25565b60405180910390fd5b601260009054906101000a900460ff161561152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613b91565b60405180910390fd5b600034118061153c5750600047115b61157b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157290613bfd565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490613c69565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168e9190613c9e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173b9190613c9e565b6040518363ffffffff1660e01b8152600401611758929190613ccb565b6020604051808303816000875af1158015611777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190613c9e565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611826600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612329565b600954600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461189991906138cd565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161196b9190613d3b565b6000604051808303816000865af19150503d80600081146119a8576040519150601f19603f3d011682016040523d82523d6000602084013e6119ad565b606091505b50509050806119f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e890613d9e565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a72612417565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906135e6565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611b8d9190613e1d565b60405180910390a150565b6000600654905090565b60008060009050601260009054906101000a900460ff1615611bc75760019050611c74565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c695750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c7357600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce490613e84565b60405180910390fd5b601260009054906101000a900460ff16611de357600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611da35750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd9906138ad565b60405180910390fd5b5b601260019054906101000a900460ff16158015611e495750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e5757611e566124ff565b5b60015443108015611e6a57506004544310155b8015611ebf5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f33573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2990613ef0565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f9b57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ff3575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561204357612003848484612707565b612042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203990613f5c565b60405180910390fd5b5b600061205085858561289e565b90506000818461206091906138cd565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ad91906138cd565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600960008282546121029190613961565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121549190613961565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516121f49190613330565b60405180910390a36001925050509392505050565b60008111156123255780600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461226191906138cd565b9250508190555080600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122b79190613961565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161231c9190613330565b60405180910390a35b5050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561235b57600090505b61236484612b4e565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016123cb96959493929190613fb7565b60606040518083038185885af11580156123e9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061240e919061402d565b50505050505050565b606460026009600a61242991906137d4565b62989680612437919061381f565b612441919061381f565b61244b9190613930565b600581905550606460026009600a61246391906137d4565b62989680612471919061381f565b61247b919061381f565b6124859190613930565b6006819055506001601260006101000a81548160ff02191690831515021790555043600481905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166004546001546124e39190613961565b6124ed9190613961565b6124f79190613961565b600181905550565b6001601260016101000a81548160ff02191690831515021790555060006009549050600754811015801561253f5750601260009054906101000a900460ff165b156126e95760085481106125535760085490505b600060028060089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff168461258b919061381f565b6125959190613930565b61259f9190613930565b9050600081836125af91906138cd565b90506009600a6125bf91906137d4565b8111156126cd57600047905083600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461261a9190613961565b9250508190555061262a82612d38565b836009600082825461263c91906138cd565b925050819055506000814761265191906138cd565b90506000600260069054906101000a900461ffff1661ffff1611156126ca576000600260089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff16836126a7919061381f565b6126b19190613930565b90506126bc85612b4e565b6126c885826000612329565b505b50505b600047905060008111156126e5576126e481612f57565b5b5050505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff1680156127745750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127ca5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612893576005548311156127e25760009050612892565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612887575060065483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128859190613961565b115b1561289157600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff1615806129065750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061295a5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129685760009050612b43565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ac257600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166004546129ed9190613961565b6129f79190613961565b4310612a2e576064600260009054906101000a900460ff1660ff1684612a1d919061381f565b612a279190613930565b9050612abd565b600060169054906101000a900460ff1660ff16600454612a4e9190613961565b4310612a85576064600060159054906101000a900460ff1660ff1684612a74919061381f565b612a7e9190613930565b9050612abc565b6004544310612abb576064600060149054906101000a900460ff1660ff1684612aae919061381f565b612ab89190613930565b90505b5b5b612b42565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b41576064600260019054906101000a900460ff1660ff1684612b34919061381f565b612b3e9190613930565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612d35577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612d2c9190613330565b60405180910390a35b50565b612d4181612b4e565b6000600267ffffffffffffffff811115612d5e57612d5d614080565b5b604051908082528060200260200182016040528015612d8c5781602001602082028036833780820191505090505b5090503081600081518110612da457612da36140af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6f9190613c9e565b81600181518110612e8357612e826140af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f2195949392919061419c565b600060405180830381600087803b158015612f3b57600080fd5b505af1158015612f4f573d6000803e3d6000fd5b505050505050565b6000600260049054906101000a900461ffff1660028054906101000a900461ffff16612f8391906141f6565b905060008161ffff1611156130df5760008161ffff1660028054906101000a900461ffff1661ffff1684612fb7919061381f565b612fc19190613930565b905060008261ffff16600260049054906101000a900461ffff1661ffff1685612fea919061381f565b612ff49190613930565b90506000821115613069576002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613067573d6000803e3d6000fd5b505b60008111156130dc57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156130da573d6000803e3d6000fd5b505b50505b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561311d578082015181840152602081019050613102565b60008484015250505050565b6000601f19601f8301169050919050565b6000613145826130e3565b61314f81856130ee565b935061315f8185602086016130ff565b61316881613129565b840191505092915050565b6000602082019050818103600083015261318d818461313a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c58261319a565b9050919050565b6131d5816131ba565b81146131e057600080fd5b50565b6000813590506131f2816131cc565b92915050565b6000819050919050565b61320b816131f8565b811461321657600080fd5b50565b60008135905061322881613202565b92915050565b6000806040838503121561324557613244613195565b5b6000613253858286016131e3565b925050602061326485828601613219565b9150509250929050565b60008115159050919050565b6132838161326e565b82525050565b600060208201905061329e600083018461327a565b92915050565b6132ad816131ba565b82525050565b60006020820190506132c860008301846132a4565b92915050565b6000806000606084860312156132e7576132e6613195565b5b60006132f5868287016131e3565b9350506020613306868287016131e3565b9250506040613317868287016131e3565b9150509250925092565b61332a816131f8565b82525050565b60006020820190506133456000830184613321565b92915050565b60008060006060848603121561336457613363613195565b5b6000613372868287016131e3565b9350506020613383868287016131e3565b925050604061339486828701613219565b9150509250925092565b600060ff82169050919050565b6133b48161339e565b82525050565b60006020820190506133cf60008301846133ab565b92915050565b600061ffff82169050919050565b6133ec816133d5565b81146133f757600080fd5b50565b600081359050613409816133e3565b92915050565b6000806040838503121561342657613425613195565b5b6000613434858286016133fa565b9250506020613445858286016133fa565b9150509250929050565b60006020828403121561346557613464613195565b5b600061347384828501613219565b91505092915050565b60006020828403121561349257613491613195565b5b60006134a0848285016131e3565b91505092915050565b6134b2816133d5565b82525050565b60006060820190506134cd60008301866134a9565b6134da60208301856134a9565b6134e760408301846134a9565b949350505050565b6000806040838503121561350657613505613195565b5b6000613514858286016131e3565b9250506020613525858286016131e3565b9150509250929050565b600061353a8261319a565b9050919050565b61354a8161352f565b811461355557600080fd5b50565b60008135905061356781613541565b92915050565b60006020828403121561358357613582613195565b5b600061359184828501613558565b91505092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b60006135d06018836130ee565b91506135db8261359a565b602082019050919050565b600060208201905081810360008301526135ff816135c3565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b600061363c6017836130ee565b915061364782613606565b602082019050919050565b6000602082019050818103600083015261366b8161362f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156136f8578086048111156136d4576136d3613672565b5b60018516156136e35780820291505b80810290506136f1856136a1565b94506136b8565b94509492505050565b60008261371157600190506137cd565b8161371f57600090506137cd565b8160018114613735576002811461373f5761376e565b60019150506137cd565b60ff84111561375157613750613672565b5b8360020a91508482111561376857613767613672565b5b506137cd565b5060208310610133831016604e8410600b84101617156137a35782820a90508381111561379e5761379d613672565b5b6137cd565b6137b084848460016136ae565b925090508184048111156137c7576137c6613672565b5b81810290505b9392505050565b60006137df826131f8565b91506137ea8361339e565b92506138177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613701565b905092915050565b600061382a826131f8565b9150613835836131f8565b9250828202613843816131f8565b9150828204841483151761385a57613859613672565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006138976010836130ee565b91506138a282613861565b602082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b60006138d8826131f8565b91506138e3836131f8565b92508282039050818111156138fb576138fa613672565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061393b826131f8565b9150613946836131f8565b92508261395657613955613901565b5b828204905092915050565b600061396c826131f8565b9150613977836131f8565b925082820190508082111561398f5761398e613672565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006139cb600a836130ee565b91506139d682613995565b602082019050919050565b600060208201905081810360008301526139fa816139be565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000613a37600e836130ee565b9150613a4282613a01565b602082019050919050565b60006020820190508181036000830152613a6681613a2a565b9050919050565b7f62616c616e636520746f6f206c6f770000000000000000000000000000000000600082015250565b6000613aa3600f836130ee565b9150613aae82613a6d565b602082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000613b0f6009836130ee565b9150613b1a82613ad9565b602082019050919050565b60006020820190508181036000830152613b3e81613b02565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000613b7b600f836130ee565b9150613b8682613b45565b602082019050919050565b60006020820190508181036000830152613baa81613b6e565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000613be7601d836130ee565b9150613bf282613bb1565b602082019050919050565b60006020820190508181036000830152613c1681613bda565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000613c536015836130ee565b9150613c5e82613c1d565b602082019050919050565b60006020820190508181036000830152613c8281613c46565b9050919050565b600081519050613c98816131cc565b92915050565b600060208284031215613cb457613cb3613195565b5b6000613cc284828501613c89565b91505092915050565b6000604082019050613ce060008301856132a4565b613ced60208301846132a4565b9392505050565b600081519050919050565b600081905092915050565b6000613d1582613cf4565b613d1f8185613cff565b9350613d2f8185602086016130ff565b80840191505092915050565b6000613d478284613d0a565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000613d886017836130ee565b9150613d9382613d52565b602082019050919050565b60006020820190508181036000830152613db781613d7b565b9050919050565b6000819050919050565b6000613de3613dde613dd98461319a565b613dbe565b61319a565b9050919050565b6000613df582613dc8565b9050919050565b6000613e0782613dea565b9050919050565b613e1781613dfc565b82525050565b6000602082019050613e326000830184613e0e565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613e6e601d836130ee565b9150613e7982613e38565b602082019050919050565b60006020820190508181036000830152613e9d81613e61565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b6000613eda600b836130ee565b9150613ee582613ea4565b602082019050919050565b60006020820190508181036000830152613f0981613ecd565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000613f466011836130ee565b9150613f5182613f10565b602082019050919050565b60006020820190508181036000830152613f7581613f39565b9050919050565b6000819050919050565b6000613fa1613f9c613f9784613f7c565b613dbe565b6131f8565b9050919050565b613fb181613f86565b82525050565b600060c082019050613fcc60008301896132a4565b613fd96020830188613321565b613fe66040830187613fa8565b613ff36060830186613fa8565b61400060808301856132a4565b61400d60a0830184613321565b979650505050505050565b60008151905061402781613202565b92915050565b60008060006060848603121561404657614045613195565b5b600061405486828701614018565b935050602061406586828701614018565b925050604061407686828701614018565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614113816131ba565b82525050565b6000614125838361410a565b60208301905092915050565b6000602082019050919050565b6000614149826140de565b61415381856140e9565b935061415e836140fa565b8060005b8381101561418f5781516141768882614119565b975061418183614131565b925050600181019050614162565b5085935050505092915050565b600060a0820190506141b16000830188613321565b6141be6020830187613fa8565b81810360408301526141d0818661413e565b90506141df60608301856132a4565b6141ec6080830184613321565b9695505050505050565b6000614201826133d5565b915061420c836133d5565b9250828201905061ffff81111561422657614225613672565b5b9291505056fea2646970667358221220c4a27f1a120f7b647a8f2b7ac8b1a03f964ecda015e194ca8ed4dc94cfcc3dde64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80636373ea69116100d157806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e14610551578063e8078d941461058e578063f2fde38b14610598578063f8b45b05146105c157610171565b806395d89b41146104be578063a9059cbb146104e9578063c3f70b521461052657610171565b80636373ea69146103aa57806370a08231146103d7578063715018a61461041457806375f0a8741461042b5780638d3e6e40146104565780638da5cb5b1461049357610171565b8063313ce56711610123578063313ce5671461029a578063368f4800146102c557806342966c68146102ee57806346b89834146103175780634d4ce935146103425780635a90a49e1461036d57610171565b806306fdde0314610176578063095ea7b3146101a15780630c0789c7146101de578063147c9f6d1461020957806318160ddd1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105ec565b6040516101989190613173565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061322e565b610629565b6040516101d59190613289565b60405180910390f35b3480156101ea57600080fd5b506101f361071b565b60405161020091906132b3565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b91906132ce565b610745565b005b34801561023e57600080fd5b50610247610b34565b6040516102549190613330565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061334b565b610b57565b6040516102919190613289565b60405180910390f35b3480156102a657600080fd5b506102af610d61565b6040516102bc91906133ba565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e7919061340f565b610d6a565b005b3480156102fa57600080fd5b506103156004803603810190610310919061344f565b610f26565b005b34801561032357600080fd5b5061032c610fd2565b6040516103399190613330565b60405180910390f35b34801561034e57600080fd5b50610357610fdc565b6040516103649190613330565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f919061347c565b610fe6565b6040516103a19190613289565b60405180910390f35b3480156103b657600080fd5b506103bf61103c565b6040516103ce939291906134b8565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f9919061347c565b61107d565b60405161040b9190613330565b60405180910390f35b34801561042057600080fd5b506104296110c6565b005b34801561043757600080fd5b506104406111cf565b60405161044d91906132b3565b60405180910390f35b34801561046257600080fd5b5061047d6004803603810190610478919061347c565b6111f9565b60405161048a9190613289565b60405180910390f35b34801561049f57600080fd5b506104a861124f565b6040516104b591906132b3565b60405180910390f35b3480156104ca57600080fd5b506104d3611278565b6040516104e09190613173565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b919061322e565b6112b5565b60405161051d9190613289565b60405180910390f35b34801561053257600080fd5b5061053b611312565b6040516105489190613330565b60405180910390f35b34801561055d57600080fd5b50610578600480360381019061057391906134ef565b61131c565b6040516105859190613330565b60405180910390f35b6105966113a3565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061356d565b611a90565b005b3480156105cd57600080fd5b506105d6611b98565b6040516105e39190613330565b60405180910390f35b60606040518060400160405280600a81526020017f42616279205472756d7000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107099190613330565b60405180910390a36001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca906135e6565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156108775750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156108cd5750601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390613652565b60405180910390fd5b826002600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009600a610b4491906137d4565b62989680610b52919061381f565b905090565b6000610b6284611ba2565b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b98906138ad565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d4d5781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ccc91906138cd565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d58848484611c7d565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def906135e6565b60405180910390fd5b600060016103e88461ffff166009600a610e1291906137d4565b62989680610e20919061381f565b610e2a919061381f565b610e349190613930565b610e3e9190613961565b9050600554811015610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c906139e1565b60405180910390fd5b80600581905550600060016103e88461ffff166009600a610ea691906137d4565b62989680610eb4919061381f565b610ebe919061381f565b610ec89190613930565b610ed29190613961565b9050600654811015610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1090613a4d565b60405180910390fd5b8060068190555050505050565b6000610f313361107d565b905080821115610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90613ab9565b60405180910390fd5b610f803383612209565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb683604051610fc69190613330565b60405180910390a25050565b6000600754905090565b6000600854905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600060028054906101000a900461ffff16600260049054906101000a900461ffff16600260069054906101000a900461ffff16925092509250909192565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b906135e6565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516111c591906132b3565b60405180910390a1565b60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f424142595452554d500000000000000000000000000000000000000000000000815250905090565b60006112c033611ba2565b6112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f6906138ad565b60405180910390fd5b61130a338484611c7d565b905092915050565b6000600554905090565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611428906135e6565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490613b25565b60405180910390fd5b601260009054906101000a900460ff161561152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613b91565b60405180910390fd5b600034118061153c5750600047115b61157b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157290613bfd565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490613c69565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168e9190613c9e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173b9190613c9e565b6040518363ffffffff1660e01b8152600401611758929190613ccb565b6020604051808303816000875af1158015611777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190613c9e565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611826600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612329565b600954600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461189991906138cd565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161196b9190613d3b565b6000604051808303816000865af19150503d80600081146119a8576040519150601f19603f3d011682016040523d82523d6000602084013e6119ad565b606091505b50509050806119f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e890613d9e565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a72612417565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906135e6565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611b8d9190613e1d565b60405180910390a150565b6000600654905090565b60008060009050601260009054906101000a900460ff1615611bc75760019050611c74565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c695750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c7357600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce490613e84565b60405180910390fd5b601260009054906101000a900460ff16611de357600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611da35750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd9906138ad565b60405180910390fd5b5b601260019054906101000a900460ff16158015611e495750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e5757611e566124ff565b5b60015443108015611e6a57506004544310155b8015611ebf5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f33573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2990613ef0565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f9b57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ff3575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561204357612003848484612707565b612042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203990613f5c565b60405180910390fd5b5b600061205085858561289e565b90506000818461206091906138cd565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ad91906138cd565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600960008282546121029190613961565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121549190613961565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516121f49190613330565b60405180910390a36001925050509392505050565b60008111156123255780600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461226191906138cd565b9250508190555080600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122b79190613961565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161231c9190613330565b60405180910390a35b5050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561235b57600090505b61236484612b4e565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016123cb96959493929190613fb7565b60606040518083038185885af11580156123e9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061240e919061402d565b50505050505050565b606460026009600a61242991906137d4565b62989680612437919061381f565b612441919061381f565b61244b9190613930565b600581905550606460026009600a61246391906137d4565b62989680612471919061381f565b61247b919061381f565b6124859190613930565b6006819055506001601260006101000a81548160ff02191690831515021790555043600481905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166004546001546124e39190613961565b6124ed9190613961565b6124f79190613961565b600181905550565b6001601260016101000a81548160ff02191690831515021790555060006009549050600754811015801561253f5750601260009054906101000a900460ff165b156126e95760085481106125535760085490505b600060028060089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff168461258b919061381f565b6125959190613930565b61259f9190613930565b9050600081836125af91906138cd565b90506009600a6125bf91906137d4565b8111156126cd57600047905083600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461261a9190613961565b9250508190555061262a82612d38565b836009600082825461263c91906138cd565b925050819055506000814761265191906138cd565b90506000600260069054906101000a900461ffff1661ffff1611156126ca576000600260089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff16836126a7919061381f565b6126b19190613930565b90506126bc85612b4e565b6126c885826000612329565b505b50505b600047905060008111156126e5576126e481612f57565b5b5050505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff1680156127745750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127ca5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612893576005548311156127e25760009050612892565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612887575060065483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128859190613961565b115b1561289157600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff1615806129065750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061295a5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129685760009050612b43565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ac257600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166004546129ed9190613961565b6129f79190613961565b4310612a2e576064600260009054906101000a900460ff1660ff1684612a1d919061381f565b612a279190613930565b9050612abd565b600060169054906101000a900460ff1660ff16600454612a4e9190613961565b4310612a85576064600060159054906101000a900460ff1660ff1684612a74919061381f565b612a7e9190613930565b9050612abc565b6004544310612abb576064600060149054906101000a900460ff1660ff1684612aae919061381f565b612ab89190613930565b90505b5b5b612b42565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b41576064600260019054906101000a900460ff1660ff1684612b34919061381f565b612b3e9190613930565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612d35577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612d2c9190613330565b60405180910390a35b50565b612d4181612b4e565b6000600267ffffffffffffffff811115612d5e57612d5d614080565b5b604051908082528060200260200182016040528015612d8c5781602001602082028036833780820191505090505b5090503081600081518110612da457612da36140af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6f9190613c9e565b81600181518110612e8357612e826140af565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f2195949392919061419c565b600060405180830381600087803b158015612f3b57600080fd5b505af1158015612f4f573d6000803e3d6000fd5b505050505050565b6000600260049054906101000a900461ffff1660028054906101000a900461ffff16612f8391906141f6565b905060008161ffff1611156130df5760008161ffff1660028054906101000a900461ffff1661ffff1684612fb7919061381f565b612fc19190613930565b905060008261ffff16600260049054906101000a900461ffff1661ffff1685612fea919061381f565b612ff49190613930565b90506000821115613069576002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613067573d6000803e3d6000fd5b505b60008111156130dc57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156130da573d6000803e3d6000fd5b505b50505b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561311d578082015181840152602081019050613102565b60008484015250505050565b6000601f19601f8301169050919050565b6000613145826130e3565b61314f81856130ee565b935061315f8185602086016130ff565b61316881613129565b840191505092915050565b6000602082019050818103600083015261318d818461313a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c58261319a565b9050919050565b6131d5816131ba565b81146131e057600080fd5b50565b6000813590506131f2816131cc565b92915050565b6000819050919050565b61320b816131f8565b811461321657600080fd5b50565b60008135905061322881613202565b92915050565b6000806040838503121561324557613244613195565b5b6000613253858286016131e3565b925050602061326485828601613219565b9150509250929050565b60008115159050919050565b6132838161326e565b82525050565b600060208201905061329e600083018461327a565b92915050565b6132ad816131ba565b82525050565b60006020820190506132c860008301846132a4565b92915050565b6000806000606084860312156132e7576132e6613195565b5b60006132f5868287016131e3565b9350506020613306868287016131e3565b9250506040613317868287016131e3565b9150509250925092565b61332a816131f8565b82525050565b60006020820190506133456000830184613321565b92915050565b60008060006060848603121561336457613363613195565b5b6000613372868287016131e3565b9350506020613383868287016131e3565b925050604061339486828701613219565b9150509250925092565b600060ff82169050919050565b6133b48161339e565b82525050565b60006020820190506133cf60008301846133ab565b92915050565b600061ffff82169050919050565b6133ec816133d5565b81146133f757600080fd5b50565b600081359050613409816133e3565b92915050565b6000806040838503121561342657613425613195565b5b6000613434858286016133fa565b9250506020613445858286016133fa565b9150509250929050565b60006020828403121561346557613464613195565b5b600061347384828501613219565b91505092915050565b60006020828403121561349257613491613195565b5b60006134a0848285016131e3565b91505092915050565b6134b2816133d5565b82525050565b60006060820190506134cd60008301866134a9565b6134da60208301856134a9565b6134e760408301846134a9565b949350505050565b6000806040838503121561350657613505613195565b5b6000613514858286016131e3565b9250506020613525858286016131e3565b9150509250929050565b600061353a8261319a565b9050919050565b61354a8161352f565b811461355557600080fd5b50565b60008135905061356781613541565b92915050565b60006020828403121561358357613582613195565b5b600061359184828501613558565b91505092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b60006135d06018836130ee565b91506135db8261359a565b602082019050919050565b600060208201905081810360008301526135ff816135c3565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b600061363c6017836130ee565b915061364782613606565b602082019050919050565b6000602082019050818103600083015261366b8161362f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156136f8578086048111156136d4576136d3613672565b5b60018516156136e35780820291505b80810290506136f1856136a1565b94506136b8565b94509492505050565b60008261371157600190506137cd565b8161371f57600090506137cd565b8160018114613735576002811461373f5761376e565b60019150506137cd565b60ff84111561375157613750613672565b5b8360020a91508482111561376857613767613672565b5b506137cd565b5060208310610133831016604e8410600b84101617156137a35782820a90508381111561379e5761379d613672565b5b6137cd565b6137b084848460016136ae565b925090508184048111156137c7576137c6613672565b5b81810290505b9392505050565b60006137df826131f8565b91506137ea8361339e565b92506138177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613701565b905092915050565b600061382a826131f8565b9150613835836131f8565b9250828202613843816131f8565b9150828204841483151761385a57613859613672565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006138976010836130ee565b91506138a282613861565b602082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b60006138d8826131f8565b91506138e3836131f8565b92508282039050818111156138fb576138fa613672565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061393b826131f8565b9150613946836131f8565b92508261395657613955613901565b5b828204905092915050565b600061396c826131f8565b9150613977836131f8565b925082820190508082111561398f5761398e613672565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006139cb600a836130ee565b91506139d682613995565b602082019050919050565b600060208201905081810360008301526139fa816139be565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000613a37600e836130ee565b9150613a4282613a01565b602082019050919050565b60006020820190508181036000830152613a6681613a2a565b9050919050565b7f62616c616e636520746f6f206c6f770000000000000000000000000000000000600082015250565b6000613aa3600f836130ee565b9150613aae82613a6d565b602082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000613b0f6009836130ee565b9150613b1a82613ad9565b602082019050919050565b60006020820190508181036000830152613b3e81613b02565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000613b7b600f836130ee565b9150613b8682613b45565b602082019050919050565b60006020820190508181036000830152613baa81613b6e565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000613be7601d836130ee565b9150613bf282613bb1565b602082019050919050565b60006020820190508181036000830152613c1681613bda565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000613c536015836130ee565b9150613c5e82613c1d565b602082019050919050565b60006020820190508181036000830152613c8281613c46565b9050919050565b600081519050613c98816131cc565b92915050565b600060208284031215613cb457613cb3613195565b5b6000613cc284828501613c89565b91505092915050565b6000604082019050613ce060008301856132a4565b613ced60208301846132a4565b9392505050565b600081519050919050565b600081905092915050565b6000613d1582613cf4565b613d1f8185613cff565b9350613d2f8185602086016130ff565b80840191505092915050565b6000613d478284613d0a565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000613d886017836130ee565b9150613d9382613d52565b602082019050919050565b60006020820190508181036000830152613db781613d7b565b9050919050565b6000819050919050565b6000613de3613dde613dd98461319a565b613dbe565b61319a565b9050919050565b6000613df582613dc8565b9050919050565b6000613e0782613dea565b9050919050565b613e1781613dfc565b82525050565b6000602082019050613e326000830184613e0e565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613e6e601d836130ee565b9150613e7982613e38565b602082019050919050565b60006020820190508181036000830152613e9d81613e61565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b6000613eda600b836130ee565b9150613ee582613ea4565b602082019050919050565b60006020820190508181036000830152613f0981613ecd565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000613f466011836130ee565b9150613f5182613f10565b602082019050919050565b60006020820190508181036000830152613f7581613f39565b9050919050565b6000819050919050565b6000613fa1613f9c613f9784613f7c565b613dbe565b6131f8565b9050919050565b613fb181613f86565b82525050565b600060c082019050613fcc60008301896132a4565b613fd96020830188613321565b613fe66040830187613fa8565b613ff36060830186613fa8565b61400060808301856132a4565b61400d60a0830184613321565b979650505050505050565b60008151905061402781613202565b92915050565b60008060006060848603121561404657614045613195565b5b600061405486828701614018565b935050602061406586828701614018565b925050604061407686828701614018565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614113816131ba565b82525050565b6000614125838361410a565b60208301905092915050565b6000602082019050919050565b6000614149826140de565b61415381856140e9565b935061415e836140fa565b8060005b8381101561418f5781516141768882614119565b975061418183614131565b925050600181019050614162565b5085935050505092915050565b600060a0820190506141b16000830188613321565b6141be6020830187613fa8565b81810360408301526141d0818661413e565b90506141df60608301856132a4565b6141ec6080830184613321565b9695505050505050565b6000614201826133d5565b915061420c836133d5565b9250828201905061ffff81111561422657614225613672565b5b9291505056fea2646970667358221220c4a27f1a120f7b647a8f2b7ac8b1a03f964ecda015e194ca8ed4dc94cfcc3dde64736f6c63430008130033

Deployed Bytecode Sourcemap

2524:13787:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5785:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6123:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12098:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12203:511;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5515:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6580:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5609:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13121:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16047:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12927:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13023;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11567:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11811:170;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5871:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2331:137;;;;;;;;;;;;;:::i;:::-;;11991:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11684:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2081:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5695:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6347:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12823:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5982:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7317:805;;;:::i;:::-;;2168:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12722:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5785:80;5833:13;5857:5;;;;;;;;;;;;;;;;;5850:12;;5785:80;:::o;6123:216::-;6198:4;6250:6;6215:11;:23;6227:10;6215:23;;;;;;;;;;;;;;;:32;6239:7;6215:32;;;;;;;;;;;;;;;:41;;;;6293:7;6272:37;;6281:10;6272:37;;;6302:6;6272:37;;;;;;:::i;:::-;;;;;;;;6327:4;6320:11;;6123:216;;;;:::o;12098:97::-;12146:7;12173:14;;;;;;;;;;;12166:21;;12098:97;:::o;12203:511::-;2018:6;;;;;;;;;;2004:20;;:10;:20;;;1996:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12319:5:::1;:16;12325:9;12319:16;;;;;;;;;;;;;;;;;;;;;;;;;12318:17;:36;;;;;12340:5;:14;12346:7;12340:14;;;;;;;;;;;;;;;;;;;;;;;;;12339:15;12318:36;:56;;;;;12359:5;:15;12365:8;12359:15;;;;;;;;;;;;;;;;;;;;;;;;;12358:16;12318:56;12310:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;12450:9;12423:16;;:37;;;;;;;;;;;;;;;;;;12496:7;12471:14;;:33;;;;;;;;;;;;;;;;;;12526:8;12515;;:19;;;;;;;;;;;;;;;;;;12576:4;12555:7;:18;12563:9;12555:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;12614:4;12591:9;:20;12601:9;12591:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12658:4;12639:7;:16;12647:7;12639:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12702:4;12681:9;:18;12691:7;12681:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;12203:511:::0;;;:::o;5515:88::-;5570:7;2606:1;2668:2;:13;;;;:::i;:::-;2654:10;:28;;;;:::i;:::-;5581:19;;5515:88;:::o;6580:404::-;6680:4;6705:25;6723:6;6705:17;:25::i;:::-;6697:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6800:17;6765:11;:19;6777:6;6765:19;;;;;;;;;;;;;;;:31;6785:10;6765:31;;;;;;;;;;;;;;;;:52;6762:157;;6901:6;6867:11;:19;6879:6;6867:19;;;;;;;;;;;;;;;:31;6887:10;6867:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6833:11;:19;6845:6;6833:19;;;;;;;;;;;;;;;:31;6853:10;6833:31;;;;;;;;;;;;;;;:74;;;;6762:157;6936:40;6950:6;6958:9;6969:6;6936:13;:40::i;:::-;6929:47;;6580:404;;;;;:::o;5609:80::-;5661:5;2606:1;5670:16;;5609:80;:::o;13121:462::-;2018:6;;;;;;;;;;2004:20;;:10;:20;;;1996:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13227:16:::1;13293:1;13286:4;13261:22;13246:37;;2606:1;2668:2;:13;;;;:::i;:::-;2654:10;:28;;;;:::i;:::-;13246:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;13227:67;;13325:12;;13313:8;:24;;13305:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13378:8;13363:12;:23;;;;13397:20;13462:1;13455:4;13435:17;13420:32;;2606:1;2668:2;:13;;;;:::i;:::-;2654:10;:28;;;;:::i;:::-;13420:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;13397:66;;13498:16;;13482:12;:32;;13474:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13563:12;13544:16;:31;;;;13216:367;;13121:462:::0;;:::o;16047:261::-;16097:24;16124:21;16134:10;16124:9;:21::i;:::-;16097:48;;16174:16;16164:6;:26;;16156:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16221:31;16233:10;16245:6;16221:11;:31::i;:::-;16281:10;16268:32;;;16293:6;16268:32;;;;;;:::i;:::-;;;;;;;;16086:222;16047:261;:::o;12927:90::-;12971:7;12998:11;;12991:18;;12927:90;:::o;13023:::-;13067:7;13094:11;;13087:18;;13023:90;:::o;11567:110::-;11630:4;11654:7;:15;11662:6;11654:15;;;;;;;;;;;;;;;;;;;;;;;;;11647:22;;11567:110;;;:::o;11811:170::-;11854:16;11872:14;11888:9;11920:19;;;;;;;;;;11941:17;;;;;;;;;;;11960:12;;;;;;;;;;;11911:62;;;;;;11811:170;;;:::o;5871:105::-;5937:7;5955:9;:18;5965:7;5955:18;;;;;;;;;;;;;;;;5948:25;;5871:105;;;:::o;2331:137::-;2018:6;;;;;;;;;;2004:20;;:10;:20;;;1996:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2408:1:::1;2391:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2427:32;2456:1;2427:32;;;;;;:::i;:::-;;;;;;;;2331:137::o:0;11991:101::-;12041:7;12068:16;;;;;;;;;;;12061:23;;11991:101;:::o;11684:114::-;11749:4;11773:9;:17;11783:6;11773:17;;;;;;;;;;;;;;;;;;;;;;;;;11766:24;;11684:114;;;:::o;2081:81::-;2119:7;2147:6;;;;;;;;;;;2140:13;;2081:81;:::o;5695:84::-;5745:13;5769:7;;;;;;;;;;;;;;;;;5762:14;;5695:84;:::o;6347:225::-;6427:4;6452:29;6470:10;6452:17;:29::i;:::-;6444:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6520:44;6534:10;6546:9;6557:6;6520:13;:44::i;:::-;6513:51;;6347:225;;;;:::o;12823:96::-;12872:7;12899:12;;12892:19;;12823:96;:::o;5982:133::-;6066:7;6084:11;:19;6096:6;6084:19;;;;;;;;;;;;;;;:28;6104:7;6084:28;;;;;;;;;;;;;;;;6077:35;;5982:133;;;;:::o;7317:805::-;2018:6;;;;;;;;;;2004:20;;:10;:20;;;1996:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4513:4:::1;4500:10;;:17;;;;;;;;;;;;;;;;;;7421:1:::2;7399:24;;:10;;;;;;;;;;;:24;;;7391:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7457:12;;;;;;;;;;;7456:13;7448:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7520:1;7508:9;:13;:40;;;;7547:1;7525:21;:23;7508:40;7500:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7626:1;7601:9;:24;7619:4;7601:24;;;;;;;;;;;;;;;;:26;7593:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7695:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7677:58;;;7744:4;7751:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7677:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7664:10;;:113;;;;;;;;;;;;;;;;;;7788:69;7802:9;:24;7820:4;7802:24;;;;;;;;;;;;;;;;7828:21;7851:5;7788:13;:69::i;:::-;7893:10;;7868:9;:21;7878:10;;;;;;;;;;;7868:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;7915:17;7937:10;;;;;;;;;;;:15;;7953:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7937:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7914:73;;;8006:12;7998:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8077:12;8057:5;:17;8063:10;;;;;;;;;;;8057:17;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8100:14;:12;:14::i;:::-;7380:742;4555:5:::1;4542:10;;:18;;;;;;;;;;;;;;;;;;7317:805::o:0;2168:157::-;2018:6;;;;;;;;;;2004:20;;:10;:20;;;1996:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2261:8:::1;2252:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2286:30;2307:8;2286:30;;;;;;:::i;:::-;;;;;;;;2168:157:::0;:::o;12722:95::-;12766:7;12793:16;;12786:23;;12722:95;:::o;10423:279::-;10488:4;10504:16;10523:5;10504:24;;10544:12;;;;;;;;;;;10539:124;;;10575:4;10561:18;;10539:124;;;10602:7;:15;10610:6;10602:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;10621:9;:17;10631:6;10621:17;;;;;;;;;;;;;;;;;;;;;;;;;10602:36;10598:65;;;10656:4;10642:18;;10598:65;10539:124;10683:11;10676:18;;;10423:279;;;:::o;8838:1074::-;8930:4;8973:1;8955:20;;:6;:20;;;8947:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9025:12;;;;;;;;;;;9020:89;;9049:7;:15;9057:6;9049:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;9068:9;:17;9078:6;9068:17;;;;;;;;;;;;;;;;;;;;;;;;;9049:36;9041:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9020:89;9125:10;;;;;;;;;;;9124:11;:31;;;;;9139:5;:16;9145:9;9139:16;;;;;;;;;;;;;;;;;;;;;;;;;9124:31;9119:64;;;9160:20;:18;:20::i;:::-;9119:64;9213:13;;9198:12;:28;:60;;;;;9246:12;;9230;:28;;9198:60;:77;;;;;9262:5;:13;9268:6;9262:13;;;;;;;;;;;;;;;;;;;;;;;;;9198:77;9193:158;;;9314:9;9301:22;;:9;:22;;;9293:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9193:158;9384:4;9366:23;;:6;:23;;;;:53;;;;;9414:4;9393:26;;:9;:26;;;;9366:53;:73;;;;;9433:6;;;;;;;;;;9423:16;;:6;:16;;;;9366:73;9361:179;;;9466:39;9479:6;9487:9;9498:6;9466:12;:39::i;:::-;9458:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9361:179;9550:18;9571:40;9585:6;9593:9;9604:6;9571:13;:40::i;:::-;9550:61;;9622:23;9657:10;9648:6;:19;;;;:::i;:::-;9622:45;;9718:6;9698:9;:17;9708:6;9698:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9678:9;:17;9688:6;9678:17;;;;;;;;;;;;;;;:46;;;;9749:10;9735;;:24;;;;;;;:::i;:::-;;;;;;;;9816:15;9793:9;:20;9803:9;9793:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9770:9;:20;9780:9;9770:20;;;;;;;;;;;;;;;:61;;;;9864:9;9847:35;;9856:6;9847:35;;;9875:6;9847:35;;;;;;:::i;:::-;;;;;;;;9900:4;9893:11;;;;8838:1074;;;;;:::o;13595:265::-;13685:1;13676:6;:10;13671:182;;;13729:6;13704:9;:21;13714:10;13704:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13775:6;13750:9;:21;13768:1;13750:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13830:1;13801:40;;13810:10;13801:40;;;13834:6;13801:40;;;;;;:::i;:::-;;;;;;;;13671:182;13595:265;;:::o;8130:385::-;8233:24;8260:8;;;;;;;;;;;8233:35;;8284:8;8279:50;;;8324:1;8297:29;;8279:50;8339:28;8354:12;8339:14;:28::i;:::-;8378:18;;;;;;;;;;;:34;;;8420:13;8445:4;8452:12;8466:1;8469;8472:16;8490:15;8378:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8222:293;8130:385;;;:::o;8523:307::-;8605:3;8601:1;2606;2668:2;:13;;;;:::i;:::-;2654:10;:28;;;;:::i;:::-;8586:16;;;;:::i;:::-;:22;;;;:::i;:::-;8567:12;:41;;;;8658:3;8654:1;2606;2668:2;:13;;;;:::i;:::-;2654:10;:28;;;;:::i;:::-;8639:16;;;;:::i;:::-;:22;;;;:::i;:::-;8620:16;:41;;;;8687:4;8672:12;;:19;;;;;;;;;;;;;;;;;;8717:12;8702;:27;;;;8806:16;;;;;;;;;;;8756:66;;8787:16;;;;;;;;;;;8756:47;;8772:12;;8756:13;;:28;;;;:::i;:::-;:47;;;;:::i;:::-;:66;;;;:::i;:::-;8740:13;:82;;;;8523:307::o;13868:1268::-;4513:4;4500:10;;:17;;;;;;;;;;;;;;;;;;13929:27:::1;13959:10;;13929:40;;14008:11;;13985:19;:34;;:50;;;;;14023:12;;;;;;;;;;;13985:50;13980:1149;;;14081:11;;14058:19;:34;14053:80;;14119:11;;14097:33;;14053:80;14147:20;14225:1;14207:15:::0;::::1;;;;;;;;;;14170:52;;14192:12;;;;;;;;;;;14170:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;14147:79;;14255:21;14301:12;14279:19;:34;;;;:::i;:::-;14255:58;;2606:1;14348:2;:13;;;;:::i;:::-;14332;:29;14328:639;;;14383:19;14405:21;14383:43;;14473:19;14445:9;:24;14463:4;14445:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;14511:35;14532:13;14511:20;:35::i;:::-;14579:19;14565:10;;:33;;;;;;;:::i;:::-;;;;;;;;14617:19;14663:11;14639:21;:35;;;;:::i;:::-;14617:57;;14713:1;14698:12;;;;;;;;;;;:16;;;14693:259;;;14740:21;14793:15;;;;;;;;;;;14764:44;;14778:12;;;;;;;;;;;14764:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;14740:68;;14832:28;14847:12;14832:14;:28::i;:::-;14883:49;14897:12;14911:13;14926:5;14883:13;:49::i;:::-;14717:235;14693:259;14364:603;;14328:639;14981:27;15011:21;14981:51;;15072:1;15050:19;:23;15047:71;;;15077:38;15095:19;15077:17;:38::i;:::-;15047:71;14038:1091;;;13980:1149;13918:1218;4555:5:::0;4542:10;;:18;;;;;;;;;;;;;;;;;;13868:1268::o;9920:495::-;10024:4;10041:21;10065:4;10041:28;;10085:12;;;;;;;;;;;:34;;;;;10102:9;:17;10112:6;10102:17;;;;;;;;;;;;;;;;;;;;;;;;;10101:18;10085:34;:59;;;;;10124:9;:20;10134:9;10124:20;;;;;;;;;;;;;;;;;;;;;;;;;10123:21;10085:59;10080:294;;;10184:12;;10167:14;:29;10162:201;;;10220:5;10201:24;;10162:201;;;10253:5;:16;10259:9;10253:16;;;;;;;;;;;;;;;;;;;;;;;;;10252:17;:79;;;;;10314:16;;10297:14;10274:9;:20;10284:9;10274:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;10252:79;10247:116;;;10355:5;10336:24;;10247:116;10162:201;10080:294;10391:16;10384:23;;;9920:495;;;;;:::o;10710:847::-;10807:7;10827:17;10871:12;;;;;;;;;;;10870:13;:32;;;;10887:7;:15;10895:6;10887:15;;;;;;;;;;;;;;;;;;;;;;;;;10870:32;:54;;;;10906:7;:18;10914:9;10906:18;;;;;;;;;;;;;;;;;;;;;;;;;10870:54;10865:656;;;10955:1;10943:13;;10865:656;;;10980:5;:13;10986:6;10980:13;;;;;;;;;;;;;;;;;;;;;;;;;10975:546;;;11067:16;;;;;;;;;;;11033:50;;11048:16;;;;;;;;;;;11033:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;11017:12;:66;11012:400;;11140:3;11126:11;;;;;;;;;;;11117:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;11105:38;;11012:400;;;11202:16;;;;;;;;;;;11187:31;;:12;;:31;;;;:::i;:::-;11171:12;:47;11166:246;;11277:3;11261:13;;;;;;;;;;;11252:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11240:40;;11166:246;;;11323:12;;11307;:28;11302:110;;11393:3;11377:13;;;;;;;;;;;11368:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11356:40;;11302:110;11166:246;11012:400;10975:546;;;11434:5;:16;11440:9;11434:16;;;;;;;;;;;;;;;;;;;;;;;;;11429:92;;;11505:3;11490:12;;;;;;;;;;;11481:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11469:39;;11429:92;10975:546;10865:656;11540:9;11533:16;;;10710:847;;;;;:::o;6992:317::-;7112:12;7063:11;:26;7083:4;7063:26;;;;;;;;;;;;;;;:46;4171:42;7063:46;;;;;;;;;;;;;;;;:61;7058:244;;;7191:17;7142:11;:26;7162:4;7142:26;;;;;;;;;;;;;;;:46;4171:42;7142:46;;;;;;;;;;;;;;;:66;;;;4171:42;7228:62;;7245:4;7228:62;;;7272:17;7228:62;;;;;;:::i;:::-;;;;;;;;7058:244;6992:317;:::o;15144:366::-;15214:27;15229:11;15214:14;:27::i;:::-;15252:21;15290:1;15276:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15252:40;;15321:4;15303;15308:1;15303:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15347:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15337:4;15342:1;15337:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;15383:18;;;;;;;;;;;:69;;;15453:11;15465:1;15467:4;15480;15486:15;15383:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15203:307;15144:366;:::o;15518:517::-;15580:21;15626:17;;;;;;;;;;;15604:19;;;;;;;;;;:39;;;;:::i;:::-;15580:63;;15675:1;15658:14;:18;;;15654:374;;;15693:23;15750:14;15719:45;;15728:19;;;;;;;;;;15719:28;;:6;:28;;;;:::i;:::-;:45;;;;:::i;:::-;15693:71;;15779:21;15832:14;15803:43;;15812:17;;;;;;;;;;;15803:26;;:6;:26;;;;:::i;:::-;:43;;;;:::i;:::-;15779:67;;15884:1;15866:15;:19;15861:74;;;15890:16;;;;;;;;;;;:25;;:42;15916:15;15890:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15861:74;15970:1;15954:13;:17;15949:68;;;15976:14;;;;;;;;;;;:23;;:38;16000:13;15976:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15949:68;15678:350;;15654:374;15569:466;15518:517;:::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:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:118::-;4510:24;4528:5;4510:24;:::i;:::-;4505:3;4498:37;4423:118;;:::o;4547:222::-;4640:4;4678:2;4667:9;4663:18;4655:26;;4691:71;4759:1;4748:9;4744:17;4735:6;4691:71;:::i;:::-;4547:222;;;;:::o;4775:619::-;4852:6;4860;4868;4917:2;4905:9;4896:7;4892:23;4888:32;4885:119;;;4923:79;;:::i;:::-;4885:119;5043:1;5068:53;5113:7;5104:6;5093:9;5089:22;5068:53;:::i;:::-;5058:63;;5014:117;5170:2;5196:53;5241:7;5232:6;5221:9;5217:22;5196:53;:::i;:::-;5186:63;;5141:118;5298:2;5324:53;5369:7;5360:6;5349:9;5345:22;5324:53;:::i;:::-;5314:63;;5269:118;4775:619;;;;;:::o;5400:86::-;5435:7;5475:4;5468:5;5464:16;5453:27;;5400:86;;;:::o;5492:112::-;5575:22;5591:5;5575:22;:::i;:::-;5570:3;5563:35;5492:112;;:::o;5610:214::-;5699:4;5737:2;5726:9;5722:18;5714:26;;5750:67;5814:1;5803:9;5799:17;5790:6;5750:67;:::i;:::-;5610:214;;;;:::o;5830:89::-;5866:7;5906:6;5899:5;5895:18;5884:29;;5830:89;;;:::o;5925:120::-;5997:23;6014:5;5997:23;:::i;:::-;5990:5;5987:34;5977:62;;6035:1;6032;6025:12;5977:62;5925:120;:::o;6051:137::-;6096:5;6134:6;6121:20;6112:29;;6150:32;6176:5;6150:32;:::i;:::-;6051:137;;;;:::o;6194:470::-;6260:6;6268;6317:2;6305:9;6296:7;6292:23;6288:32;6285:119;;;6323:79;;:::i;:::-;6285:119;6443:1;6468:52;6512:7;6503:6;6492:9;6488:22;6468:52;:::i;:::-;6458:62;;6414:116;6569:2;6595:52;6639:7;6630:6;6619:9;6615:22;6595:52;:::i;:::-;6585:62;;6540:117;6194:470;;;;;:::o;6670:329::-;6729:6;6778:2;6766:9;6757:7;6753:23;6749:32;6746:119;;;6784:79;;:::i;:::-;6746:119;6904:1;6929:53;6974:7;6965:6;6954:9;6950:22;6929:53;:::i;:::-;6919:63;;6875:117;6670:329;;;;:::o;7005:::-;7064:6;7113:2;7101:9;7092:7;7088:23;7084:32;7081:119;;;7119:79;;:::i;:::-;7081:119;7239:1;7264:53;7309:7;7300:6;7289:9;7285:22;7264:53;:::i;:::-;7254:63;;7210:117;7005:329;;;;:::o;7340:115::-;7425:23;7442:5;7425:23;:::i;:::-;7420:3;7413:36;7340:115;;:::o;7461:430::-;7604:4;7642:2;7631:9;7627:18;7619:26;;7655:69;7721:1;7710:9;7706:17;7697:6;7655:69;:::i;:::-;7734:70;7800:2;7789:9;7785:18;7776:6;7734:70;:::i;:::-;7814;7880:2;7869:9;7865:18;7856:6;7814:70;:::i;:::-;7461:430;;;;;;:::o;7897:474::-;7965:6;7973;8022:2;8010:9;8001:7;7997:23;7993:32;7990:119;;;8028:79;;:::i;:::-;7990:119;8148:1;8173:53;8218:7;8209:6;8198:9;8194:22;8173:53;:::i;:::-;8163:63;;8119:117;8275:2;8301:53;8346:7;8337:6;8326:9;8322:22;8301:53;:::i;:::-;8291:63;;8246:118;7897:474;;;;;:::o;8377:104::-;8422:7;8451:24;8469:5;8451:24;:::i;:::-;8440:35;;8377:104;;;:::o;8487:138::-;8568:32;8594:5;8568:32;:::i;:::-;8561:5;8558:43;8548:71;;8615:1;8612;8605:12;8548:71;8487:138;:::o;8631:155::-;8685:5;8723:6;8710:20;8701:29;;8739:41;8774:5;8739:41;:::i;:::-;8631:155;;;;:::o;8792:345::-;8859:6;8908:2;8896:9;8887:7;8883:23;8879:32;8876:119;;;8914:79;;:::i;:::-;8876:119;9034:1;9059:61;9112:7;9103:6;9092:9;9088:22;9059:61;:::i;:::-;9049:71;;9005:125;8792:345;;;;:::o;9143:174::-;9283:26;9279:1;9271:6;9267:14;9260:50;9143:174;:::o;9323:366::-;9465:3;9486:67;9550:2;9545:3;9486:67;:::i;:::-;9479:74;;9562:93;9651:3;9562:93;:::i;:::-;9680:2;9675:3;9671:12;9664:19;;9323:366;;;:::o;9695:419::-;9861:4;9899:2;9888:9;9884:18;9876:26;;9948:9;9942:4;9938:20;9934:1;9923:9;9919:17;9912:47;9976:131;10102:4;9976:131;:::i;:::-;9968:139;;9695:419;;;:::o;10120:173::-;10260:25;10256:1;10248:6;10244:14;10237:49;10120:173;:::o;10299:366::-;10441:3;10462:67;10526:2;10521:3;10462:67;:::i;:::-;10455:74;;10538:93;10627:3;10538:93;:::i;:::-;10656:2;10651:3;10647:12;10640:19;;10299:366;;;:::o;10671:419::-;10837:4;10875:2;10864:9;10860:18;10852:26;;10924:9;10918:4;10914:20;10910:1;10899:9;10895:17;10888:47;10952:131;11078:4;10952:131;:::i;:::-;10944:139;;10671:419;;;:::o;11096:180::-;11144:77;11141:1;11134:88;11241:4;11238:1;11231:15;11265:4;11262:1;11255:15;11282:102;11324:8;11371:5;11368:1;11364:13;11343:34;;11282:102;;;:::o;11390:848::-;11451:5;11458:4;11482:6;11473:15;;11506:5;11497:14;;11520:712;11541:1;11531:8;11528:15;11520:712;;;11636:4;11631:3;11627:14;11621:4;11618:24;11615:50;;;11645:18;;:::i;:::-;11615:50;11695:1;11685:8;11681:16;11678:451;;;12110:4;12103:5;12099:16;12090:25;;11678:451;12160:4;12154;12150:15;12142:23;;12190:32;12213:8;12190:32;:::i;:::-;12178:44;;11520:712;;;11390:848;;;;;;;:::o;12244:1073::-;12298:5;12489:8;12479:40;;12510:1;12501:10;;12512:5;;12479:40;12538:4;12528:36;;12555:1;12546:10;;12557:5;;12528:36;12624:4;12672:1;12667:27;;;;12708:1;12703:191;;;;12617:277;;12667:27;12685:1;12676:10;;12687:5;;;12703:191;12748:3;12738:8;12735:17;12732:43;;;12755:18;;:::i;:::-;12732:43;12804:8;12801:1;12797:16;12788:25;;12839:3;12832:5;12829:14;12826:40;;;12846:18;;:::i;:::-;12826:40;12879:5;;;12617:277;;13003:2;12993:8;12990:16;12984:3;12978:4;12975:13;12971:36;12953:2;12943:8;12940:16;12935:2;12929:4;12926:12;12922:35;12906:111;12903:246;;;13059:8;13053:4;13049:19;13040:28;;13094:3;13087:5;13084:14;13081:40;;;13101:18;;:::i;:::-;13081:40;13134:5;;12903:246;13174:42;13212:3;13202:8;13196:4;13193:1;13174:42;:::i;:::-;13159:57;;;;13248:4;13243:3;13239:14;13232:5;13229:25;13226:51;;;13257:18;;:::i;:::-;13226:51;13306:4;13299:5;13295:16;13286:25;;12244:1073;;;;;;:::o;13323:281::-;13381:5;13405:23;13423:4;13405:23;:::i;:::-;13397:31;;13449:25;13465:8;13449:25;:::i;:::-;13437:37;;13493:104;13530:66;13520:8;13514:4;13493:104;:::i;:::-;13484:113;;13323:281;;;;:::o;13610:410::-;13650:7;13673:20;13691:1;13673:20;:::i;:::-;13668:25;;13707:20;13725:1;13707:20;:::i;:::-;13702:25;;13762:1;13759;13755:9;13784:30;13802:11;13784:30;:::i;:::-;13773:41;;13963:1;13954:7;13950:15;13947:1;13944:22;13924:1;13917:9;13897:83;13874:139;;13993:18;;:::i;:::-;13874:139;13658:362;13610:410;;;;:::o;14026:166::-;14166:18;14162:1;14154:6;14150:14;14143:42;14026:166;:::o;14198:366::-;14340:3;14361:67;14425:2;14420:3;14361:67;:::i;:::-;14354:74;;14437:93;14526:3;14437:93;:::i;:::-;14555:2;14550:3;14546:12;14539:19;;14198:366;;;:::o;14570:419::-;14736:4;14774:2;14763:9;14759:18;14751:26;;14823:9;14817:4;14813:20;14809:1;14798:9;14794:17;14787:47;14851:131;14977:4;14851:131;:::i;:::-;14843:139;;14570:419;;;:::o;14995:194::-;15035:4;15055:20;15073:1;15055:20;:::i;:::-;15050:25;;15089:20;15107:1;15089:20;:::i;:::-;15084:25;;15133:1;15130;15126:9;15118:17;;15157:1;15151:4;15148:11;15145:37;;;15162:18;;:::i;:::-;15145:37;14995:194;;;;:::o;15195:180::-;15243:77;15240:1;15233:88;15340:4;15337:1;15330:15;15364:4;15361:1;15354:15;15381:185;15421:1;15438:20;15456:1;15438:20;:::i;:::-;15433:25;;15472:20;15490:1;15472:20;:::i;:::-;15467:25;;15511:1;15501:35;;15516:18;;:::i;:::-;15501:35;15558:1;15555;15551:9;15546:14;;15381:185;;;;:::o;15572:191::-;15612:3;15631:20;15649:1;15631:20;:::i;:::-;15626:25;;15665:20;15683:1;15665:20;:::i;:::-;15660:25;;15708:1;15705;15701:9;15694:16;;15729:3;15726:1;15723:10;15720:36;;;15736:18;;:::i;:::-;15720:36;15572:191;;;;:::o;15769:160::-;15909:12;15905:1;15897:6;15893:14;15886:36;15769:160;:::o;15935:366::-;16077:3;16098:67;16162:2;16157:3;16098:67;:::i;:::-;16091:74;;16174:93;16263:3;16174:93;:::i;:::-;16292:2;16287:3;16283:12;16276:19;;15935:366;;;:::o;16307:419::-;16473:4;16511:2;16500:9;16496:18;16488:26;;16560:9;16554:4;16550:20;16546:1;16535:9;16531:17;16524:47;16588:131;16714:4;16588:131;:::i;:::-;16580:139;;16307:419;;;:::o;16732:164::-;16872:16;16868:1;16860:6;16856:14;16849:40;16732:164;:::o;16902:366::-;17044:3;17065:67;17129:2;17124:3;17065:67;:::i;:::-;17058:74;;17141:93;17230:3;17141:93;:::i;:::-;17259:2;17254:3;17250:12;17243:19;;16902:366;;;:::o;17274:419::-;17440:4;17478:2;17467:9;17463:18;17455:26;;17527:9;17521:4;17517:20;17513:1;17502:9;17498:17;17491:47;17555:131;17681:4;17555:131;:::i;:::-;17547:139;;17274:419;;;:::o;17699:165::-;17839:17;17835:1;17827:6;17823:14;17816:41;17699:165;:::o;17870:366::-;18012:3;18033:67;18097:2;18092:3;18033:67;:::i;:::-;18026:74;;18109:93;18198:3;18109:93;:::i;:::-;18227:2;18222:3;18218:12;18211:19;;17870:366;;;:::o;18242:419::-;18408:4;18446:2;18435:9;18431:18;18423:26;;18495:9;18489:4;18485:20;18481:1;18470:9;18466:17;18459:47;18523:131;18649:4;18523:131;:::i;:::-;18515:139;;18242:419;;;:::o;18667:159::-;18807:11;18803:1;18795:6;18791:14;18784:35;18667:159;:::o;18832:365::-;18974:3;18995:66;19059:1;19054:3;18995:66;:::i;:::-;18988:73;;19070:93;19159:3;19070:93;:::i;:::-;19188:2;19183:3;19179:12;19172:19;;18832:365;;;:::o;19203:419::-;19369:4;19407:2;19396:9;19392:18;19384:26;;19456:9;19450:4;19446:20;19442:1;19431:9;19427:17;19420:47;19484:131;19610:4;19484:131;:::i;:::-;19476:139;;19203:419;;;:::o;19628:165::-;19768:17;19764:1;19756:6;19752:14;19745:41;19628:165;:::o;19799:366::-;19941:3;19962:67;20026:2;20021:3;19962:67;:::i;:::-;19955:74;;20038:93;20127:3;20038:93;:::i;:::-;20156:2;20151:3;20147:12;20140:19;;19799:366;;;:::o;20171:419::-;20337:4;20375:2;20364:9;20360:18;20352:26;;20424:9;20418:4;20414:20;20410:1;20399:9;20395:17;20388:47;20452:131;20578:4;20452:131;:::i;:::-;20444:139;;20171:419;;;:::o;20596:179::-;20736:31;20732:1;20724:6;20720:14;20713:55;20596:179;:::o;20781:366::-;20923:3;20944:67;21008:2;21003:3;20944:67;:::i;:::-;20937:74;;21020:93;21109:3;21020:93;:::i;:::-;21138:2;21133:3;21129:12;21122:19;;20781:366;;;:::o;21153:419::-;21319:4;21357:2;21346:9;21342:18;21334:26;;21406:9;21400:4;21396:20;21392:1;21381:9;21377:17;21370:47;21434:131;21560:4;21434:131;:::i;:::-;21426:139;;21153:419;;;:::o;21578:171::-;21718:23;21714:1;21706:6;21702:14;21695:47;21578:171;:::o;21755:366::-;21897:3;21918:67;21982:2;21977:3;21918:67;:::i;:::-;21911:74;;21994:93;22083:3;21994:93;:::i;:::-;22112:2;22107:3;22103:12;22096:19;;21755:366;;;:::o;22127:419::-;22293:4;22331:2;22320:9;22316:18;22308:26;;22380:9;22374:4;22370:20;22366:1;22355:9;22351:17;22344:47;22408:131;22534:4;22408:131;:::i;:::-;22400:139;;22127:419;;;:::o;22552:143::-;22609:5;22640:6;22634:13;22625:22;;22656:33;22683:5;22656:33;:::i;:::-;22552:143;;;;:::o;22701:351::-;22771:6;22820:2;22808:9;22799:7;22795:23;22791:32;22788:119;;;22826:79;;:::i;:::-;22788:119;22946:1;22971:64;23027:7;23018:6;23007:9;23003:22;22971:64;:::i;:::-;22961:74;;22917:128;22701:351;;;;:::o;23058:332::-;23179:4;23217:2;23206:9;23202:18;23194:26;;23230:71;23298:1;23287:9;23283:17;23274:6;23230:71;:::i;:::-;23311:72;23379:2;23368:9;23364:18;23355:6;23311:72;:::i;:::-;23058:332;;;;;:::o;23396:98::-;23447:6;23481:5;23475:12;23465:22;;23396:98;;;:::o;23500:147::-;23601:11;23638:3;23623:18;;23500:147;;;;:::o;23653:386::-;23757:3;23785:38;23817:5;23785:38;:::i;:::-;23839:88;23920:6;23915:3;23839:88;:::i;:::-;23832:95;;23936:65;23994:6;23989:3;23982:4;23975:5;23971:16;23936:65;:::i;:::-;24026:6;24021:3;24017:16;24010:23;;23761:278;23653:386;;;;:::o;24045:271::-;24175:3;24197:93;24286:3;24277:6;24197:93;:::i;:::-;24190:100;;24307:3;24300:10;;24045:271;;;;:::o;24322:173::-;24462:25;24458:1;24450:6;24446:14;24439:49;24322:173;:::o;24501:366::-;24643:3;24664:67;24728:2;24723:3;24664:67;:::i;:::-;24657:74;;24740:93;24829:3;24740:93;:::i;:::-;24858:2;24853:3;24849:12;24842:19;;24501:366;;;:::o;24873:419::-;25039:4;25077:2;25066:9;25062:18;25054:26;;25126:9;25120:4;25116:20;25112:1;25101:9;25097:17;25090:47;25154:131;25280:4;25154:131;:::i;:::-;25146:139;;24873:419;;;:::o;25298:60::-;25326:3;25347:5;25340:12;;25298:60;;;:::o;25364:142::-;25414:9;25447:53;25465:34;25474:24;25492:5;25474:24;:::i;:::-;25465:34;:::i;:::-;25447:53;:::i;:::-;25434:66;;25364:142;;;:::o;25512:126::-;25562:9;25595:37;25626:5;25595:37;:::i;:::-;25582:50;;25512:126;;;:::o;25644:134::-;25702:9;25735:37;25766:5;25735:37;:::i;:::-;25722:50;;25644:134;;;:::o;25784:147::-;25879:45;25918:5;25879:45;:::i;:::-;25874:3;25867:58;25784:147;;:::o;25937:238::-;26038:4;26076:2;26065:9;26061:18;26053:26;;26089:79;26165:1;26154:9;26150:17;26141:6;26089:79;:::i;:::-;25937:238;;;;:::o;26181:179::-;26321:31;26317:1;26309:6;26305:14;26298:55;26181:179;:::o;26366:366::-;26508:3;26529:67;26593:2;26588:3;26529:67;:::i;:::-;26522:74;;26605:93;26694:3;26605:93;:::i;:::-;26723:2;26718:3;26714:12;26707:19;;26366:366;;;:::o;26738:419::-;26904:4;26942:2;26931:9;26927:18;26919:26;;26991:9;26985:4;26981:20;26977:1;26966:9;26962:17;26955:47;27019:131;27145:4;27019:131;:::i;:::-;27011:139;;26738:419;;;:::o;27163:161::-;27303:13;27299:1;27291:6;27287:14;27280:37;27163:161;:::o;27330:366::-;27472:3;27493:67;27557:2;27552:3;27493:67;:::i;:::-;27486:74;;27569:93;27658:3;27569:93;:::i;:::-;27687:2;27682:3;27678:12;27671:19;;27330:366;;;:::o;27702:419::-;27868:4;27906:2;27895:9;27891:18;27883:26;;27955:9;27949:4;27945:20;27941:1;27930:9;27926:17;27919:47;27983:131;28109:4;27983:131;:::i;:::-;27975:139;;27702:419;;;:::o;28127:167::-;28267:19;28263:1;28255:6;28251:14;28244:43;28127:167;:::o;28300:366::-;28442:3;28463:67;28527:2;28522:3;28463:67;:::i;:::-;28456:74;;28539:93;28628:3;28539:93;:::i;:::-;28657:2;28652:3;28648:12;28641:19;;28300:366;;;:::o;28672:419::-;28838:4;28876:2;28865:9;28861:18;28853:26;;28925:9;28919:4;28915:20;28911:1;28900:9;28896:17;28889:47;28953:131;29079:4;28953:131;:::i;:::-;28945:139;;28672:419;;;:::o;29097:85::-;29142:7;29171:5;29160:16;;29097:85;;;:::o;29188:158::-;29246:9;29279:61;29297:42;29306:32;29332:5;29306:32;:::i;:::-;29297:42;:::i;:::-;29279:61;:::i;:::-;29266:74;;29188:158;;;:::o;29352:147::-;29447:45;29486:5;29447:45;:::i;:::-;29442:3;29435:58;29352:147;;:::o;29505:807::-;29754:4;29792:3;29781:9;29777:19;29769:27;;29806:71;29874:1;29863:9;29859:17;29850:6;29806:71;:::i;:::-;29887:72;29955:2;29944:9;29940:18;29931:6;29887:72;:::i;:::-;29969:80;30045:2;30034:9;30030:18;30021:6;29969:80;:::i;:::-;30059;30135:2;30124:9;30120:18;30111:6;30059:80;:::i;:::-;30149:73;30217:3;30206:9;30202:19;30193:6;30149:73;:::i;:::-;30232;30300:3;30289:9;30285:19;30276:6;30232:73;:::i;:::-;29505:807;;;;;;;;;:::o;30318:143::-;30375:5;30406:6;30400:13;30391:22;;30422:33;30449:5;30422:33;:::i;:::-;30318:143;;;;:::o;30467:663::-;30555:6;30563;30571;30620:2;30608:9;30599:7;30595:23;30591:32;30588:119;;;30626:79;;:::i;:::-;30588:119;30746:1;30771:64;30827:7;30818:6;30807:9;30803:22;30771:64;:::i;:::-;30761:74;;30717:128;30884:2;30910:64;30966:7;30957:6;30946:9;30942:22;30910:64;:::i;:::-;30900:74;;30855:129;31023:2;31049:64;31105:7;31096:6;31085:9;31081:22;31049:64;:::i;:::-;31039:74;;30994:129;30467:663;;;;;:::o;31136:180::-;31184:77;31181:1;31174:88;31281:4;31278:1;31271:15;31305:4;31302:1;31295:15;31322:180;31370:77;31367:1;31360:88;31467:4;31464:1;31457:15;31491:4;31488:1;31481:15;31508:114;31575:6;31609:5;31603:12;31593:22;;31508:114;;;:::o;31628:184::-;31727:11;31761:6;31756:3;31749:19;31801:4;31796:3;31792:14;31777:29;;31628:184;;;;:::o;31818:132::-;31885:4;31908:3;31900:11;;31938:4;31933:3;31929:14;31921:22;;31818:132;;;:::o;31956:108::-;32033:24;32051:5;32033:24;:::i;:::-;32028:3;32021:37;31956:108;;:::o;32070:179::-;32139:10;32160:46;32202:3;32194:6;32160:46;:::i;:::-;32238:4;32233:3;32229:14;32215:28;;32070:179;;;;:::o;32255:113::-;32325:4;32357;32352:3;32348:14;32340:22;;32255:113;;;:::o;32404:732::-;32523:3;32552:54;32600:5;32552:54;:::i;:::-;32622:86;32701:6;32696:3;32622:86;:::i;:::-;32615:93;;32732:56;32782:5;32732:56;:::i;:::-;32811:7;32842:1;32827:284;32852:6;32849:1;32846:13;32827:284;;;32928:6;32922:13;32955:63;33014:3;32999:13;32955:63;:::i;:::-;32948:70;;33041:60;33094:6;33041:60;:::i;:::-;33031:70;;32887:224;32874:1;32871;32867:9;32862:14;;32827:284;;;32831:14;33127:3;33120:10;;32528:608;;;32404:732;;;;:::o;33142:831::-;33405:4;33443:3;33432:9;33428:19;33420:27;;33457:71;33525:1;33514:9;33510:17;33501:6;33457:71;:::i;:::-;33538:80;33614:2;33603:9;33599:18;33590:6;33538:80;:::i;:::-;33665:9;33659:4;33655:20;33650:2;33639:9;33635:18;33628:48;33693:108;33796:4;33787:6;33693:108;:::i;:::-;33685:116;;33811:72;33879:2;33868:9;33864:18;33855:6;33811:72;:::i;:::-;33893:73;33961:3;33950:9;33946:19;33937:6;33893:73;:::i;:::-;33142:831;;;;;;;;:::o;33979:193::-;34018:3;34037:19;34054:1;34037:19;:::i;:::-;34032:24;;34070:19;34087:1;34070:19;:::i;:::-;34065:24;;34112:1;34109;34105:9;34098:16;;34135:6;34130:3;34127:15;34124:41;;;34145:18;;:::i;:::-;34124:41;33979:193;;;;:::o

Swarm Source

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