ETH Price: $2,475.83 (-0.03%)

Token

Arbi Bot (ARBI)
 

Overview

Max Total Supply

10,000,000,000 ARBI

Holders

77

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
11,126,248.285565389 ARBI

Value
$0.00
0x730b17144c94FB8890B34c6A186ee7006978aA6F
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:
Arbi

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-12
*/

//SPDX-License-Identifier: MIT

/*

 https://t.me/arbiboteth
 https://twitter.com/arbiboteth 
 https://arbibot.app

 */

pragma solidity 0.8.21;


abstract contract Auth {
    address internal _owner;
    constructor(address creator_Owner) { 
        _owner = creator_Owner; 
    }
    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);
}

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

contract Arbi is IERC20, Auth {
    uint8 private constant _decim    = 9;
    uint256 private constant _totSup = 10000000000 * (10**_decim);
    string private constant _name    = "Arbi Bot";
    string private constant _symbol  = "ARBI";

    uint8 private _buyTaxRate  = 1;
    uint8 private _sellTaxRate = 10;
    address payable private _walletMarketing = payable(0x4Cb661d441AcAF12b05fd6A1cDE3C6b284bAF0AA); 

    uint256 private _maxTxAmount     = _totSup; 
    uint256 private _maxWalletAmount = _totSup;
    uint256 private _taxSwpMin = _totSup * 10 / 100000;
    uint256 private _taxSwpMax = _totSup * 67 / 100000;
    uint256 private _swapLimit = _taxSwpMin * 67 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFee;
    mapping (address => bool) private _noLimit;

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

    bool private _tradingOpen;

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

    constructor() Auth(msg.sender) {
        _balances[address(_owner)] = _totSup;
        emit Transfer(address(0), address(_owner), _balances[address(_owner)]);

        _noFee[_owner] = true;
        _noFee[address(this)] = true;
        _noFee[_swapRouterAddr] = true;
        _noFee[_walletMarketing] = true;
        _noLimit[_owner] = true;
        _noLimit[address(this)] = true;
        _noLimit[_swapRouterAddr] = true;
        _noLimit[_walletMarketing] = true;
    }

    receive() external payable {}
    
    function totalSupply() external pure override returns (uint256) { return _totSup; }
    function decimals() external pure override returns (uint8) { return _decim; }
    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 _transfer(msg.sender, recipient, amount);
    }

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

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

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingOpen, "trading already 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 lpAddSucc,) = _primaryLP.call(abi.encodeWithSignature("sync()"));
        require(lpAddSucc, "Failed adding liquidity");
        _isLP[_primaryLP] = lpAddSucc;
    }

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

    function enableTrading() external onlyOwner {
        _openTrading();
    }

    function _openTrading() internal {
        require(!_tradingOpen, "trading already open");
        _maxTxAmount     = _totSup * 2 / 100; 
        _maxWalletAmount = _totSup * 2 / 100;
        _tradingOpen = true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFee[sender] && _noLimit[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] && !_noFee[sender]) { _swapTaxAndLiquify(); }
        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 && !_noLimit[sender] && !_noLimit[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 (_noFee[sender] && _noLimit[sender]) { checkResult = true; } 
        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingOpen || _noFee[sender] || _noFee[recipient] ) { taxAmount = 0; } 
        else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; } 
        else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; }
        return taxAmount;
    }

    function exempt(address wallet) external view returns (bool fees, bool limits) {
        return (_noFee[wallet],_noLimit[wallet]);
    }
    function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
        _noFee[ wallet ] = noFees;
        _noLimit[ wallet ] = noLimits;
    }

    function buyFee() external view returns(uint8) {
        return _buyTaxRate;
    }
    function sellFee() external view returns(uint8) {
        return _sellTaxRate;
    }

    function setFees(uint8 buy, uint8 sell) external onlyOwner {
        require(buy + sell <= 2, "Roundtrip too high");
        _buyTaxRate = buy;
        _sellTaxRate = sell;
    }  

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

    function updateWallets(address marketing) external onlyOwner {
        require(!_isLP[marketing], "LP cannot be tax wallet");
        _walletMarketing = payable(marketing);
        _noFee[marketing] = true;
        _noLimit[marketing] = true;
    }

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

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

    function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
        _taxSwpMin = _totSup * minValue / minDivider;
        _taxSwpMax = _totSup * maxValue / maxDivider;
        require(_taxSwpMax>=_taxSwpMin, "Min/Max error");
        require(_taxSwpMax>_totSup / 100000, "Max too low");
        require(_taxSwpMax<_totSup / 100, "Max too high");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = _swapLimit;
        if ( _taxTokensAvailable >= _taxSwpMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwpMax ) { _taxTokensAvailable = _taxSwpMax; }
            uint256 _tokensToSwap = _taxTokensAvailable;
            if( _tokensToSwap > 10**_decim ) {
                _balances[address(this)] += _taxTokensAvailable;
                _swapTaxTokensForEth(_tokensToSwap);
                _swapLimit -= _taxTokensAvailable;
            }
            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 {
        _walletMarketing.transfer(amount);
    }

    function manualSwap() external onlyOwner lockTaxSwap {
        _swapTaxTokensForEth(_balances[address(this)]);
        _distributeTaxEth(address(this).balance); 
    }

}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"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":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exempt","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","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":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260015f60146101000a81548160ff021916908360ff160217905550600a5f60156101000a81548160ff021916908360ff160217905550734cb661d441acaf12b05fd6a1cde3c6b284baf0aa60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200009e91906200088c565b6402540be400620000b09190620008dc565b6002556009600a620000c391906200088c565b6402540be400620000d59190620008dc565b600355620186a0600a6009600a620000ee91906200088c565b6402540be400620001009190620008dc565b6200010c9190620008dc565b62000118919062000953565b600455620186a060436009600a6200013191906200088c565b6402540be400620001439190620008dc565b6200014f9190620008dc565b6200015b919062000953565b60055560646043600454620001719190620008dc565b6200017d9190620008dc565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600e60016101000a81548160ff021916908315150217905550348015620001fa575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506009600a6200024c91906200088c565b6402540be4006200025e9190620008dc565b60075f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200039a91906200099b565b60405180910390a3600160095f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620009b6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000784578086048111156200075c576200075b620006fa565b5b60018516156200076c5780820291505b80810290506200077c8562000727565b94506200073c565b94509492505050565b5f826200079e576001905062000870565b81620007ad575f905062000870565b8160018114620007c65760028114620007d15762000807565b600191505062000870565b60ff841115620007e657620007e5620006fa565b5b8360020a9150848211156200080057620007ff620006fa565b5b5062000870565b5060208310610133831016604e8410600b8410161715620008415782820a9050838111156200083b576200083a620006fa565b5b62000870565b62000850848484600162000733565b925090508184048111156200086a5762000869620006fa565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620008988262000877565b9150620008a58362000880565b9250620008d47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200078d565b905092915050565b5f620008e88262000877565b9150620008f58362000877565b9250828202620009058162000877565b915082820484148315176200091f576200091e620006fa565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200095f8262000877565b91506200096c8362000877565b9250826200097f576200097e62000926565b5b828204905092915050565b620009958162000877565b82525050565b5f602082019050620009b05f8301846200098a565b92915050565b61414f80620009c45f395ff3fe608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063e8078d9411610063578063e8078d941461053f578063f1320af214610549578063f2fde38b14610586578063f8b45b05146105ae5761018b565b8063a9059cbb1461049d578063c3f70b52146104d9578063dd62ed3e146105035761018b565b8063715018a6146103cb57806375f0a874146103e15780638a8c523c1461040b5780638da5cb5b1461042157806395d89b411461044b578063a6097b0a146104755761018b565b8063313ce5671161013d5780634fcd2446116101175780634fcd24461461032957806351bc3c851461035157806357ff135a1461036757806370a082311461038f5761018b565b8063313ce567146102ad578063368f4800146102d757806347062402146102ff5761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806323b872dd1461021f5780632851a5cf1461025b5780632b14ca56146102835761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105d8565b6040516101b09190612eda565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612f8b565b610615565b6040516101ec9190612fe3565b60405180910390f35b348015610200575f80fd5b50610209610702565b604051610216919061300b565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190613024565b610726565b6040516102529190612fe3565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190613074565b610811565b005b34801561028e575f80fd5b50610297610a15565b6040516102a491906130ba565b60405180910390f35b3480156102b8575f80fd5b506102c1610a2a565b6040516102ce91906130ba565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f8919061310a565b610a32565b005b34801561030a575f80fd5b50610313610bef565b60405161032091906130ba565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190613172565b610c04565b005b34801561035c575f80fd5b50610365610d1b565b005b348015610372575f80fd5b5061038d600480360381019061038891906131da565b610e2e565b005b34801561039a575f80fd5b506103b560048036038101906103b09190613074565b611001565b6040516103c2919061300b565b60405180910390f35b3480156103d6575f80fd5b506103df611047565b005b3480156103ec575f80fd5b506103f561114c565b6040516104029190613239565b60405180910390f35b348015610416575f80fd5b5061041f611174565b005b34801561042c575f80fd5b5061043561120b565b6040516104429190613239565b60405180910390f35b348015610456575f80fd5b5061045f611232565b60405161046c9190612eda565b60405180910390f35b348015610480575f80fd5b5061049b6004803603810190610496919061328b565b61126f565b005b3480156104a8575f80fd5b506104c360048036038101906104be9190612f8b565b6114b1565b6040516104d09190612fe3565b60405180910390f35b3480156104e4575f80fd5b506104ed61150d565b6040516104fa919061300b565b60405180910390f35b34801561050e575f80fd5b50610529600480360381019061052491906132ef565b611516565b604051610536919061300b565b60405180910390f35b610547611598565b005b348015610554575f80fd5b5061056f600480360381019061056a9190613074565b611c58565b60405161057d92919061332d565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061338f565b611cf7565b005b3480156105b9575f80fd5b506105c2611dfd565b6040516105cf919061300b565b60405180910390f35b60606040518060400160405280600881526020017f4172626920426f74000000000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106f0919061300b565b60405180910390a36001905092915050565b5f6009600a6107119190613516565b6402540be4006107219190613560565b905090565b5f61073084611e06565b61076f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610766906135eb565b60405180910390fd5b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107f69190613609565b92505081905550610808848484611ed8565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089590613686565b60405180910390fd5b600d5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091f906136ee565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f8060159054906101000a900460ff16905090565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690613686565b60405180910390fd5b5f60016103e88461ffff166009600a610ad89190613516565b6402540be400610ae89190613560565b610af29190613560565b610afc9190613739565b610b069190613769565b9050600254811015610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b44906137e6565b60405180910390fd5b806002819055505f60016103e88461ffff166009600a610b6d9190613516565b6402540be400610b7d9190613560565b610b879190613560565b610b919190613739565b610b9b9190613769565b9050600354811015610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd99061384e565b60405180910390fd5b8060038190555050505050565b5f8060149054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890613686565b60405180910390fd5b60028183610c9f919061386c565b60ff161115610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906138ea565b60405180910390fd5b815f60146101000a81548160ff021916908360ff160217905550805f60156101000a81548160ff021916908360ff1602179055505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90613686565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550610e0960075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123c4565b610e12476125d7565b5f600e60016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290613686565b60405180910390fd5b8080610ec45750815b15610f5457600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90613952565b60405180910390fd5b5b8160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb90613686565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516111429190613239565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f890613686565b60405180910390fd5b61120961263f565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4152424900000000000000000000000000000000000000000000000000000000815250905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390613686565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6113189190613516565b6402540be4006113289190613560565b6113329190613560565b61133c9190613739565b6004819055508063ffffffff168263ffffffff166009600a61135e9190613516565b6402540be40061136e9190613560565b6113789190613560565b6113829190613739565b60058190555060045460055410156113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c6906139ba565b60405180910390fd5b620186a06009600a6113e19190613516565b6402540be4006113f19190613560565b6113fb9190613739565b6005541161143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613a22565b60405180910390fd5b60646009600a61144e9190613516565b6402540be40061145e9190613560565b6114689190613739565b600554106114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613a8a565b60405180910390fd5b50505050565b5f6114bb33611e06565b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f1906135eb565b60405180910390fd5b611505338484611ed8565b905092915050565b5f600254905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90613686565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690613af2565b60405180910390fd5b600e5f9054906101000a900460ff161561171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590613b5a565b60405180910390fd5b5f34118061172b57505f47115b61176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176190613bc2565b60405180910390fd5b5f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e090613c2a565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118779190613c5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119219190613c5c565b6040518363ffffffff1660e01b815260040161193e929190613c87565b6020604051808303815f875af115801561195a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197e9190613c5c565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a0560075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054475f612722565b60065460075f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a749190613609565b925050819055505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611b449190613cf2565b5f604051808303815f865af19150503d805f8114611b7d576040519150601f19603f3d011682016040523d82523d5f602084013e611b82565b606091505b5050905080611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90613d52565b60405180910390fd5b80600d5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f600e60016101000a81548160ff021916908315150217905550565b5f8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90613686565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611df29190613dcb565b60405180910390a150565b5f600354905090565b5f805f9050600e5f9054906101000a900460ff1615611e285760019050611ecf565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ec45750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611ece57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613e2e565b60405180910390fd5b600e5f9054906101000a900460ff166120365760095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ff65750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c906135eb565b60405180910390fd5b5b600e60019054906101000a900460ff161580156120995750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120ec575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120fa576120f9612808565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561216257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121b957505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612209576121c984848461291e565b612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90613e96565b60405180910390fd5b5b5f612215858585612aa6565b90505f81846122249190613609565b90508360075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461226f9190613609565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160065f8282546122c19190613769565b925050819055508060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123119190613769565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516123af919061300b565b60405180910390a36001925050509392505050565b6123cd81612c6e565b5f600267ffffffffffffffff8111156123e9576123e8613eb4565b5b6040519080825280602002602001820160405280156124175781602001602082028036833780820191505090505b50905030815f8151811061242e5761242d613ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f69190613c5c565b8160018151811061250a57612509613ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125a6959493929190613ffe565b5f604051808303815f87803b1580156125bd575f80fd5b505af11580156125cf573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561263b573d5f803e3d5ffd5b5050565b600e5f9054906101000a900460ff161561268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590613b5a565b60405180910390fd5b606460026009600a6126a09190613516565b6402540be4006126b09190613560565b6126ba9190613560565b6126c49190613739565b600281905550606460026009600a6126dc9190613516565b6402540be4006126ec9190613560565b6126f69190613560565b6127009190613739565b6003819055506001600e5f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612750575f90505b61275984612c6e565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198430875f8087426040518863ffffffff1660e01b81526004016127be96959493929190614056565b60606040518083038185885af11580156127da573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127ff91906140c9565b50505050505050565b6001600e60016101000a81548160ff0219169083151502179055505f600654905060045481101580156128465750600e5f9054906101000a900460ff165b1561290157600554811061285a5760055490505b5f8190506009600a61286c9190613516565b8111156128e8578160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546128bf9190613769565b925050819055506128cf816123c4565b8160065f8282546128e09190613609565b925050819055505b5f4790505f8111156128fe576128fd816125d7565b5b50505b505f600e60016101000a81548160ff021916908315150217905550565b5f8060019050600e5f9054906101000a900460ff1680156129865750600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129d95750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a9b576002548311156129f0575f9050612a9a565b600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612a9057506003548360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a8e9190613769565b115b15612a99575f90505b5b5b809150509392505050565b5f80600e5f9054906101000a900460ff161580612b09575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612b5a575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b67575f9050612c63565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612be65760645f60149054906101000a900460ff1660ff1684612bd59190613560565b612bdf9190613739565b9050612c62565b600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c615760645f60159054906101000a900460ff1660ff1684612c549190613560565b612c5e9190613739565b90505b5b5b809150509392505050565b8060085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612e4d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612e44919061300b565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e87578082015181840152602081019050612e6c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612eac82612e50565b612eb68185612e5a565b9350612ec6818560208601612e6a565b612ecf81612e92565b840191505092915050565b5f6020820190508181035f830152612ef28184612ea2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f2782612efe565b9050919050565b612f3781612f1d565b8114612f41575f80fd5b50565b5f81359050612f5281612f2e565b92915050565b5f819050919050565b612f6a81612f58565b8114612f74575f80fd5b50565b5f81359050612f8581612f61565b92915050565b5f8060408385031215612fa157612fa0612efa565b5b5f612fae85828601612f44565b9250506020612fbf85828601612f77565b9150509250929050565b5f8115159050919050565b612fdd81612fc9565b82525050565b5f602082019050612ff65f830184612fd4565b92915050565b61300581612f58565b82525050565b5f60208201905061301e5f830184612ffc565b92915050565b5f805f6060848603121561303b5761303a612efa565b5b5f61304886828701612f44565b935050602061305986828701612f44565b925050604061306a86828701612f77565b9150509250925092565b5f6020828403121561308957613088612efa565b5b5f61309684828501612f44565b91505092915050565b5f60ff82169050919050565b6130b48161309f565b82525050565b5f6020820190506130cd5f8301846130ab565b92915050565b5f61ffff82169050919050565b6130e9816130d3565b81146130f3575f80fd5b50565b5f81359050613104816130e0565b92915050565b5f80604083850312156131205761311f612efa565b5b5f61312d858286016130f6565b925050602061313e858286016130f6565b9150509250929050565b6131518161309f565b811461315b575f80fd5b50565b5f8135905061316c81613148565b92915050565b5f806040838503121561318857613187612efa565b5b5f6131958582860161315e565b92505060206131a68582860161315e565b9150509250929050565b6131b981612fc9565b81146131c3575f80fd5b50565b5f813590506131d4816131b0565b92915050565b5f805f606084860312156131f1576131f0612efa565b5b5f6131fe86828701612f44565b935050602061320f868287016131c6565b9250506040613220868287016131c6565b9150509250925092565b61323381612f1d565b82525050565b5f60208201905061324c5f83018461322a565b92915050565b5f63ffffffff82169050919050565b61326a81613252565b8114613274575f80fd5b50565b5f8135905061328581613261565b92915050565b5f805f80608085870312156132a3576132a2612efa565b5b5f6132b087828801613277565b94505060206132c187828801613277565b93505060406132d287828801613277565b92505060606132e387828801613277565b91505092959194509250565b5f806040838503121561330557613304612efa565b5b5f61331285828601612f44565b925050602061332385828601612f44565b9150509250929050565b5f6040820190506133405f830185612fd4565b61334d6020830184612fd4565b9392505050565b5f61335e82612efe565b9050919050565b61336e81613354565b8114613378575f80fd5b50565b5f8135905061338981613365565b92915050565b5f602082840312156133a4576133a3612efa565b5b5f6133b18482850161337b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561343c57808604811115613418576134176133ba565b5b60018516156134275780820291505b8081029050613435856133e7565b94506133fc565b94509492505050565b5f82613454576001905061350f565b81613461575f905061350f565b81600181146134775760028114613481576134b0565b600191505061350f565b60ff841115613493576134926133ba565b5b8360020a9150848211156134aa576134a96133ba565b5b5061350f565b5060208310610133831016604e8410600b84101617156134e55782820a9050838111156134e0576134df6133ba565b5b61350f565b6134f284848460016133f3565b92509050818404811115613509576135086133ba565b5b81810290505b9392505050565b5f61352082612f58565b915061352b8361309f565b92506135587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613445565b905092915050565b5f61356a82612f58565b915061357583612f58565b925082820261358381612f58565b9150828204841483151761359a576135996133ba565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f6135d5601083612e5a565b91506135e0826135a1565b602082019050919050565b5f6020820190508181035f830152613602816135c9565b9050919050565b5f61361382612f58565b915061361e83612f58565b9250828203905081811115613636576136356133ba565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732e000000000000005f82015250565b5f613670601983612e5a565b915061367b8261363c565b602082019050919050565b5f6020820190508181035f83015261369d81613664565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f6136d8601783612e5a565b91506136e3826136a4565b602082019050919050565b5f6020820190508181035f830152613705816136cc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61374382612f58565b915061374e83612f58565b92508261375e5761375d61370c565b5b828204905092915050565b5f61377382612f58565b915061377e83612f58565b9250828201905080821115613796576137956133ba565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f6137d0600a83612e5a565b91506137db8261379c565b602082019050919050565b5f6020820190508181035f8301526137fd816137c4565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613838600e83612e5a565b915061384382613804565b602082019050919050565b5f6020820190508181035f8301526138658161382c565b9050919050565b5f6138768261309f565b91506138818361309f565b9250828201905060ff81111561389a576138996133ba565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f6138d4601283612e5a565b91506138df826138a0565b602082019050919050565b5f6020820190508181035f830152613901816138c8565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f61393c601083612e5a565b915061394782613908565b602082019050919050565b5f6020820190508181035f83015261396981613930565b9050919050565b7f4d696e2f4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f6139a4600d83612e5a565b91506139af82613970565b602082019050919050565b5f6020820190508181035f8301526139d181613998565b9050919050565b7f4d617820746f6f206c6f770000000000000000000000000000000000000000005f82015250565b5f613a0c600b83612e5a565b9150613a17826139d8565b602082019050919050565b5f6020820190508181035f830152613a3981613a00565b9050919050565b7f4d617820746f6f206869676800000000000000000000000000000000000000005f82015250565b5f613a74600c83612e5a565b9150613a7f82613a40565b602082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f4c502065786973747300000000000000000000000000000000000000000000005f82015250565b5f613adc600983612e5a565b9150613ae782613aa8565b602082019050919050565b5f6020820190508181035f830152613b0981613ad0565b9050919050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f613b44601483612e5a565b9150613b4f82613b10565b602082019050919050565b5f6020820190508181035f830152613b7181613b38565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000005f82015250565b5f613bac601d83612e5a565b9150613bb782613b78565b602082019050919050565b5f6020820190508181035f830152613bd981613ba0565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f613c14601583612e5a565b9150613c1f82613be0565b602082019050919050565b5f6020820190508181035f830152613c4181613c08565b9050919050565b5f81519050613c5681612f2e565b92915050565b5f60208284031215613c7157613c70612efa565b5b5f613c7e84828501613c48565b91505092915050565b5f604082019050613c9a5f83018561322a565b613ca7602083018461322a565b9392505050565b5f81519050919050565b5f81905092915050565b5f613ccc82613cae565b613cd68185613cb8565b9350613ce6818560208601612e6a565b80840191505092915050565b5f613cfd8284613cc2565b915081905092915050565b7f4661696c656420616464696e67206c69717569646974790000000000000000005f82015250565b5f613d3c601783612e5a565b9150613d4782613d08565b602082019050919050565b5f6020820190508181035f830152613d6981613d30565b9050919050565b5f819050919050565b5f613d93613d8e613d8984612efe565b613d70565b612efe565b9050919050565b5f613da482613d79565b9050919050565b5f613db582613d9a565b9050919050565b613dc581613dab565b82525050565b5f602082019050613dde5f830184613dbc565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000005f82015250565b5f613e18601d83612e5a565b9150613e2382613de4565b602082019050919050565b5f6020820190508181035f830152613e4581613e0c565b9050919050565b7f54582065786365656473206c696d6974730000000000000000000000000000005f82015250565b5f613e80601183612e5a565b9150613e8b82613e4c565b602082019050919050565b5f6020820190508181035f830152613ead81613e74565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613f31613f2c613f2784613f0e565b613d70565b612f58565b9050919050565b613f4181613f17565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f7981612f1d565b82525050565b5f613f8a8383613f70565b60208301905092915050565b5f602082019050919050565b5f613fac82613f47565b613fb68185613f51565b9350613fc183613f61565b805f5b83811015613ff1578151613fd88882613f7f565b9750613fe383613f96565b925050600181019050613fc4565b5085935050505092915050565b5f60a0820190506140115f830188612ffc565b61401e6020830187613f38565b81810360408301526140308186613fa2565b905061403f606083018561322a565b61404c6080830184612ffc565b9695505050505050565b5f60c0820190506140695f83018961322a565b6140766020830188612ffc565b6140836040830187613f38565b6140906060830186613f38565b61409d608083018561322a565b6140aa60a0830184612ffc565b979650505050505050565b5f815190506140c381612f61565b92915050565b5f805f606084860312156140e0576140df612efa565b5b5f6140ed868287016140b5565b93505060206140fe868287016140b5565b925050604061410f868287016140b5565b915050925092509256fea2646970667358221220cc04038ff8983447bc6f24cc0ebeea521d90ae74e3c022cdf6c1670279bacb3064736f6c63430008150033

Deployed Bytecode

0x608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063e8078d9411610063578063e8078d941461053f578063f1320af214610549578063f2fde38b14610586578063f8b45b05146105ae5761018b565b8063a9059cbb1461049d578063c3f70b52146104d9578063dd62ed3e146105035761018b565b8063715018a6146103cb57806375f0a874146103e15780638a8c523c1461040b5780638da5cb5b1461042157806395d89b411461044b578063a6097b0a146104755761018b565b8063313ce5671161013d5780634fcd2446116101175780634fcd24461461032957806351bc3c851461035157806357ff135a1461036757806370a082311461038f5761018b565b8063313ce567146102ad578063368f4800146102d757806347062402146102ff5761018b565b806306fdde031461018f578063095ea7b3146101b957806318160ddd146101f557806323b872dd1461021f5780632851a5cf1461025b5780632b14ca56146102835761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105d8565b6040516101b09190612eda565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612f8b565b610615565b6040516101ec9190612fe3565b60405180910390f35b348015610200575f80fd5b50610209610702565b604051610216919061300b565b60405180910390f35b34801561022a575f80fd5b5061024560048036038101906102409190613024565b610726565b6040516102529190612fe3565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c9190613074565b610811565b005b34801561028e575f80fd5b50610297610a15565b6040516102a491906130ba565b60405180910390f35b3480156102b8575f80fd5b506102c1610a2a565b6040516102ce91906130ba565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f8919061310a565b610a32565b005b34801561030a575f80fd5b50610313610bef565b60405161032091906130ba565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190613172565b610c04565b005b34801561035c575f80fd5b50610365610d1b565b005b348015610372575f80fd5b5061038d600480360381019061038891906131da565b610e2e565b005b34801561039a575f80fd5b506103b560048036038101906103b09190613074565b611001565b6040516103c2919061300b565b60405180910390f35b3480156103d6575f80fd5b506103df611047565b005b3480156103ec575f80fd5b506103f561114c565b6040516104029190613239565b60405180910390f35b348015610416575f80fd5b5061041f611174565b005b34801561042c575f80fd5b5061043561120b565b6040516104429190613239565b60405180910390f35b348015610456575f80fd5b5061045f611232565b60405161046c9190612eda565b60405180910390f35b348015610480575f80fd5b5061049b6004803603810190610496919061328b565b61126f565b005b3480156104a8575f80fd5b506104c360048036038101906104be9190612f8b565b6114b1565b6040516104d09190612fe3565b60405180910390f35b3480156104e4575f80fd5b506104ed61150d565b6040516104fa919061300b565b60405180910390f35b34801561050e575f80fd5b50610529600480360381019061052491906132ef565b611516565b604051610536919061300b565b60405180910390f35b610547611598565b005b348015610554575f80fd5b5061056f600480360381019061056a9190613074565b611c58565b60405161057d92919061332d565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061338f565b611cf7565b005b3480156105b9575f80fd5b506105c2611dfd565b6040516105cf919061300b565b60405180910390f35b60606040518060400160405280600881526020017f4172626920426f74000000000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106f0919061300b565b60405180910390a36001905092915050565b5f6009600a6107119190613516565b6402540be4006107219190613560565b905090565b5f61073084611e06565b61076f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610766906135eb565b60405180910390fd5b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107f69190613609565b92505081905550610808848484611ed8565b90509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089590613686565b60405180910390fd5b600d5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091f906136ee565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f8060159054906101000a900460ff16905090565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690613686565b60405180910390fd5b5f60016103e88461ffff166009600a610ad89190613516565b6402540be400610ae89190613560565b610af29190613560565b610afc9190613739565b610b069190613769565b9050600254811015610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b44906137e6565b60405180910390fd5b806002819055505f60016103e88461ffff166009600a610b6d9190613516565b6402540be400610b7d9190613560565b610b879190613560565b610b919190613739565b610b9b9190613769565b9050600354811015610be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd99061384e565b60405180910390fd5b8060038190555050505050565b5f8060149054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890613686565b60405180910390fd5b60028183610c9f919061386c565b60ff161115610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906138ea565b60405180910390fd5b815f60146101000a81548160ff021916908360ff160217905550805f60156101000a81548160ff021916908360ff1602179055505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90613686565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550610e0960075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123c4565b610e12476125d7565b5f600e60016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290613686565b60405180910390fd5b8080610ec45750815b15610f5457600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a90613952565b60405180910390fd5b5b8160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb90613686565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516111429190613239565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f890613686565b60405180910390fd5b61120961263f565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4152424900000000000000000000000000000000000000000000000000000000815250905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390613686565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6113189190613516565b6402540be4006113289190613560565b6113329190613560565b61133c9190613739565b6004819055508063ffffffff168263ffffffff166009600a61135e9190613516565b6402540be40061136e9190613560565b6113789190613560565b6113829190613739565b60058190555060045460055410156113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c6906139ba565b60405180910390fd5b620186a06009600a6113e19190613516565b6402540be4006113f19190613560565b6113fb9190613739565b6005541161143e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143590613a22565b60405180910390fd5b60646009600a61144e9190613516565b6402540be40061145e9190613560565b6114689190613739565b600554106114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613a8a565b60405180910390fd5b50505050565b5f6114bb33611e06565b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f1906135eb565b60405180910390fd5b611505338484611ed8565b905092915050565b5f600254905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90613686565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690613af2565b60405180910390fd5b600e5f9054906101000a900460ff161561171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590613b5a565b60405180910390fd5b5f34118061172b57505f47115b61176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176190613bc2565b60405180910390fd5b5f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e090613c2a565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611853573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118779190613c5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119219190613c5c565b6040518363ffffffff1660e01b815260040161193e929190613c87565b6020604051808303815f875af115801561195a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197e9190613c5c565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a0560075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054475f612722565b60065460075f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a749190613609565b925050819055505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611b449190613cf2565b5f604051808303815f865af19150503d805f8114611b7d576040519150601f19603f3d011682016040523d82523d5f602084013e611b82565b606091505b5050905080611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90613d52565b60405180910390fd5b80600d5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f600e60016101000a81548160ff021916908315150217905550565b5f8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90613686565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611df29190613dcb565b60405180910390a150565b5f600354905090565b5f805f9050600e5f9054906101000a900460ff1615611e285760019050611ecf565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ec45750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611ece57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3e90613e2e565b60405180910390fd5b600e5f9054906101000a900460ff166120365760095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ff65750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c906135eb565b60405180910390fd5b5b600e60019054906101000a900460ff161580156120995750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120ec575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120fa576120f9612808565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561216257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121b957505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612209576121c984848461291e565b612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90613e96565b60405180910390fd5b5b5f612215858585612aa6565b90505f81846122249190613609565b90508360075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461226f9190613609565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160065f8282546122c19190613769565b925050819055508060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123119190613769565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516123af919061300b565b60405180910390a36001925050509392505050565b6123cd81612c6e565b5f600267ffffffffffffffff8111156123e9576123e8613eb4565b5b6040519080825280602002602001820160405280156124175781602001602082028036833780820191505090505b50905030815f8151811061242e5761242d613ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f69190613c5c565b8160018151811061250a57612509613ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125a6959493929190613ffe565b5f604051808303815f87803b1580156125bd575f80fd5b505af11580156125cf573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561263b573d5f803e3d5ffd5b5050565b600e5f9054906101000a900460ff161561268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590613b5a565b60405180910390fd5b606460026009600a6126a09190613516565b6402540be4006126b09190613560565b6126ba9190613560565b6126c49190613739565b600281905550606460026009600a6126dc9190613516565b6402540be4006126ec9190613560565b6126f69190613560565b6127009190613739565b6003819055506001600e5f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612750575f90505b61275984612c6e565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198430875f8087426040518863ffffffff1660e01b81526004016127be96959493929190614056565b60606040518083038185885af11580156127da573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127ff91906140c9565b50505050505050565b6001600e60016101000a81548160ff0219169083151502179055505f600654905060045481101580156128465750600e5f9054906101000a900460ff165b1561290157600554811061285a5760055490505b5f8190506009600a61286c9190613516565b8111156128e8578160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546128bf9190613769565b925050819055506128cf816123c4565b8160065f8282546128e09190613609565b925050819055505b5f4790505f8111156128fe576128fd816125d7565b5b50505b505f600e60016101000a81548160ff021916908315150217905550565b5f8060019050600e5f9054906101000a900460ff1680156129865750600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129d95750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a9b576002548311156129f0575f9050612a9a565b600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612a9057506003548360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a8e9190613769565b115b15612a99575f90505b5b5b809150509392505050565b5f80600e5f9054906101000a900460ff161580612b09575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612b5a575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b67575f9050612c63565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612be65760645f60149054906101000a900460ff1660ff1684612bd59190613560565b612bdf9190613739565b9050612c62565b600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c615760645f60159054906101000a900460ff1660ff1684612c549190613560565b612c5e9190613739565b90505b5b5b809150509392505050565b8060085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612e4d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612e44919061300b565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e87578082015181840152602081019050612e6c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612eac82612e50565b612eb68185612e5a565b9350612ec6818560208601612e6a565b612ecf81612e92565b840191505092915050565b5f6020820190508181035f830152612ef28184612ea2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f2782612efe565b9050919050565b612f3781612f1d565b8114612f41575f80fd5b50565b5f81359050612f5281612f2e565b92915050565b5f819050919050565b612f6a81612f58565b8114612f74575f80fd5b50565b5f81359050612f8581612f61565b92915050565b5f8060408385031215612fa157612fa0612efa565b5b5f612fae85828601612f44565b9250506020612fbf85828601612f77565b9150509250929050565b5f8115159050919050565b612fdd81612fc9565b82525050565b5f602082019050612ff65f830184612fd4565b92915050565b61300581612f58565b82525050565b5f60208201905061301e5f830184612ffc565b92915050565b5f805f6060848603121561303b5761303a612efa565b5b5f61304886828701612f44565b935050602061305986828701612f44565b925050604061306a86828701612f77565b9150509250925092565b5f6020828403121561308957613088612efa565b5b5f61309684828501612f44565b91505092915050565b5f60ff82169050919050565b6130b48161309f565b82525050565b5f6020820190506130cd5f8301846130ab565b92915050565b5f61ffff82169050919050565b6130e9816130d3565b81146130f3575f80fd5b50565b5f81359050613104816130e0565b92915050565b5f80604083850312156131205761311f612efa565b5b5f61312d858286016130f6565b925050602061313e858286016130f6565b9150509250929050565b6131518161309f565b811461315b575f80fd5b50565b5f8135905061316c81613148565b92915050565b5f806040838503121561318857613187612efa565b5b5f6131958582860161315e565b92505060206131a68582860161315e565b9150509250929050565b6131b981612fc9565b81146131c3575f80fd5b50565b5f813590506131d4816131b0565b92915050565b5f805f606084860312156131f1576131f0612efa565b5b5f6131fe86828701612f44565b935050602061320f868287016131c6565b9250506040613220868287016131c6565b9150509250925092565b61323381612f1d565b82525050565b5f60208201905061324c5f83018461322a565b92915050565b5f63ffffffff82169050919050565b61326a81613252565b8114613274575f80fd5b50565b5f8135905061328581613261565b92915050565b5f805f80608085870312156132a3576132a2612efa565b5b5f6132b087828801613277565b94505060206132c187828801613277565b93505060406132d287828801613277565b92505060606132e387828801613277565b91505092959194509250565b5f806040838503121561330557613304612efa565b5b5f61331285828601612f44565b925050602061332385828601612f44565b9150509250929050565b5f6040820190506133405f830185612fd4565b61334d6020830184612fd4565b9392505050565b5f61335e82612efe565b9050919050565b61336e81613354565b8114613378575f80fd5b50565b5f8135905061338981613365565b92915050565b5f602082840312156133a4576133a3612efa565b5b5f6133b18482850161337b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561343c57808604811115613418576134176133ba565b5b60018516156134275780820291505b8081029050613435856133e7565b94506133fc565b94509492505050565b5f82613454576001905061350f565b81613461575f905061350f565b81600181146134775760028114613481576134b0565b600191505061350f565b60ff841115613493576134926133ba565b5b8360020a9150848211156134aa576134a96133ba565b5b5061350f565b5060208310610133831016604e8410600b84101617156134e55782820a9050838111156134e0576134df6133ba565b5b61350f565b6134f284848460016133f3565b92509050818404811115613509576135086133ba565b5b81810290505b9392505050565b5f61352082612f58565b915061352b8361309f565b92506135587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613445565b905092915050565b5f61356a82612f58565b915061357583612f58565b925082820261358381612f58565b9150828204841483151761359a576135996133ba565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f6135d5601083612e5a565b91506135e0826135a1565b602082019050919050565b5f6020820190508181035f830152613602816135c9565b9050919050565b5f61361382612f58565b915061361e83612f58565b9250828203905081811115613636576136356133ba565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732e000000000000005f82015250565b5f613670601983612e5a565b915061367b8261363c565b602082019050919050565b5f6020820190508181035f83015261369d81613664565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f6136d8601783612e5a565b91506136e3826136a4565b602082019050919050565b5f6020820190508181035f830152613705816136cc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61374382612f58565b915061374e83612f58565b92508261375e5761375d61370c565b5b828204905092915050565b5f61377382612f58565b915061377e83612f58565b9250828201905080821115613796576137956133ba565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f6137d0600a83612e5a565b91506137db8261379c565b602082019050919050565b5f6020820190508181035f8301526137fd816137c4565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613838600e83612e5a565b915061384382613804565b602082019050919050565b5f6020820190508181035f8301526138658161382c565b9050919050565b5f6138768261309f565b91506138818361309f565b9250828201905060ff81111561389a576138996133ba565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f6138d4601283612e5a565b91506138df826138a0565b602082019050919050565b5f6020820190508181035f830152613901816138c8565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f61393c601083612e5a565b915061394782613908565b602082019050919050565b5f6020820190508181035f83015261396981613930565b9050919050565b7f4d696e2f4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f6139a4600d83612e5a565b91506139af82613970565b602082019050919050565b5f6020820190508181035f8301526139d181613998565b9050919050565b7f4d617820746f6f206c6f770000000000000000000000000000000000000000005f82015250565b5f613a0c600b83612e5a565b9150613a17826139d8565b602082019050919050565b5f6020820190508181035f830152613a3981613a00565b9050919050565b7f4d617820746f6f206869676800000000000000000000000000000000000000005f82015250565b5f613a74600c83612e5a565b9150613a7f82613a40565b602082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f4c502065786973747300000000000000000000000000000000000000000000005f82015250565b5f613adc600983612e5a565b9150613ae782613aa8565b602082019050919050565b5f6020820190508181035f830152613b0981613ad0565b9050919050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f613b44601483612e5a565b9150613b4f82613b10565b602082019050919050565b5f6020820190508181035f830152613b7181613b38565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000005f82015250565b5f613bac601d83612e5a565b9150613bb782613b78565b602082019050919050565b5f6020820190508181035f830152613bd981613ba0565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f613c14601583612e5a565b9150613c1f82613be0565b602082019050919050565b5f6020820190508181035f830152613c4181613c08565b9050919050565b5f81519050613c5681612f2e565b92915050565b5f60208284031215613c7157613c70612efa565b5b5f613c7e84828501613c48565b91505092915050565b5f604082019050613c9a5f83018561322a565b613ca7602083018461322a565b9392505050565b5f81519050919050565b5f81905092915050565b5f613ccc82613cae565b613cd68185613cb8565b9350613ce6818560208601612e6a565b80840191505092915050565b5f613cfd8284613cc2565b915081905092915050565b7f4661696c656420616464696e67206c69717569646974790000000000000000005f82015250565b5f613d3c601783612e5a565b9150613d4782613d08565b602082019050919050565b5f6020820190508181035f830152613d6981613d30565b9050919050565b5f819050919050565b5f613d93613d8e613d8984612efe565b613d70565b612efe565b9050919050565b5f613da482613d79565b9050919050565b5f613db582613d9a565b9050919050565b613dc581613dab565b82525050565b5f602082019050613dde5f830184613dbc565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000005f82015250565b5f613e18601d83612e5a565b9150613e2382613de4565b602082019050919050565b5f6020820190508181035f830152613e4581613e0c565b9050919050565b7f54582065786365656473206c696d6974730000000000000000000000000000005f82015250565b5f613e80601183612e5a565b9150613e8b82613e4c565b602082019050919050565b5f6020820190508181035f830152613ead81613e74565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613f31613f2c613f2784613f0e565b613d70565b612f58565b9050919050565b613f4181613f17565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f7981612f1d565b82525050565b5f613f8a8383613f70565b60208301905092915050565b5f602082019050919050565b5f613fac82613f47565b613fb68185613f51565b9350613fc183613f61565b805f5b83811015613ff1578151613fd88882613f7f565b9750613fe383613f96565b925050600181019050613fc4565b5085935050505092915050565b5f60a0820190506140115f830188612ffc565b61401e6020830187613f38565b81810360408301526140308186613fa2565b905061403f606083018561322a565b61404c6080830184612ffc565b9695505050505050565b5f60c0820190506140695f83018961322a565b6140766020830188612ffc565b6140836040830187613f38565b6140906060830186613f38565b61409d608083018561322a565b6140aa60a0830184612ffc565b979650505050505050565b5f815190506140c381612f61565b92915050565b5f805f606084860312156140e0576140df612efa565b5b5f6140ed868287016140b5565b93505060206140fe868287016140b5565b925050604061410f868287016140b5565b915050925092509256fea2646970667358221220cc04038ff8983447bc6f24cc0ebeea521d90ae74e3c022cdf6c1670279bacb3064736f6c63430008150033

Deployed Bytecode Sourcemap

1714:10822:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3883:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4221:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3621:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4674:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9798:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9403:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3710:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10264:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9313:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9497:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12361:170;;;;;;;;;;;;;:::i;:::-;;9057:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3969:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;663:137;;;;;;;;;;;;;:::i;:::-;;9689:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6458:77;;;;;;;;;;;;;:::i;:::-;;413:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3793:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10724:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4445:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10160:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4080:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5283:776;;;:::i;:::-;;8913:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;500:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10059:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3883:80;3931:13;3955:5;;;;;;;;;;;;;;;;;3948:12;;3883:80;:::o;4221:216::-;4296:4;4348:6;4313:11;:23;4325:10;4313:23;;;;;;;;;;;;;;;:32;4337:7;4313:32;;;;;;;;;;;;;;;:41;;;;4391:7;4370:37;;4379:10;4370:37;;;4400:6;4370:37;;;;;;:::i;:::-;;;;;;;;4425:4;4418:11;;4221:216;;;;:::o;3621:83::-;3676:7;1786:1;1844:2;:10;;;;:::i;:::-;1829:11;:26;;;;:::i;:::-;3687:14;;3621:83;:::o;4674:285::-;4774:4;4799:25;4817:6;4799:17;:25::i;:::-;4791:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4891:6;4856:11;:19;4868:6;4856:19;;;;;;;;;;;;;;;:31;4876:10;4856:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;4915:36;4925:6;4933:9;4944:6;4915:9;:36::i;:::-;4908:43;;4674:285;;;;;:::o;9798:253::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9879:5:::1;:16;9885:9;9879:16;;;;;;;;;;;;;;;;;;;;;;;;;9878:17;9870:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9961:9;9934:16;;:37;;;;;;;;;;;;;;;;;;10002:4;9982:6;:17;9989:9;9982:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;10039:4;10017:8;:19;10026:9;10017:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;9798:253:::0;:::o;9403:86::-;9444:5;9469:12;;;;;;;;;;;9462:19;;9403:86;:::o;3710:77::-;3762:5;1786:1;3771:13;;3710:77;:::o;10264:452::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10370:16:::1;10431:1;10424:4;10399:22;10389:32;;1786:1;1844:2;:10;;;;:::i;:::-;1829:11;:26;;;;:::i;:::-;10389:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;10370:62;;10463:12;;10451:8;:24;;10443:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10516:8;10501:12;:23;;;;10535:20;10595:1;10588:4;10568:17;10558:27;;1786:1;1844:2;:10;;;;:::i;:::-;1829:11;:26;;;;:::i;:::-;10558:27;;;;:::i;:::-;:34;;;;:::i;:::-;:38;;;;:::i;:::-;10535:61;;10631:16;;10615:12;:32;;10607:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10696:12;10677:16;:31;;;;10359:357;;10264:452:::0;;:::o;9313:84::-;9353:5;9378:11;;;;;;;;;;;9371:18;;9313:84;:::o;9497:182::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9589:1:::1;9581:4;9575:3;:10;;;;:::i;:::-;:15;;;;9567:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9638:3;9624:11;;:17;;;;;;;;;;;;;;;;;;9667:4;9652:12;;:19;;;;;;;;;;;;;;;;;;9497:182:::0;;:::o;12361:170::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;3032:4:::1;3019:10;;:17;;;;;;;;;;;;;;;;;;12425:46:::2;12446:9;:24;12464:4;12446:24;;;;;;;;;;;;;;;;12425:20;:46::i;:::-;12482:40;12500:21;12482:17;:40::i;:::-;3065:5:::1;3052:10;;:18;;;;;;;;;;;;;;;;;;12361:170::o:0;9057:248::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9154:8:::1;:18;;;;9166:6;9154:18;9150:72;;;9185:5;:13;9191:6;9185:13;;;;;;;;;;;;;;;;;;;;;;;;;9184:14;9176:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9150:72;9251:6;9232;:16;9240:6;9232:16;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;9289:8;9268;:18;9278:6;9268:18;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;9057:248:::0;;;:::o;3969:105::-;4035:7;4053:9;:18;4063:7;4053:18;;;;;;;;;;;;;;;;4046:25;;3969:105;;;:::o;663:137::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;740:1:::1;723:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;759:32;788:1;759:32;;;;;;:::i;:::-;;;;;;;;663:137::o:0;9689:101::-;9739:7;9766:16;;;;;;;;;;;9759:23;;9689:101;:::o;6458:77::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6513:14:::1;:12;:14::i;:::-;6458:77::o:0;413:81::-;451:7;479:6;;;;;;;;;;;472:13;;413:81;:::o;3793:84::-;3843:13;3867:7;;;;;;;;;;;;;;;;;3860:14;;3793:84;:::o;10724:410::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10880:10:::1;10859:31;;10869:8;10859:18;;1786:1;1844:2;:10;;;;:::i;:::-;1829:11;:26;;;;:::i;:::-;10859:18;;;;:::i;:::-;:31;;;;:::i;:::-;10846:10;:44;;;;10935:10;10914:31;;10924:8;10914:18;;1786:1;1844:2;:10;;;;:::i;:::-;1829:11;:26;;;;:::i;:::-;10914:18;;;;:::i;:::-;:31;;;;:::i;:::-;10901:10;:44;;;;10976:10;;10964;;:22;;10956:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11044:6;1786:1;1844:2;:10;;;;:::i;:::-;1829:11;:26;;;;:::i;:::-;11034:16;;;;:::i;:::-;11023:10;;:27;11015:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;11106:3;1786:1;1844:2;:10;;;;:::i;:::-;1829:11;:26;;;;:::i;:::-;11096:13;;;;:::i;:::-;11085:10;;:24;11077:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10724:410:::0;;;;:::o;4445:221::-;4525:4;4550:29;4568:10;4550:17;:29::i;:::-;4542:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4618:40;4628:10;4640:9;4651:6;4618:9;:40::i;:::-;4611:47;;4445:221;;;;:::o;10160:96::-;10209:7;10236:12;;10229:19;;10160:96;:::o;4080:133::-;4164:7;4182:11;:19;4194:6;4182:19;;;;;;;;;;;;;;;:28;4202:7;4182:28;;;;;;;;;;;;;;;;4175:35;;4080:133;;;;:::o;5283:776::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;3032:4:::1;3019:10;;:17;;;;;;;;;;;;;;;;;;5387:1:::2;5365:24;;:10;;;;;;;;;;;:24;;;5357:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5423:12;;;;;;;;;;;5422:13;5414:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5491:1;5479:9;:13;:40;;;;5518:1;5496:21;:23;5479:40;5471:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;5597:1;5572:9;:24;5590:4;5572:24;;;;;;;;;;;;;;;;:26;5564:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5666:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5648:58;;;5715:4;5722:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5648:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5635:10;;:113;;;;;;;;;;;;;;;;;;5759:69;5773:9;:24;5791:4;5773:24;;;;;;;;;;;;;;;;5799:21;5822:5;5759:13;:69::i;:::-;5864:10;;5839:9;:21;5849:10;;;;;;;;;;;5839:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;5886:14;5905:10;;;;;;;;;;;:15;;5921:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5905:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5885:70;;;5974:9;5966:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;6042:9;6022:5;:17;6028:10;;;;;;;;;;;6022:17;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;5346:713;3065:5:::1;3052:10;;:18;;;;;;;;;;;;;;;;;;5283:776::o:0;8913:138::-;8968:9;8979:11;9011:6;:14;9018:6;9011:14;;;;;;;;;;;;;;;;;;;;;;;;;9026:8;:16;9035:6;9026:16;;;;;;;;;;;;;;;;;;;;;;;;;9003:40;;;;8913:138;;;:::o;500:157::-;359:6;;;;;;;;;;345:20;;:10;:20;;;337:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;593:8:::1;584:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;618:30;639:8;618:30;;;;;;:::i;:::-;;;;;;;;500:157:::0;:::o;10059:95::-;10103:7;10130:16;;10123:23;;10059:95;:::o;8201:275::-;8266:4;8282:16;8301:5;8282:24;;8322:12;;;;;;;;;;;8317:122;;;8353:4;8339:18;;8317:122;;;8380:6;:14;8387:6;8380:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;8398:8;:16;8407:6;8398:16;;;;;;;;;;;;;;;;;;;;;;;;;8380:34;8376:63;;;8432:4;8418:18;;8376:63;8317:122;8457:11;8450:18;;;8201:275;;;:::o;6774:918::-;6862:4;6905:1;6887:20;;:6;:20;;;6879:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6957:12;;;;;;;;;;;6952:87;;6981:6;:14;6988:6;6981:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;6999:8;:16;7008:6;6999:16;;;;;;;;;;;;;;;;;;;;;;;;;6981:34;6973:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6952:87;7055:10;;;;;;;;;;;7054:11;:31;;;;;7069:5;:16;7075:9;7069:16;;;;;;;;;;;;;;;;;;;;;;;;;7054:31;:50;;;;;7090:6;:14;7097:6;7090:14;;;;;;;;;;;;;;;;;;;;;;;;;7089:15;7054:50;7049:82;;;7108:20;:18;:20::i;:::-;7049:82;7164:4;7146:23;;:6;:23;;;;:53;;;;;7194:4;7173:26;;:9;:26;;;;7146:53;:73;;;;;7213:6;;;;;;;;;;7203:16;;:6;:16;;;;7146:73;7141:179;;;7246:39;7259:6;7267:9;7278:6;7246:12;:39::i;:::-;7238:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7141:179;7330:18;7351:40;7365:6;7373:9;7384:6;7351:13;:40::i;:::-;7330:61;;7402:23;7437:10;7428:6;:19;;;;:::i;:::-;7402:45;;7498:6;7478:9;:17;7488:6;7478:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;7458:9;:17;7468:6;7458:17;;;;;;;;;;;;;;;:46;;;;7529:10;7515;;:24;;;;;;;:::i;:::-;;;;;;;;7596:15;7573:9;:20;7583:9;7573:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;7550:9;:20;7560:9;7550:20;;;;;;;;;;;;;;;:61;;;;7644:9;7627:35;;7636:6;7627:35;;;7655:6;7627:35;;;;;;:::i;:::-;;;;;;;;7680:4;7673:11;;;;6774:918;;;;;:::o;11876:366::-;11946:27;11961:11;11946:14;:27::i;:::-;11984:21;12022:1;12008:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11984:40;;12053:4;12035;12040:1;12035:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12079:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12069:4;12074:1;12069:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;12115:18;;;;;;;;;;;:69;;;12185:11;12197:1;12199:4;12212;12218:15;12115:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11935:307;11876:366;:::o;12250:103::-;12312:16;;;;;;;;;;;:25;;:33;12338:6;12312:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12250:103;:::o;6543:223::-;6596:12;;;;;;;;;;;6595:13;6587:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6677:3;6673:1;1786;1844:2;:10;;;;:::i;:::-;1829:11;:26;;;;:::i;:::-;6663:11;;;;:::i;:::-;:17;;;;:::i;:::-;6644:12;:36;;;;6725:3;6721:1;1786;1844:2;:10;;;;:::i;:::-;1829:11;:26;;;;:::i;:::-;6711:11;;;;:::i;:::-;:17;;;;:::i;:::-;6692:16;:36;;;;6754:4;6739:12;;:19;;;;;;;;;;;;;;;;;;6543:223::o;6067:383::-;6170:24;6197:6;;;;;;;;;;;6170:33;;6219:8;6214:50;;;6259:1;6232:29;;6214:50;6274:28;6289:12;6274:14;:28::i;:::-;6313:18;;;;;;;;;;;:34;;;6355:13;6380:4;6387:12;6401:1;6404;6407:16;6425:15;6313:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6159:291;6067:383;;;:::o;11144:724::-;3032:4;3019:10;;:17;;;;;;;;;;;;;;;;;;11205:27:::1;11235:10;;11205:40;;11284:10;;11261:19;:33;;:49;;;;;11298:12;;;;;;;;;;;11261:49;11256:605;;;11356:10;;11333:19;:33;11328:78;;11393:10;;11371:32;;11328:78;11420:21;11444:19;11420:43;;1786:1;11498:2;:10;;;;:::i;:::-;11482:13;:26;11478:221;;;11558:19;11530:9;:24;11548:4;11530:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;11596:35;11617:13;11596:20;:35::i;:::-;11664:19;11650:10;;:33;;;;;;;:::i;:::-;;;;;;;;11478:221;11713:27;11743:21;11713:51;;11804:1;11782:19;:23;11779:71;;;11809:38;11827:19;11809:17;:38::i;:::-;11779:71;11313:548;;11256:605;11194:674;3065:5:::0;3052:10;;:18;;;;;;;;;;;;;;;;;;11144:724::o;7700:493::-;7804:4;7821:21;7845:4;7821:28;;7865:12;;;;;;;;;;;:33;;;;;7882:8;:16;7891:6;7882:16;;;;;;;;;;;;;;;;;;;;;;;;;7881:17;7865:33;:57;;;;;7903:8;:19;7912:9;7903:19;;;;;;;;;;;;;;;;;;;;;;;;;7902:20;7865:57;7860:292;;;7962:12;;7945:14;:29;7940:201;;;7998:5;7979:24;;7940:201;;;8031:5;:16;8037:9;8031:16;;;;;;;;;;;;;;;;;;;;;;;;;8030:17;:79;;;;;8092:16;;8075:14;8052:9;:20;8062:9;8052:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;8030:79;8025:116;;;8133:5;8114:24;;8025:116;7940:201;7860:292;8169:16;8162:23;;;7700:493;;;;;:::o;8484:421::-;8581:7;8601:17;8635:12;;;;;;;;;;;8634:13;:31;;;;8651:6;:14;8658:6;8651:14;;;;;;;;;;;;;;;;;;;;;;;;;8634:31;:52;;;;8669:6;:17;8676:9;8669:17;;;;;;;;;;;;;;;;;;;;;;;;;8634:52;8629:242;;;8703:1;8691:13;;8629:242;;;8728:5;:13;8734:6;8728:13;;;;;;;;;;;;;;;;;;;;;;;;;8723:148;;;8781:3;8767:11;;;;;;;;;;;8758:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;8746:38;;8723:148;;;8808:5;:16;8814:9;8808:16;;;;;;;;;;;;;;;;;;;;;;;;;8803:68;;;8865:3;8850:12;;;;;;;;;;;8841:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;8829:39;;8803:68;8723:148;8629:242;8888:9;8881:16;;;8484:421;;;;;:::o;4967:308::-;5084:12;5038:11;:26;5058:4;5038:26;;;;;;;;;;;;;;;:43;2693:42;5038:43;;;;;;;;;;;;;;;;:58;5033:235;;;5160:17;5114:11;:26;5134:4;5114:26;;;;;;;;;;;;;;;:43;2693:42;5114:43;;;;;;;;;;;;;;;:63;;;;2693:42;5197:59;;5214:4;5197:59;;;5238:17;5197:59;;;;;;:::i;:::-;;;;;;;;5033:235;4967:308;:::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:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:89::-;5224:7;5264:6;5257:5;5253:18;5242:29;;5188:89;;;:::o;5283:120::-;5355:23;5372:5;5355:23;:::i;:::-;5348:5;5345:34;5335:62;;5393:1;5390;5383:12;5335:62;5283:120;:::o;5409:137::-;5454:5;5492:6;5479:20;5470:29;;5508:32;5534:5;5508:32;:::i;:::-;5409:137;;;;:::o;5552:470::-;5618:6;5626;5675:2;5663:9;5654:7;5650:23;5646:32;5643:119;;;5681:79;;:::i;:::-;5643:119;5801:1;5826:52;5870:7;5861:6;5850:9;5846:22;5826:52;:::i;:::-;5816:62;;5772:116;5927:2;5953:52;5997:7;5988:6;5977:9;5973:22;5953:52;:::i;:::-;5943:62;;5898:117;5552:470;;;;;:::o;6028:118::-;6099:22;6115:5;6099:22;:::i;:::-;6092:5;6089:33;6079:61;;6136:1;6133;6126:12;6079:61;6028:118;:::o;6152:135::-;6196:5;6234:6;6221:20;6212:29;;6250:31;6275:5;6250:31;:::i;:::-;6152:135;;;;:::o;6293:466::-;6357:6;6365;6414:2;6402:9;6393:7;6389:23;6385:32;6382:119;;;6420:79;;:::i;:::-;6382:119;6540:1;6565:51;6608:7;6599:6;6588:9;6584:22;6565:51;:::i;:::-;6555:61;;6511:115;6665:2;6691:51;6734:7;6725:6;6714:9;6710:22;6691:51;:::i;:::-;6681:61;;6636:116;6293:466;;;;;:::o;6765:116::-;6835:21;6850:5;6835:21;:::i;:::-;6828:5;6825:32;6815:60;;6871:1;6868;6861:12;6815:60;6765:116;:::o;6887:133::-;6930:5;6968:6;6955:20;6946:29;;6984:30;7008:5;6984:30;:::i;:::-;6887:133;;;;:::o;7026:607::-;7097:6;7105;7113;7162:2;7150:9;7141:7;7137:23;7133:32;7130:119;;;7168:79;;:::i;:::-;7130:119;7288:1;7313:53;7358:7;7349:6;7338:9;7334:22;7313:53;:::i;:::-;7303:63;;7259:117;7415:2;7441:50;7483:7;7474:6;7463:9;7459:22;7441:50;:::i;:::-;7431:60;;7386:115;7540:2;7566:50;7608:7;7599:6;7588:9;7584:22;7566:50;:::i;:::-;7556:60;;7511:115;7026:607;;;;;:::o;7639:118::-;7726:24;7744:5;7726:24;:::i;:::-;7721:3;7714:37;7639:118;;:::o;7763:222::-;7856:4;7894:2;7883:9;7879:18;7871:26;;7907:71;7975:1;7964:9;7960:17;7951:6;7907:71;:::i;:::-;7763:222;;;;:::o;7991:93::-;8027:7;8067:10;8060:5;8056:22;8045:33;;7991:93;;;:::o;8090:120::-;8162:23;8179:5;8162:23;:::i;:::-;8155:5;8152:34;8142:62;;8200:1;8197;8190:12;8142:62;8090:120;:::o;8216:137::-;8261:5;8299:6;8286:20;8277:29;;8315:32;8341:5;8315:32;:::i;:::-;8216:137;;;;:::o;8359:757::-;8441:6;8449;8457;8465;8514:3;8502:9;8493:7;8489:23;8485:33;8482:120;;;8521:79;;:::i;:::-;8482:120;8641:1;8666:52;8710:7;8701:6;8690:9;8686:22;8666:52;:::i;:::-;8656:62;;8612:116;8767:2;8793:52;8837:7;8828:6;8817:9;8813:22;8793:52;:::i;:::-;8783:62;;8738:117;8894:2;8920:52;8964:7;8955:6;8944:9;8940:22;8920:52;:::i;:::-;8910:62;;8865:117;9021:2;9047:52;9091:7;9082:6;9071:9;9067:22;9047:52;:::i;:::-;9037:62;;8992:117;8359:757;;;;;;;:::o;9122:474::-;9190:6;9198;9247:2;9235:9;9226:7;9222:23;9218:32;9215:119;;;9253:79;;:::i;:::-;9215:119;9373:1;9398:53;9443:7;9434:6;9423:9;9419:22;9398:53;:::i;:::-;9388:63;;9344:117;9500:2;9526:53;9571:7;9562:6;9551:9;9547:22;9526:53;:::i;:::-;9516:63;;9471:118;9122:474;;;;;:::o;9602:308::-;9711:4;9749:2;9738:9;9734:18;9726:26;;9762:65;9824:1;9813:9;9809:17;9800:6;9762:65;:::i;:::-;9837:66;9899:2;9888:9;9884:18;9875:6;9837:66;:::i;:::-;9602:308;;;;;:::o;9916:104::-;9961:7;9990:24;10008:5;9990:24;:::i;:::-;9979:35;;9916:104;;;:::o;10026:138::-;10107:32;10133:5;10107:32;:::i;:::-;10100:5;10097:43;10087:71;;10154:1;10151;10144:12;10087:71;10026:138;:::o;10170:155::-;10224:5;10262:6;10249:20;10240:29;;10278:41;10313:5;10278:41;:::i;:::-;10170:155;;;;:::o;10331:345::-;10398:6;10447:2;10435:9;10426:7;10422:23;10418:32;10415:119;;;10453:79;;:::i;:::-;10415:119;10573:1;10598:61;10651:7;10642:6;10631:9;10627:22;10598:61;:::i;:::-;10588:71;;10544:125;10331:345;;;;:::o;10682:180::-;10730:77;10727:1;10720:88;10827:4;10824:1;10817:15;10851:4;10848:1;10841:15;10868:102;10910:8;10957:5;10954:1;10950:13;10929:34;;10868:102;;;:::o;10976:848::-;11037:5;11044:4;11068:6;11059:15;;11092:5;11083:14;;11106:712;11127:1;11117:8;11114:15;11106:712;;;11222:4;11217:3;11213:14;11207:4;11204:24;11201:50;;;11231:18;;:::i;:::-;11201:50;11281:1;11271:8;11267:16;11264:451;;;11696:4;11689:5;11685:16;11676:25;;11264:451;11746:4;11740;11736:15;11728:23;;11776:32;11799:8;11776:32;:::i;:::-;11764:44;;11106:712;;;10976:848;;;;;;;:::o;11830:1073::-;11884:5;12075:8;12065:40;;12096:1;12087:10;;12098:5;;12065:40;12124:4;12114:36;;12141:1;12132:10;;12143:5;;12114:36;12210:4;12258:1;12253:27;;;;12294:1;12289:191;;;;12203:277;;12253:27;12271:1;12262:10;;12273:5;;;12289:191;12334:3;12324:8;12321:17;12318:43;;;12341:18;;:::i;:::-;12318:43;12390:8;12387:1;12383:16;12374:25;;12425:3;12418:5;12415:14;12412:40;;;12432:18;;:::i;:::-;12412:40;12465:5;;;12203:277;;12589:2;12579:8;12576:16;12570:3;12564:4;12561:13;12557:36;12539:2;12529:8;12526:16;12521:2;12515:4;12512:12;12508:35;12492:111;12489:246;;;12645:8;12639:4;12635:19;12626:28;;12680:3;12673:5;12670:14;12667:40;;;12687:18;;:::i;:::-;12667:40;12720:5;;12489:246;12760:42;12798:3;12788:8;12782:4;12779:1;12760:42;:::i;:::-;12745:57;;;;12834:4;12829:3;12825:14;12818:5;12815:25;12812:51;;;12843:18;;:::i;:::-;12812:51;12892:4;12885:5;12881:16;12872:25;;11830:1073;;;;;;:::o;12909:281::-;12967:5;12991:23;13009:4;12991:23;:::i;:::-;12983:31;;13035:25;13051:8;13035:25;:::i;:::-;13023:37;;13079:104;13116:66;13106:8;13100:4;13079:104;:::i;:::-;13070:113;;12909:281;;;;:::o;13196:410::-;13236:7;13259:20;13277:1;13259:20;:::i;:::-;13254:25;;13293:20;13311:1;13293:20;:::i;:::-;13288:25;;13348:1;13345;13341:9;13370:30;13388:11;13370:30;:::i;:::-;13359:41;;13549:1;13540:7;13536:15;13533:1;13530:22;13510:1;13503:9;13483:83;13460:139;;13579:18;;:::i;:::-;13460:139;13244:362;13196:410;;;;:::o;13612:166::-;13752:18;13748:1;13740:6;13736:14;13729:42;13612:166;:::o;13784:366::-;13926:3;13947:67;14011:2;14006:3;13947:67;:::i;:::-;13940:74;;14023:93;14112:3;14023:93;:::i;:::-;14141:2;14136:3;14132:12;14125:19;;13784:366;;;:::o;14156:419::-;14322:4;14360:2;14349:9;14345:18;14337:26;;14409:9;14403:4;14399:20;14395:1;14384:9;14380:17;14373:47;14437:131;14563:4;14437:131;:::i;:::-;14429:139;;14156:419;;;:::o;14581:194::-;14621:4;14641:20;14659:1;14641:20;:::i;:::-;14636:25;;14675:20;14693:1;14675:20;:::i;:::-;14670:25;;14719:1;14716;14712:9;14704:17;;14743:1;14737:4;14734:11;14731:37;;;14748:18;;:::i;:::-;14731:37;14581:194;;;;:::o;14781:175::-;14921:27;14917:1;14909:6;14905:14;14898:51;14781:175;:::o;14962:366::-;15104:3;15125:67;15189:2;15184:3;15125:67;:::i;:::-;15118:74;;15201:93;15290:3;15201:93;:::i;:::-;15319:2;15314:3;15310:12;15303:19;;14962:366;;;:::o;15334:419::-;15500:4;15538:2;15527:9;15523:18;15515:26;;15587:9;15581:4;15577:20;15573:1;15562:9;15558:17;15551:47;15615:131;15741:4;15615:131;:::i;:::-;15607:139;;15334:419;;;:::o;15759:173::-;15899:25;15895:1;15887:6;15883:14;15876:49;15759:173;:::o;15938:366::-;16080:3;16101:67;16165:2;16160:3;16101:67;:::i;:::-;16094:74;;16177:93;16266:3;16177:93;:::i;:::-;16295:2;16290:3;16286:12;16279:19;;15938:366;;;:::o;16310:419::-;16476:4;16514:2;16503:9;16499:18;16491:26;;16563:9;16557:4;16553:20;16549:1;16538:9;16534:17;16527:47;16591:131;16717:4;16591:131;:::i;:::-;16583:139;;16310:419;;;:::o;16735:180::-;16783:77;16780:1;16773:88;16880:4;16877:1;16870:15;16904:4;16901:1;16894:15;16921:185;16961:1;16978:20;16996:1;16978:20;:::i;:::-;16973:25;;17012:20;17030:1;17012:20;:::i;:::-;17007:25;;17051:1;17041:35;;17056:18;;:::i;:::-;17041:35;17098:1;17095;17091:9;17086:14;;16921:185;;;;:::o;17112:191::-;17152:3;17171:20;17189:1;17171:20;:::i;:::-;17166:25;;17205:20;17223:1;17205:20;:::i;:::-;17200:25;;17248:1;17245;17241:9;17234:16;;17269:3;17266:1;17263:10;17260:36;;;17276:18;;:::i;:::-;17260:36;17112:191;;;;:::o;17309:160::-;17449:12;17445:1;17437:6;17433:14;17426:36;17309:160;:::o;17475:366::-;17617:3;17638:67;17702:2;17697:3;17638:67;:::i;:::-;17631:74;;17714:93;17803:3;17714:93;:::i;:::-;17832:2;17827:3;17823:12;17816:19;;17475:366;;;:::o;17847:419::-;18013:4;18051:2;18040:9;18036:18;18028:26;;18100:9;18094:4;18090:20;18086:1;18075:9;18071:17;18064:47;18128:131;18254:4;18128:131;:::i;:::-;18120:139;;17847:419;;;:::o;18272:164::-;18412:16;18408:1;18400:6;18396:14;18389:40;18272:164;:::o;18442:366::-;18584:3;18605:67;18669:2;18664:3;18605:67;:::i;:::-;18598:74;;18681:93;18770:3;18681:93;:::i;:::-;18799:2;18794:3;18790:12;18783:19;;18442:366;;;:::o;18814:419::-;18980:4;19018:2;19007:9;19003:18;18995:26;;19067:9;19061:4;19057:20;19053:1;19042:9;19038:17;19031:47;19095:131;19221:4;19095:131;:::i;:::-;19087:139;;18814:419;;;:::o;19239:188::-;19277:3;19296:18;19312:1;19296:18;:::i;:::-;19291:23;;19328:18;19344:1;19328:18;:::i;:::-;19323:23;;19369:1;19366;19362:9;19355:16;;19392:4;19387:3;19384:13;19381:39;;;19400:18;;:::i;:::-;19381:39;19239:188;;;;:::o;19433:168::-;19573:20;19569:1;19561:6;19557:14;19550:44;19433:168;:::o;19607:366::-;19749:3;19770:67;19834:2;19829:3;19770:67;:::i;:::-;19763:74;;19846:93;19935:3;19846:93;:::i;:::-;19964:2;19959:3;19955:12;19948:19;;19607:366;;;:::o;19979:419::-;20145:4;20183:2;20172:9;20168:18;20160:26;;20232:9;20226:4;20222:20;20218:1;20207:9;20203:17;20196:47;20260:131;20386:4;20260:131;:::i;:::-;20252:139;;19979:419;;;:::o;20404:166::-;20544:18;20540:1;20532:6;20528:14;20521:42;20404:166;:::o;20576:366::-;20718:3;20739:67;20803:2;20798:3;20739:67;:::i;:::-;20732:74;;20815:93;20904:3;20815:93;:::i;:::-;20933:2;20928:3;20924:12;20917:19;;20576:366;;;:::o;20948:419::-;21114:4;21152:2;21141:9;21137:18;21129:26;;21201:9;21195:4;21191:20;21187:1;21176:9;21172:17;21165:47;21229:131;21355:4;21229:131;:::i;:::-;21221:139;;20948:419;;;:::o;21373:163::-;21513:15;21509:1;21501:6;21497:14;21490:39;21373:163;:::o;21542:366::-;21684:3;21705:67;21769:2;21764:3;21705:67;:::i;:::-;21698:74;;21781:93;21870:3;21781:93;:::i;:::-;21899:2;21894:3;21890:12;21883:19;;21542:366;;;:::o;21914:419::-;22080:4;22118:2;22107:9;22103:18;22095:26;;22167:9;22161:4;22157:20;22153:1;22142:9;22138:17;22131:47;22195:131;22321:4;22195:131;:::i;:::-;22187:139;;21914:419;;;:::o;22339:161::-;22479:13;22475:1;22467:6;22463:14;22456:37;22339:161;:::o;22506:366::-;22648:3;22669:67;22733:2;22728:3;22669:67;:::i;:::-;22662:74;;22745:93;22834:3;22745:93;:::i;:::-;22863:2;22858:3;22854:12;22847:19;;22506:366;;;:::o;22878:419::-;23044:4;23082:2;23071:9;23067:18;23059:26;;23131:9;23125:4;23121:20;23117:1;23106:9;23102:17;23095:47;23159:131;23285:4;23159:131;:::i;:::-;23151:139;;22878:419;;;:::o;23303:162::-;23443:14;23439:1;23431:6;23427:14;23420:38;23303:162;:::o;23471:366::-;23613:3;23634:67;23698:2;23693:3;23634:67;:::i;:::-;23627:74;;23710:93;23799:3;23710:93;:::i;:::-;23828:2;23823:3;23819:12;23812:19;;23471:366;;;:::o;23843:419::-;24009:4;24047:2;24036:9;24032:18;24024:26;;24096:9;24090:4;24086:20;24082:1;24071:9;24067:17;24060:47;24124:131;24250:4;24124:131;:::i;:::-;24116:139;;23843:419;;;:::o;24268:159::-;24408:11;24404:1;24396:6;24392:14;24385:35;24268:159;:::o;24433:365::-;24575:3;24596:66;24660:1;24655:3;24596:66;:::i;:::-;24589:73;;24671:93;24760:3;24671:93;:::i;:::-;24789:2;24784:3;24780:12;24773:19;;24433:365;;;:::o;24804:419::-;24970:4;25008:2;24997:9;24993:18;24985:26;;25057:9;25051:4;25047:20;25043:1;25032:9;25028:17;25021:47;25085:131;25211:4;25085:131;:::i;:::-;25077:139;;24804:419;;;:::o;25229:170::-;25369:22;25365:1;25357:6;25353:14;25346:46;25229:170;:::o;25405:366::-;25547:3;25568:67;25632:2;25627:3;25568:67;:::i;:::-;25561:74;;25644:93;25733:3;25644:93;:::i;:::-;25762:2;25757:3;25753:12;25746:19;;25405:366;;;:::o;25777:419::-;25943:4;25981:2;25970:9;25966:18;25958:26;;26030:9;26024:4;26020:20;26016:1;26005:9;26001:17;25994:47;26058:131;26184:4;26058:131;:::i;:::-;26050:139;;25777:419;;;:::o;26202:179::-;26342:31;26338:1;26330:6;26326:14;26319:55;26202:179;:::o;26387:366::-;26529:3;26550:67;26614:2;26609:3;26550:67;:::i;:::-;26543:74;;26626:93;26715:3;26626:93;:::i;:::-;26744:2;26739:3;26735:12;26728:19;;26387:366;;;:::o;26759:419::-;26925:4;26963:2;26952:9;26948:18;26940:26;;27012:9;27006:4;27002:20;26998:1;26987:9;26983:17;26976:47;27040:131;27166:4;27040:131;:::i;:::-;27032:139;;26759:419;;;:::o;27184:171::-;27324:23;27320:1;27312:6;27308:14;27301:47;27184:171;:::o;27361:366::-;27503:3;27524:67;27588:2;27583:3;27524:67;:::i;:::-;27517:74;;27600:93;27689:3;27600:93;:::i;:::-;27718:2;27713:3;27709:12;27702:19;;27361:366;;;:::o;27733:419::-;27899:4;27937:2;27926:9;27922:18;27914:26;;27986:9;27980:4;27976:20;27972:1;27961:9;27957:17;27950:47;28014:131;28140:4;28014:131;:::i;:::-;28006:139;;27733:419;;;:::o;28158:143::-;28215:5;28246:6;28240:13;28231:22;;28262:33;28289:5;28262:33;:::i;:::-;28158:143;;;;:::o;28307:351::-;28377:6;28426:2;28414:9;28405:7;28401:23;28397:32;28394:119;;;28432:79;;:::i;:::-;28394:119;28552:1;28577:64;28633:7;28624:6;28613:9;28609:22;28577:64;:::i;:::-;28567:74;;28523:128;28307:351;;;;:::o;28664:332::-;28785:4;28823:2;28812:9;28808:18;28800:26;;28836:71;28904:1;28893:9;28889:17;28880:6;28836:71;:::i;:::-;28917:72;28985:2;28974:9;28970:18;28961:6;28917:72;:::i;:::-;28664:332;;;;;:::o;29002:98::-;29053:6;29087:5;29081:12;29071:22;;29002:98;;;:::o;29106:147::-;29207:11;29244:3;29229:18;;29106:147;;;;:::o;29259:386::-;29363:3;29391:38;29423:5;29391:38;:::i;:::-;29445:88;29526:6;29521:3;29445:88;:::i;:::-;29438:95;;29542:65;29600:6;29595:3;29588:4;29581:5;29577:16;29542:65;:::i;:::-;29632:6;29627:3;29623:16;29616:23;;29367:278;29259:386;;;;:::o;29651:271::-;29781:3;29803:93;29892:3;29883:6;29803:93;:::i;:::-;29796:100;;29913:3;29906:10;;29651:271;;;;:::o;29928:173::-;30068:25;30064:1;30056:6;30052:14;30045:49;29928:173;:::o;30107:366::-;30249:3;30270:67;30334:2;30329:3;30270:67;:::i;:::-;30263:74;;30346:93;30435:3;30346:93;:::i;:::-;30464:2;30459:3;30455:12;30448:19;;30107:366;;;:::o;30479:419::-;30645:4;30683:2;30672:9;30668:18;30660:26;;30732:9;30726:4;30722:20;30718:1;30707:9;30703:17;30696:47;30760:131;30886:4;30760:131;:::i;:::-;30752:139;;30479:419;;;:::o;30904:60::-;30932:3;30953:5;30946:12;;30904:60;;;:::o;30970:142::-;31020:9;31053:53;31071:34;31080:24;31098:5;31080:24;:::i;:::-;31071:34;:::i;:::-;31053:53;:::i;:::-;31040:66;;30970:142;;;:::o;31118:126::-;31168:9;31201:37;31232:5;31201:37;:::i;:::-;31188:50;;31118:126;;;:::o;31250:134::-;31308:9;31341:37;31372:5;31341:37;:::i;:::-;31328:50;;31250:134;;;:::o;31390:147::-;31485:45;31524:5;31485:45;:::i;:::-;31480:3;31473:58;31390:147;;:::o;31543:238::-;31644:4;31682:2;31671:9;31667:18;31659:26;;31695:79;31771:1;31760:9;31756:17;31747:6;31695:79;:::i;:::-;31543:238;;;;:::o;31787:179::-;31927:31;31923:1;31915:6;31911:14;31904:55;31787:179;:::o;31972:366::-;32114:3;32135:67;32199:2;32194:3;32135:67;:::i;:::-;32128:74;;32211:93;32300:3;32211:93;:::i;:::-;32329:2;32324:3;32320:12;32313:19;;31972:366;;;:::o;32344:419::-;32510:4;32548:2;32537:9;32533:18;32525:26;;32597:9;32591:4;32587:20;32583:1;32572:9;32568:17;32561:47;32625:131;32751:4;32625:131;:::i;:::-;32617:139;;32344:419;;;:::o;32769:167::-;32909:19;32905:1;32897:6;32893:14;32886:43;32769:167;:::o;32942:366::-;33084:3;33105:67;33169:2;33164:3;33105:67;:::i;:::-;33098:74;;33181:93;33270:3;33181:93;:::i;:::-;33299:2;33294:3;33290:12;33283:19;;32942:366;;;:::o;33314:419::-;33480:4;33518:2;33507:9;33503:18;33495:26;;33567:9;33561:4;33557:20;33553:1;33542:9;33538:17;33531:47;33595:131;33721:4;33595:131;:::i;:::-;33587:139;;33314:419;;;:::o;33739:180::-;33787:77;33784:1;33777:88;33884:4;33881:1;33874:15;33908:4;33905:1;33898:15;33925:180;33973:77;33970:1;33963:88;34070:4;34067:1;34060:15;34094:4;34091:1;34084:15;34111:85;34156:7;34185:5;34174:16;;34111:85;;;:::o;34202:158::-;34260:9;34293:61;34311:42;34320:32;34346:5;34320:32;:::i;:::-;34311:42;:::i;:::-;34293:61;:::i;:::-;34280:74;;34202:158;;;:::o;34366:147::-;34461:45;34500:5;34461:45;:::i;:::-;34456:3;34449:58;34366:147;;:::o;34519:114::-;34586:6;34620:5;34614:12;34604:22;;34519:114;;;:::o;34639:184::-;34738:11;34772:6;34767:3;34760:19;34812:4;34807:3;34803:14;34788:29;;34639:184;;;;:::o;34829:132::-;34896:4;34919:3;34911:11;;34949:4;34944:3;34940:14;34932:22;;34829:132;;;:::o;34967:108::-;35044:24;35062:5;35044:24;:::i;:::-;35039:3;35032:37;34967:108;;:::o;35081:179::-;35150:10;35171:46;35213:3;35205:6;35171:46;:::i;:::-;35249:4;35244:3;35240:14;35226:28;;35081:179;;;;:::o;35266:113::-;35336:4;35368;35363:3;35359:14;35351:22;;35266:113;;;:::o;35415:732::-;35534:3;35563:54;35611:5;35563:54;:::i;:::-;35633:86;35712:6;35707:3;35633:86;:::i;:::-;35626:93;;35743:56;35793:5;35743:56;:::i;:::-;35822:7;35853:1;35838:284;35863:6;35860:1;35857:13;35838:284;;;35939:6;35933:13;35966:63;36025:3;36010:13;35966:63;:::i;:::-;35959:70;;36052:60;36105:6;36052:60;:::i;:::-;36042:70;;35898:224;35885:1;35882;35878:9;35873:14;;35838:284;;;35842:14;36138:3;36131:10;;35539:608;;;35415:732;;;;:::o;36153:831::-;36416:4;36454:3;36443:9;36439:19;36431:27;;36468:71;36536:1;36525:9;36521:17;36512:6;36468:71;:::i;:::-;36549:80;36625:2;36614:9;36610:18;36601:6;36549:80;:::i;:::-;36676:9;36670:4;36666:20;36661:2;36650:9;36646:18;36639:48;36704:108;36807:4;36798:6;36704:108;:::i;:::-;36696:116;;36822:72;36890:2;36879:9;36875:18;36866:6;36822:72;:::i;:::-;36904:73;36972:3;36961:9;36957:19;36948:6;36904:73;:::i;:::-;36153:831;;;;;;;;:::o;36990:807::-;37239:4;37277:3;37266:9;37262:19;37254:27;;37291:71;37359:1;37348:9;37344:17;37335:6;37291:71;:::i;:::-;37372:72;37440:2;37429:9;37425:18;37416:6;37372:72;:::i;:::-;37454:80;37530:2;37519:9;37515:18;37506:6;37454:80;:::i;:::-;37544;37620:2;37609:9;37605:18;37596:6;37544:80;:::i;:::-;37634:73;37702:3;37691:9;37687:19;37678:6;37634:73;:::i;:::-;37717;37785:3;37774:9;37770:19;37761:6;37717:73;:::i;:::-;36990:807;;;;;;;;;:::o;37803:143::-;37860:5;37891:6;37885:13;37876:22;;37907:33;37934:5;37907:33;:::i;:::-;37803:143;;;;:::o;37952:663::-;38040:6;38048;38056;38105:2;38093:9;38084:7;38080:23;38076:32;38073:119;;;38111:79;;:::i;:::-;38073:119;38231:1;38256:64;38312:7;38303:6;38292:9;38288:22;38256:64;:::i;:::-;38246:74;;38202:128;38369:2;38395:64;38451:7;38442:6;38431:9;38427:22;38395:64;:::i;:::-;38385:74;;38340:129;38508:2;38534:64;38590:7;38581:6;38570:9;38566:22;38534:64;:::i;:::-;38524:74;;38479:129;37952:663;;;;;:::o

Swarm Source

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