ETH Price: $3,396.21 (+1.44%)
Gas: 4.15 Gwei

Token

Shibeth (SHIBETH)
 

Overview

Max Total Supply

1,000,000 SHIBETH

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
300 SHIBETH

Value
$0.00
0x9ceb5e7787798b4e4bbb1927109b33e319d38e8e
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:
SHIBETH

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-01
*/

// SPDX-License-Identifier: MIT

/*

Website: https://shibeth.com
Twitter: https://twitter.com/Shibeth_ERC
Telegram: https://t.me/ShibethEntry

*/

pragma solidity ^0.8.7;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface WrappedETH {
    function deposit() external payable;
}

interface IDEXRouter{
		function factory() external pure returns (address);
		function WETH() external pure returns (address);
		function addLiquidity(
				address tokenA,
				address tokenB,
				uint amountADesired,
				uint amountBDesired,
				uint amountAMin,
				uint amountBMin,
				address to,
				uint deadline
		) external returns (uint amountA, uint amountB, uint liquidity);
		function addLiquidityETH(
				address token,
				uint amountTokenDesired,
				uint amountTokenMin,
				uint amountETHMin,
				address to,
				uint deadline
		) external payable returns (uint amountToken, uint amountETH, uint liquidity);	
        function swapExactTokensForTokensSupportingFeeOnTransferTokens(
			uint amountIn,
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external;
		function swapExactETHForTokensSupportingFeeOnTransferTokens(
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external payable;
		function swapExactTokensForETHSupportingFeeOnTransferTokens(
			uint amountIn,
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external;
}

interface IDEXFactory{
		event PairCreated(address indexed token0, address indexed token1, address pair, uint);
		function getPair(address tokenA, address tokenB) external view returns (address pair);
		function createPair(address tokenA, address tokenB) external returns (address pair);
}

contract Ownable is Context {

    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renouncedOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

interface IDividendDistributor {
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function claimReward(address shareHolder) external;
    function getUnpaidEarning(address shareholder) external view returns (uint256);
}

contract BTCDividend is IDividendDistributor {     //SHIBA
    
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
        uint256 reserved;
    }
    mapping (address => Share) public shares;
    
    IERC20 RewardToken = IERC20(0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE); // SHIBA CA

    IDEXRouter router;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 private totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public totalReserved;

    uint256 public dividendsPerShareAccuracyFactor = 10 ** 16;

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
        ? IDEXRouter(_router)
        : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RewardToken);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }
        uint256 amount = calEarning(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            shares[shareholder].reserved += amount;
            totalReserved += amount;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function getUnpaidEarning(address shareholder) public override view returns (uint256) {
        uint calReward = calEarning(shareholder);
        uint reservedReward = shares[shareholder].reserved;
        return calReward.add(reservedReward);
    }

    function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyToken {
        IERC20(tokenAddress).transfer(_receiver, tokens);
    }

    function rescueFunds(address _receiver) external onlyToken {
        payable(_receiver).transfer(address(this).balance);
    }

    function claimDividend() external {
        address user = msg.sender;
        transferShares(user);
    }

    function claimReward(address shareHolder) external override onlyToken {
        transferShares(shareHolder);
    }

    function transferShares(address user) internal {
        distributeDividend(user);
        uint subtotal = shares[user].reserved;
        if(subtotal > 0) {
            shares[user].reserved = 0;
            totalReserved = totalReserved.sub(subtotal);
            RewardToken.transfer(user, subtotal);
        }
    }

    function calEarning(address shareholder) internal view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }
        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

}

contract ETHDividend is IDividendDistributor {     //ETH
    
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
        uint256 reserved;
    }
    mapping (address => Share) public shares;
    
    IERC20 RewardToken = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); // WETH CA

    IDEXRouter router;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 private totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public totalReserved;

    uint256 public dividendsPerShareAccuracyFactor = 10 ** 26;

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
        ? IDEXRouter(_router)
        : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RewardToken.balanceOf(address(this));
        WrappedETH(address(RewardToken)).deposit{value: msg.value}();
        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }
        uint256 amount = calEarning(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            shares[shareholder].reserved += amount;
            totalReserved += amount;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function getUnpaidEarning(address shareholder) public override view returns (uint256) {
        uint calReward = calEarning(shareholder);
        uint reservedReward = shares[shareholder].reserved;
        return calReward.add(reservedReward);
    }

    function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyToken {
        IERC20(tokenAddress).transfer(_receiver, tokens);
    }

    function rescueFunds(address _receiver) external onlyToken {
        payable(_receiver).transfer(address(this).balance);
    }

    function claimDividend() external {
        address user = msg.sender;
        transferShares(user);
    }

    function claimReward(address shareHolder) external override onlyToken {
        transferShares(shareHolder);
    }

    function transferShares(address user) internal {
        distributeDividend(user);
        uint subtotal = shares[user].reserved;
        if(subtotal > 0) {
            shares[user].reserved = 0;
            totalReserved = totalReserved.sub(subtotal);
            RewardToken.transfer(user, subtotal);
        }
    }

    function calEarning(address shareholder) internal view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }
        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

}

contract SHIBETH is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "Shibeth";
    string private _symbol = "SHIBETH";
    uint8 private _decimals = 18;

    uint256 public buyMarketingFee = 200;
    uint256 public buyShibaFee = 10;
    uint256 public buyWETHFee = 10;

    uint256 public sellMarketingFee = 200;
    uint256 public sellShibaFee = 10;
    uint256 public sellWETHFee = 10;

    uint256 public totalBuy;
    uint256 public totalSell;

    uint256 public feeDenominator = 1000;

    address public _marketingWalletAddress = 0x2bA81B44b388Ea1282072C17104A0b5A5e6241bD;

    address private constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address private constant ZeroWallet = 0x0000000000000000000000000000000000000000;

    mapping (address => bool) private _isExcludedFromFees;

    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;
    
    mapping (address => bool) public automatedMarketMakerPairs;

    mapping(address => bool) public isBTCDivExempt;
    mapping(address => bool) public isETHDivExempt;
    mapping(address => bool) public blacklist;

    uint256 public _totalSupply = 1000000 * (10 ** _decimals);
    uint256 public swapTokensAtAmount = _totalSupply.mul(5).div(1e5); //0.05%

    uint256 public swapProtection = _totalSupply.mul(1).div(100);

    uint256 public MaxWalletLimit = _totalSupply.mul(20).div(feeDenominator);  //2%
    uint256 public MaxTxLimit = _totalSupply.mul(20).div(feeDenominator);      //2%

    bool public EnableTransactionLimit = true;
    bool public checkWalletLimit = true;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;  

    bool public _autoSwapBack = true;
    bool public ActiveTrading = false;

    BTCDividend public shibadividend;
    ETHDividend public ethdividend;
    address public rewardController;
    IDEXRouter public router;

    bool inSwap = false;
    
    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    modifier onlyRewardController {
        require(msg.sender == rewardController);
        _;
    }

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        address pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        _allowances[address(this)][address(router)] = ~uint256(0);

        shibadividend = new BTCDividend(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        ethdividend = new ETHDividend(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        rewardController = msg.sender;
        automatedMarketMakerPairs[pair] = true;

        isETHDivExempt[msg.sender] = true;
        isETHDivExempt[pair] = true;
        isETHDivExempt[address(this)] = true;
        isETHDivExempt[deadWallet] = true;
        isETHDivExempt[ZeroWallet] = true;

        isBTCDivExempt[msg.sender] = true;
        isBTCDivExempt[pair] = true;
        isBTCDivExempt[address(this)] = true;
        isBTCDivExempt[deadWallet] = true;
        isBTCDivExempt[ZeroWallet] = true;
        
        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[pair] = true;
        isWalletLimitExempt[address(this)] = true;

        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[address(this)] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        totalBuy = buyMarketingFee.add(buyShibaFee).add(buyWETHFee);
        totalSell = sellMarketingFee.add(sellShibaFee).add(sellWETHFee);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0x0), msg.sender, _totalSupply);
    }

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

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

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(_balances[deadWallet]).sub(_balances[ZeroWallet]);
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    function checkFeeExempt(address _addr) external view returns (bool) {
        return _isExcludedFromFees[_addr];
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function transfer(address to, uint256 value)
        external
        override
        validRecipient(to)
        returns (bool)
    {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        
        if (_allowances[from][msg.sender] != ~uint256(0)) {
            _allowances[from][msg.sender] = _allowances[from][
                msg.sender
            ].sub(value, "Insufficient Allowance");
        }
        _transferFrom(from, to, value);
        return true;
    }

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {

        require(!blacklist[sender] && !blacklist[recipient], "in_blacklist");

        if(!ActiveTrading) {
           require(_isExcludedFromFees[sender] || _isExcludedFromFees[recipient],"Error: Trading Paused!"); 
        }

        if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
            require(amount <= MaxTxLimit, "Transfer amount exceeds the maxTxAmount.");
        }

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (shouldSwapBack()) {
            swapBack();
        }
        
        _balances[sender] = _balances[sender].sub(amount);
        
        uint256 AmountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;

        if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
            require(balanceOf(recipient).add(AmountReceived) <= MaxWalletLimit);
        }
        
        _balances[recipient] = _balances[recipient].add(AmountReceived);

        if(!isBTCDivExempt[sender]){ try shibadividend.setShare(sender, balanceOf(sender)) {} catch {} }
        if(!isBTCDivExempt[recipient]){ try shibadividend.setShare(recipient, balanceOf(recipient)) {} catch {} }

        if(!isETHDivExempt[sender]){ try ethdividend.setShare(sender, balanceOf(sender)) {} catch {} }
        if(!isETHDivExempt[recipient]){ try ethdividend.setShare(recipient, balanceOf(recipient)) {} catch {} }

        emit Transfer(sender,recipient,AmountReceived);

        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal  returns (uint256) {

        uint256 feeAmount;
        
        if(automatedMarketMakerPairs[sender]){
            feeAmount = amount.mul(totalBuy).div(feeDenominator);
        }
        else if(automatedMarketMakerPairs[recipient]){
            feeAmount = amount.mul(totalSell).div(feeDenominator);
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function swapBack() internal swapping {
        uint256 contractBalance = balanceOf(address(this));
        uint totalShares = totalBuy.add(totalSell);
        if(totalShares == 0) return;

        if(contractBalance > swapProtection) {
            contractBalance = swapProtection;
        }

        uint _mshares = buyMarketingFee.add(sellMarketingFee);
        uint _btcshares = buyShibaFee.add(sellShibaFee);
        // uint _ethshares = buyWETHFee.add(sellWETHFee);
        uint initalBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint recievedBalance = address(this).balance.sub(initalBalance);

        uint MarketingShares = recievedBalance.mul(_mshares).div(totalShares);
        uint BTCdividendShares = recievedBalance.mul(_btcshares).div(totalShares);
        uint ETHDividendShares = recievedBalance.sub(MarketingShares).sub(BTCdividendShares);
        if(MarketingShares > 0) {
            payable(_marketingWalletAddress).transfer(MarketingShares);
        }
        if(BTCdividendShares > 0) {
            try shibadividend.deposit { value: BTCdividendShares } () {} catch {}             
        }
        if(ETHDividendShares > 0) {
            try ethdividend.deposit { value: ETHDividendShares } () {} catch {}    
        }
    }

    function shouldTakeFee(address from, address to)
        internal
        view
        returns (bool)
    {
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            return false;
        }        
        else{
            return (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]);
        }
    }

    function shouldSwapBack() internal view returns (bool) {

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        return
            canSwap &&
            _autoSwapBack &&
            !inSwap &&
            !automatedMarketMakerPairs[msg.sender]; 
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 oldValue = _allowances[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowances[msg.sender][spender] = 0;
        } else {
            _allowances[msg.sender][spender] = oldValue.sub(
                subtractedValue
            );
        }
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool)
    {
        _allowances[msg.sender][spender] = _allowances[msg.sender][
            spender
        ].add(addedValue);
        emit Approval(
            msg.sender,
            spender,
            _allowances[msg.sender][spender]
        );
        return true;
    }

    function manualSwap() external onlyOwner {
        if(inSwap) {
            revert("Already in Swap");
        }
        swapBack();
    }

    function enableDisableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function enableDisableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function enableTrading(bool _status) external onlyOwner {
        ActiveTrading = _status;
    }

    function setAutoSwapBack(bool _flag) external onlyOwner {
        _autoSwapBack = _flag;
    }

    function setFeeReceivers(address _marketing) external onlyRewardController {
        _marketingWalletAddress = _marketing;
    }

    function setMaxWalletLimit(uint _value) external onlyOwner {
        MaxWalletLimit = _value;
    }

    function setMaxTxLimit(uint _value) external onlyOwner {
        MaxTxLimit = _value; 
    }

    function setBuyFee(
            uint _newMarketing,
            uint _newShiba,
            uint _newWETH
        ) external onlyOwner {
        buyMarketingFee = _newMarketing;
        buyShibaFee = _newShiba;
        buyWETHFee = _newWETH;
        totalBuy = buyMarketingFee.add(buyShibaFee).add(buyWETHFee);
    }

    function setSellFee(
            uint _newMarketing,
            uint _newShiba,
            uint _newWETH
        ) external onlyOwner {
        sellMarketingFee = _newMarketing;
        sellShibaFee = _newShiba;
        sellWETHFee = _newWETH;
        totalSell = sellMarketingFee.add(sellShibaFee).add(sellWETHFee);
    }

    function setAutomaticPairMarket(address _addr,bool _status) external onlyOwner {
        if(_status) {
            require(!automatedMarketMakerPairs[_addr],"Pair Already Set!!");
        }
        automatedMarketMakerPairs[_addr] = _status;
        isWalletLimitExempt[_addr] = true;
        isETHDivExempt[_addr] = true;
        isBTCDivExempt[_addr] = true;
    }

    function excludeShibaDividend(address _addr,bool _status) external onlyOwner {
        if(_status) {
            shibadividend.setShare(_addr,0);
        }
        else {
            shibadividend.setShare(_addr,balanceOf(_addr));
        }
        isBTCDivExempt[_addr] = _status;
    } 

    function excludeEthDividend(address _addr,bool _status) external onlyOwner {
        if(_status) {
            ethdividend.setShare(_addr,0);
        }
        else {
            ethdividend.setShare(_addr,balanceOf(_addr));
        }
        isETHDivExempt[_addr] = _status;
    }   

    function enableFee(address _addr,bool _status) external onlyOwner {
        _isExcludedFromFees[_addr] = _status;
    }

    function enableTxLimit(address _addr,bool _status) external onlyOwner {
        isTxLimitExempt[_addr] = _status;
    }

    function enableWalletLimit(address _addr,bool _status) external onlyOwner {
        isWalletLimitExempt[_addr] = _status;
    }

    function setBotBlacklist(address _botAddress, bool _flag) external onlyOwner {
        blacklist[_botAddress] = _flag;    
    }

    function setMinSwapAmount(uint _value) external onlyOwner {
        swapTokensAtAmount = _value;
    }  

    function setSwapProtection(uint _value) external onlyOwner {
        swapProtection = _value;
    }

    //claimers

    function shibaReward() external {
        shibadividend.claimReward(msg.sender);
    }

    function ethReward() external {
        ethdividend.claimReward(msg.sender);
    }

    //Rescuers

    function getShibaRewardInfo(address _receiver) external view returns (uint) {
        return shibadividend.getUnpaidEarning(_receiver);
    }

    function getETHRewardInfo(address _receiver) external view returns (uint) {
        return ethdividend.getUnpaidEarning(_receiver);
    }

    function shibaRescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyRewardController {
        shibadividend.rescueToken(tokenAddress,_receiver,tokens);
    }

    function shibaRescueFunds(address _receiver) external onlyRewardController {
        shibadividend.rescueFunds(_receiver);
    }

    function ethRescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyRewardController {
        ethdividend.rescueToken(tokenAddress,_receiver,tokens);
    }

    function ethRescueFunds(address _receiver) external onlyRewardController {
        ethdividend.rescueFunds(_receiver);
    }

    function rescueFunds() external onlyRewardController {
        payable(msg.sender).transfer(address(this).balance);
    }

    function rescueToken(address _token, uint _value) external onlyRewardController {
        IERC20(_token).transfer(msg.sender,_value);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
   
    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"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":"ActiveTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoSwapBack","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyShibaFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyWETHFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableDisableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"ethRescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ethRescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethdividend","outputs":[{"internalType":"contract ETHDividend","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeEthDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeShibaDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"getETHRewardInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"getShibaRewardInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBTCDivExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isETHDivExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellShibaFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellWETHFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAutomaticPairMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_botAddress","type":"address"},{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setBotBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newShiba","type":"uint256"},{"internalType":"uint256","name":"_newWETH","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMarketing","type":"uint256"},{"internalType":"uint256","name":"_newShiba","type":"uint256"},{"internalType":"uint256","name":"_newWETH","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setSwapProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"shibaRescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"shibaRescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shibaReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shibadividend","outputs":[{"internalType":"contract BTCDividend","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapProtection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260076080819052660a6d0d2c4cae8d60cb1b60a09081526200002a91600191906200088d565b50604080518082019091526007808252660a69092848aa8960cb1b60209092019182526200005b916002916200088d565b506003805460ff1916601290811790915560c86004819055600a60058190556006819055600791909155600881905560098190556103e8600c55600d80546001600160a01b031916732ba81b44b388ea1282072c17104a0b5a5e6241bd179055620000c7919062000a59565b620000d690620f424062000b18565b60155562000112620186a0620000fe60056015546200071060201b62001ec71790919060201c565b620007a460201b62001f4d1790919060201c565b601655620001386064620000fe60016015546200071060201b62001ec71790919060201c565b6017556200015f600c54620000fe60146015546200071060201b62001ec71790919060201c565b60185562000186600c54620000fe60146015546200071060201b62001ec71790919060201c565b601955601a805461010161ffff1991821617909155601d805490911660011790556020805460ff60a01b19169055348015620001c157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556040805163c45a015560e01b8152905160009363c45a01559260048082019391829003018186803b1580156200026057600080fd5b505afa15801562000275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029b91906200094f565b60208054604080516315ab88c960e31b815290516001600160a01b039485169463c9c653969493169263ad5c46489260048082019391829003018186803b158015620002e657600080fd5b505afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032191906200094f565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200036957600080fd5b505af11580156200037e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a491906200094f565b306000908152601c6020908152604080832082546001600160a01b0316845290915290819020600019905551909150737a250d5630b4cf539739df2c5dacb4c659f2488d90620003f4906200091c565b6001600160a01b039091168152602001604051809103906000f08015801562000421573d6000803e3d6000fd5b50601d60026101000a8154816001600160a01b0302191690836001600160a01b03160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d6040516200046b906200092a565b6001600160a01b039091168152602001604051809103906000f08015801562000498573d6000803e3d6000fd5b50601e80546001600160a01b03199081166001600160a01b0393841617909155601f8054339216821790559082166000818152601160209081526040808320805460ff19908116600190811790925586855260138452828520805482168317905585855282852080548216831790553080865283862080548316841790557f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c80548316841790557f8fa6efc3be94b5b348b21fea823fe8d100408cee9b7f90524494500445d8ff6c8054831684179055878652601285528386208054831684179055868652838620805483168417905580865283862080548316841790557f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f780548316841790557f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b805483168417905587865260108552838620805483168417905595855282852080548216831790558585528285208054821683179055868552600e845282852080548216831790558585528285208054821683179055958452600f83528184208054871682179055938352909120805490931690911790915560065460055460045462000690936200067c9290620007ee811b62001f8f17901c565b620007ee60201b62001f8f1790919060201c565b600a81905550620006bb6009546200067c600854600754620007ee60201b62001f8f1790919060201c565b600b55601554336000818152601b6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000b8d565b60008262000721575060006200079e565b60006200072f838562000b18565b9050826200073e8583620009ed565b146200079b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200079b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200085160201b60201c565b600080620007fd8385620009d2565b9050838110156200079b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000792565b60008183620008755760405162461bcd60e51b81526004016200079291906200097a565b506000620008848486620009ed565b95945050505050565b8280546200089b9062000b3a565b90600052602060002090601f016020900481019282620008bf57600085556200090a565b82601f10620008da57805160ff19168380011785556200090a565b828001600101855582156200090a579182015b828111156200090a578251825591602001919060010190620008ed565b506200091892915062000938565b5090565b610ef08062003cad83390190565b610d618062004b9d83390190565b5b8082111562000918576000815560010162000939565b6000602082840312156200096257600080fd5b81516001600160a01b03811681146200079b57600080fd5b600060208083528351808285015260005b81811015620009a9578581018301518582016040015282016200098b565b81811115620009bc576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115620009e857620009e862000b77565b500190565b60008262000a0b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111562000a5157816000190482111562000a355762000a3562000b77565b8085161562000a4357918102915b93841c939080029062000a15565b509250929050565b60006200079b60ff84168360008262000a75575060016200079e565b8162000a84575060006200079e565b816001811462000a9d576002811462000aa85762000ac8565b60019150506200079e565b60ff84111562000abc5762000abc62000b77565b50506001821b6200079e565b5060208310610133831016604e8410600b841016171562000aed575081810a6200079e565b62000af9838362000a10565b806000190482111562000b105762000b1062000b77565b029392505050565b600081600019048311821515161562000b355762000b3562000b77565b500290565b600181811c9082168062000b4f57607f821691505b6020821081141562000b7157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6131108062000b9d6000396000f3fe60806040526004361061044b5760003560e01c806373129e5211610234578063d37e6ff41161012e578063e2f45605116100b6578063f2fde38b1161007a578063f2fde38b14610d28578063f872858a14610d48578063f887ea4014610d67578063f9f92be414610d87578063fdd24dfe14610db757600080fd5b8063e2f4560514610c9d578063e6b2603b14610cb3578063ea8b2c4414610cc8578063eac25cbb14610ce8578063f275f64b14610d0857600080fd5b8063dd656b63116100fd578063dd656b6314610c11578063dda9167614610c27578063e01bb68814610c47578063e0202f8714610c67578063e0de51ef14610c7d57600080fd5b8063d37e6ff414610b42578063d439979014610b72578063dbf5360c14610bab578063dd62ed3e14610bcb57600080fd5b806392136913116101bc578063b43725b111610180578063b43725b114610a7c578063b62496f514610a9c578063b8d317ec14610acc578063be479d9114610aec578063c867d60b14610b1257600080fd5b806392136913146109fb57806395d89b4114610a11578063a457c2d714610a26578063a9059cbb14610a46578063b1c09b2a14610a6657600080fd5b80638b42507f116102035780638b42507f146109575780638cc5ce99146109875780638da5cb5b146109a75780638e34b1a3146109c55780638f32d59b146109db57600080fd5b806373129e52146108e75780637bce5a041461090757806383b4ac681461091d578063852614851461093d57600080fd5b80633a5ec0fb116103455780634bf74324116102cd5780636140a51e116102915780636140a51e1461084d57806364f5a5bb1461086d57806370a082311461088d57806370ee7395146108ad578063728d41c9146108c757600080fd5b80634bf74324146107c25780634f322c51146107e257806351bc3c8514610802578063531295971461081757806355acbc331461082d57600080fd5b80633eaaf86b116103145780633eaaf86b146107145780634144d9e41461072a5780634201181114610762578063492dbf4b146107825780634bc6dd18146107a257600080fd5b80633a5ec0fb146106a45780633bb32840146106b95780633e05e01b146106cf5780633e7be973146106e457600080fd5b806323b872dd116103d3578063320d453411610397578063320d45341461060e578063334901911461062e57806333f3d6281461064457806337c9be8714610664578063395093511461068457600080fd5b806323b872dd1461057757806325519cf2146105975780632563ae83146105b75780632b112e49146105d7578063313ce567146105ec57600080fd5b806318160ddd1161041a57806318160ddd146104f85780631a032b041461050d5780631d865c301461052c57806320365d5f1461054c57806323a2f1fc1461056157600080fd5b806306fdde0314610457578063095ea7b31461048257806315bdde40146104b2578063180b0d7e146104d457600080fd5b3661045257005b600080fd5b34801561046357600080fd5b5061046c610dcd565b6040516104799190612ee5565b60405180910390f35b34801561048e57600080fd5b506104a261049d366004612e21565b610e5f565b6040519015158152602001610479565b3480156104be57600080fd5b506104d26104cd366004612d3f565b610e76565b005b3480156104e057600080fd5b506104ea600c5481565b604051908152602001610479565b34801561050457600080fd5b506015546104ea565b34801561051957600080fd5b50601d546104a290610100900460ff1681565b34801561053857600080fd5b506104d2610547366004612eb9565b610ef7565b34801561055857600080fd5b506104d2610f55565b34801561056d57600080fd5b506104ea60195481565b34801561058357600080fd5b506104a2610592366004612db2565b610fcf565b3480156105a357600080fd5b506104d26105b2366004612eb9565b6110a9565b3480156105c357600080fd5b506104d26105d2366004612e4d565b6110f8565b3480156105e357600080fd5b506104ea61113c565b3480156105f857600080fd5b5060035460405160ff9091168152602001610479565b34801561061a57600080fd5b506104d2610629366004612e87565b6111ad565b34801561063a57600080fd5b506104ea60185481565b34801561065057600080fd5b506104d261065f366004612e21565b6111dc565b34801561067057600080fd5b506104d261067f366004612df3565b611278565b34801561069057600080fd5b506104a261069f366004612e21565b6112cd565b3480156106b057600080fd5b506104d261135e565b3480156106c557600080fd5b506104ea60065481565b3480156106db57600080fd5b506104d26113c3565b3480156106f057600080fd5b506104a26106ff366004612d3f565b60136020526000908152604090205460ff1681565b34801561072057600080fd5b506104ea60155481565b34801561073657600080fd5b50600d5461074a906001600160a01b031681565b6040516001600160a01b039091168152602001610479565b34801561076e57600080fd5b506104ea61077d366004612d3f565b6113f3565b34801561078e57600080fd5b506104d261079d366004612db2565b611472565b3480156107ae57600080fd5b506104d26107bd366004612e4d565b611504565b3480156107ce57600080fd5b506104d26107dd366004612df3565b611541565b3480156107ee57600080fd5b506104d26107fd366004612db2565b611596565b34801561080e57600080fd5b506104d26115ee565b34801561082357600080fd5b506104ea60085481565b34801561083957600080fd5b506104d2610848366004612df3565b61166e565b34801561085957600080fd5b506104d2610868366004612e4d565b6116c3565b34801561087957600080fd5b506104d2610888366004612e87565b611700565b34801561089957600080fd5b506104ea6108a8366004612d3f565b61172f565b3480156108b957600080fd5b50601d546104a29060ff1681565b3480156108d357600080fd5b506104d26108e2366004612e87565b61174a565b3480156108f357600080fd5b506104d2610902366004612d3f565b611779565b34801561091357600080fd5b506104ea60045481565b34801561092957600080fd5b50602054600160a01b900460ff16156104a2565b34801561094957600080fd5b50601a546104a29060ff1681565b34801561096357600080fd5b506104a2610972366004612d3f565b600f6020526000908152604090205460ff1681565b34801561099357600080fd5b50601f5461074a906001600160a01b031681565b3480156109b357600080fd5b506000546001600160a01b031661074a565b3480156109d157600080fd5b506104ea60095481565b3480156109e757600080fd5b506000546001600160a01b031633146104a2565b348015610a0757600080fd5b506104ea60075481565b348015610a1d57600080fd5b5061046c6117c2565b348015610a3257600080fd5b506104a2610a41366004612e21565b6117d1565b348015610a5257600080fd5b506104a2610a61366004612e21565b6118b8565b348015610a7257600080fd5b506104ea600a5481565b348015610a8857600080fd5b506104ea610a97366004612d3f565b6118e4565b348015610aa857600080fd5b506104a2610ab7366004612d3f565b60116020526000908152604090205460ff1681565b348015610ad857600080fd5b506104d2610ae7366004612df3565b61191d565b348015610af857600080fd5b50601d5461074a906201000090046001600160a01b031681565b348015610b1e57600080fd5b506104a2610b2d366004612d3f565b60106020526000908152604090205460ff1681565b348015610b4e57600080fd5b506104a2610b5d366004612d3f565b60126020526000908152604090205460ff1681565b348015610b7e57600080fd5b506104a2610b8d366004612d3f565b6001600160a01b03166000908152600e602052604090205460ff1690565b348015610bb757600080fd5b506104d2610bc6366004612e87565b611a6a565b348015610bd757600080fd5b506104ea610be6366004612d79565b6001600160a01b039182166000908152601c6020908152604080832093909416825291909152205490565b348015610c1d57600080fd5b506104ea60055481565b348015610c3357600080fd5b506104d2610c42366004612df3565b611a99565b348015610c5357600080fd5b506104d2610c62366004612d3f565b611bd9565b348015610c7357600080fd5b506104ea600b5481565b348015610c8957600080fd5b506104d2610c98366004612df3565b611c12565b348015610ca957600080fd5b506104ea60165481565b348015610cbf57600080fd5b506104d2611c67565b348015610cd457600080fd5b506104d2610ce3366004612df3565b611cad565b348015610cf457600080fd5b50601e5461074a906001600160a01b031681565b348015610d1457600080fd5b506104d2610d23366004612e4d565b611d99565b348015610d3457600080fd5b506104d2610d43366004612d3f565b611ddd565b348015610d5457600080fd5b50601a546104a290610100900460ff1681565b348015610d7357600080fd5b5060205461074a906001600160a01b031681565b348015610d9357600080fd5b506104a2610da2366004612d3f565b60146020526000908152604090205460ff1681565b348015610dc357600080fd5b506104ea60175481565b606060018054610ddc90613050565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0890613050565b8015610e555780601f10610e2a57610100808354040283529160200191610e55565b820191906000526020600020905b815481529060010190602001808311610e3857829003601f168201915b5050505050905090565b6000610e6c338484611fee565b5060015b92915050565b601f546001600160a01b03163314610e8d57600080fd5b601d5460405163e53b201760e01b81526001600160a01b038381166004830152620100009092049091169063e53b2017906024015b600060405180830381600087803b158015610edc57600080fd5b505af1158015610ef0573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610f2a5760405162461bcd60e51b8152600401610f2190612f3a565b60405180910390fd5b600783905560088290556009819055610f4d81610f478585611f8f565b90611f8f565b600b55505050565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b8152600401610f2190612f3a565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000826001600160a01b038116610fe557600080fd5b6001600160a01b0385166000908152601c6020908152604080832033845290915290205460001914611092576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0388166000908152601c8252838120338252909152919091205461106d918590612112565b6001600160a01b0386166000908152601c602090815260408083203384529091529020555b61109d85858561214c565b50600195945050505050565b6000546001600160a01b031633146110d35760405162461bcd60e51b8152600401610f2190612f3a565b6004839055600582905560068190556110f081610f478585611f8f565b600a55505050565b6000546001600160a01b031633146111225760405162461bcd60e51b8152600401610f2190612f3a565b601a80549115156101000261ff0019909216919091179055565b601b6020527f584f46c60af19681376031579adb04a2416e54ee5505351c2a8435e3766026ea5461dead60009081527f6790d4910a095e0e04c8daa388834616a295bac3f59038957b6d0b93a2d216845460155491926111a89290916111a291906126e8565b906126e8565b905090565b6000546001600160a01b031633146111d75760405162461bcd60e51b8152600401610f2190612f3a565b601655565b601f546001600160a01b031633146111f357600080fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561123b57600080fd5b505af115801561124f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112739190612e6a565b505050565b6000546001600160a01b031633146112a25760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b336000908152601c602090815260408083206001600160a01b03861684529091528120546112fb9083611f8f565b336000818152601c602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b601d5460405163d279c19160e01b8152336004820152620100009091046001600160a01b03169063d279c191906024015b600060405180830381600087803b1580156113a957600080fd5b505af11580156113bd573d6000803e3d6000fd5b50505050565b601e5460405163d279c19160e01b81523360048201526001600160a01b039091169063d279c1919060240161138f565b601e54604051630650c78760e01b81526001600160a01b0383811660048301526000921690630650c787906024015b60206040518083038186803b15801561143a57600080fd5b505afa15801561144e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e709190612ea0565b601f546001600160a01b0316331461148957600080fd5b601d5460405163e5711e8b60e01b81526001600160a01b038581166004830152848116602483015260448201849052620100009092049091169063e5711e8b906064015b600060405180830381600087803b1580156114e757600080fd5b505af11580156114fb573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b0316331461152e5760405162461bcd60e51b8152600401610f2190612f3a565b601d805460ff1916911515919091179055565b6000546001600160a01b0316331461156b5760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b601f546001600160a01b031633146115ad57600080fd5b601e5460405163e5711e8b60e01b81526001600160a01b0385811660048301528481166024830152604482018490529091169063e5711e8b906064016114cd565b6000546001600160a01b031633146116185760405162461bcd60e51b8152600401610f2190612f3a565b602054600160a01b900460ff16156116645760405162461bcd60e51b815260206004820152600f60248201526e0416c726561647920696e205377617608c1b6044820152606401610f21565b61166c61272a565b565b6000546001600160a01b031633146116985760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116ed5760405162461bcd60e51b8152600401610f2190612f3a565b601a805460ff1916911515919091179055565b6000546001600160a01b0316331461172a5760405162461bcd60e51b8152600401610f2190612f3a565b601955565b6001600160a01b03166000908152601b602052604090205490565b6000546001600160a01b031633146117745760405162461bcd60e51b8152600401610f2190612f3a565b601855565b601f546001600160a01b0316331461179057600080fd5b601e5460405163e53b201760e01b81526001600160a01b0383811660048301529091169063e53b201790602401610ec2565b606060028054610ddc90613050565b336000908152601c602090815260408083206001600160a01b038616845290915281205480831061182557336000908152601c602090815260408083206001600160a01b0388168452909152812055611854565b61182f81846126e8565b336000908152601c602090815260408083206001600160a01b03891684529091529020555b336000818152601c602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6000826001600160a01b0381166118ce57600080fd5b6118d933858561214c565b506001949350505050565b601d54604051630650c78760e01b81526001600160a01b0383811660048301526000926201000090041690630650c78790602401611422565b6000546001600160a01b031633146119475760405162461bcd60e51b8152600401610f2190612f3a565b80156119bf57601d54604051630a5b654b60e11b81526001600160a01b0384811660048301526000602483015262010000909204909116906314b6ca9690604401600060405180830381600087803b1580156119a257600080fd5b505af11580156119b6573d6000803e3d6000fd5b50505050611a3f565b601d546201000090046001600160a01b03166314b6ca96836119e08161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611a2657600080fd5b505af1158015611a3a573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a945760405162461bcd60e51b8152600401610f2190612f3a565b601755565b6000546001600160a01b03163314611ac35760405162461bcd60e51b8152600401610f2190612f3a565b8015611b3457601e54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b50505050611bae565b601e546001600160a01b03166314b6ca9683611b4f8161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611b9557600080fd5b505af1158015611ba9573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b601f546001600160a01b03163314611bf057600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c3c5760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b601f546001600160a01b03163314611c7e57600080fd5b60405133904780156108fc02916000818181858888f19350505050158015611caa573d6000803e3d6000fd5b50565b6000546001600160a01b03163314611cd75760405162461bcd60e51b8152600401610f2190612f3a565b8015611d3b576001600160a01b03821660009081526011602052604090205460ff1615611d3b5760405162461bcd60e51b81526020600482015260126024820152715061697220416c726561647920536574212160701b6044820152606401610f21565b6001600160a01b039091166000908152601160209081526040808320805494151560ff199586161790556010825280832080548516600190811790915560138352818420805486168217905560129092529091208054909216179055565b6000546001600160a01b03163314611dc35760405162461bcd60e51b8152600401610f2190612f3a565b601d80549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611e075760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b038116611e6c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610f21565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082611ed657506000610e70565b6000611ee2838561301a565b905082611eef8583612ff8565b14611f465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610f21565b9392505050565b6000611f4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061293a565b600080611f9c8385612fe0565b905083811015611f465760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610f21565b6001600160a01b0383166120505760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610f21565b6001600160a01b0382166120b15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610f21565b6001600160a01b038381166000818152601c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081848411156121365760405162461bcd60e51b8152600401610f219190612ee5565b5060006121438486613039565b95945050505050565b6001600160a01b03831660009081526014602052604081205460ff1615801561218e57506001600160a01b03831660009081526014602052604090205460ff16155b6121c95760405162461bcd60e51b815260206004820152600c60248201526b1a5b97d89b1858dadb1a5cdd60a21b6044820152606401610f21565b601d54610100900460ff1661225c576001600160a01b0384166000908152600e602052604090205460ff168061221757506001600160a01b0383166000908152600e602052604090205460ff165b61225c5760405162461bcd60e51b81526020600482015260166024820152754572726f723a2054726164696e67205061757365642160501b6044820152606401610f21565b6001600160a01b0384166000908152600f602052604090205460ff1615801561229e57506001600160a01b0383166000908152600f602052604090205460ff16155b80156122ac5750601a5460ff165b15612314576019548211156123145760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610f21565b602054600160a01b900460ff161561233857612331848484612968565b9050611f46565b6123406129dd565b1561234d5761234d61272a565b6001600160a01b0384166000908152601b602052604090205461237090836126e8565b6001600160a01b0385166000908152601b60205260408120919091556123968585612a3b565b6123a057826123ab565b6123ab858585612acd565b601a54909150610100900460ff1680156123de57506001600160a01b03841660009081526010602052604090205460ff16155b156123fe576018546123f382610f478761172f565b11156123fe57600080fd5b6001600160a01b0384166000908152601b60205260409020546124219082611f8f565b6001600160a01b038086166000908152601b602090815260408083209490945591881681526012909152205460ff166124ce57601d546201000090046001600160a01b03166314b6ca96866124758161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156124bb57600080fd5b505af19250505080156124cc575060015b505b6001600160a01b03841660009081526012602052604090205460ff1661256857601d546201000090046001600160a01b03166314b6ca968561250f8161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561255557600080fd5b505af1925050508015612566575060015b505b6001600160a01b03851660009081526013602052604090205460ff166125fc57601e546001600160a01b03166314b6ca96866125a38161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156125e957600080fd5b505af19250505080156125fa575060015b505b6001600160a01b03841660009081526013602052604090205460ff1661269057601e546001600160a01b03166314b6ca96856126378161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561267d57600080fd5b505af192505050801561268e575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126d591815260200190565b60405180910390a3506001949350505050565b6000611f4683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612112565b6020805460ff60a01b1916600160a01b17905560006127483061172f565b90506000612763600b54600a54611f8f90919063ffffffff16565b90508061277157505061292b565b6017548211156127815760175491505b600061279a600754600454611f8f90919063ffffffff16565b905060006127b5600854600554611f8f90919063ffffffff16565b9050476127c185612bd5565b60006127cd47836126e8565b905060006127e5866127df8488611ec7565b90611f4d565b905060006127f7876127df8588611ec7565b90506000612809826111a286866126e8565b9050821561284d57600d546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801561284b573d6000803e3d6000fd5b505b81156128b757601d60029054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156128a357600080fd5b505af1935050505080156128b5575060015b505b801561292157601e60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561290d57600080fd5b505af19350505050801561291f575060015b505b5050505050505050505b6020805460ff60a01b19169055565b6000818361295b5760405162461bcd60e51b8152600401610f219190612ee5565b5060006121438486612ff8565b6001600160a01b0383166000908152601b602052604081205461298b90836126e8565b6001600160a01b038086166000908152601b602052604080822093909355908516815220546129ba9083611f8f565b6001600160a01b0384166000908152601b60205260409020555060019392505050565b6000806129e93061172f565b60165490915081108015908190612a025750601d5460ff165b8015612a185750602054600160a01b900460ff16155b8015612a3457503360009081526011602052604090205460ff16155b9250505090565b6001600160a01b0382166000908152600e602052604081205460ff1680612a7a57506001600160a01b0382166000908152600e602052604090205460ff165b15612a8757506000610e70565b6001600160a01b03831660009081526011602052604090205460ff1680612ac657506001600160a01b03821660009081526011602052604090205460ff165b9050610e70565b6001600160a01b038316600090815260116020526040812054819060ff1615612b1257612b0b600c546127df600a5486611ec790919063ffffffff16565b9050612b51565b6001600160a01b03841660009081526011602052604090205460ff1615612b5157612b4e600c546127df600b5486611ec790919063ffffffff16565b90505b8015612bcb57306000908152601b6020526040902054612b719082611f8f565b306000818152601b6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612bc29085815260200190565b60405180910390a35b61214383826126e8565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c0a57612c0a6130a1565b6001600160a01b039283166020918202929092018101919091528054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612c5d57600080fd5b505afa158015612c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c959190612d5c565b81600181518110612ca857612ca86130a1565b6001600160a01b0392831660209182029290920181019190915254612cd09130911684611fee565b60205460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d09908590600090869030904290600401612f6f565b600060405180830381600087803b158015612d2357600080fd5b505af1158015612d37573d6000803e3d6000fd5b505050505050565b600060208284031215612d5157600080fd5b8135611f46816130b7565b600060208284031215612d6e57600080fd5b8151611f46816130b7565b60008060408385031215612d8c57600080fd5b8235612d97816130b7565b91506020830135612da7816130b7565b809150509250929050565b600080600060608486031215612dc757600080fd5b8335612dd2816130b7565b92506020840135612de2816130b7565b929592945050506040919091013590565b60008060408385031215612e0657600080fd5b8235612e11816130b7565b91506020830135612da7816130cc565b60008060408385031215612e3457600080fd5b8235612e3f816130b7565b946020939093013593505050565b600060208284031215612e5f57600080fd5b8135611f46816130cc565b600060208284031215612e7c57600080fd5b8151611f46816130cc565b600060208284031215612e9957600080fd5b5035919050565b600060208284031215612eb257600080fd5b5051919050565b600080600060608486031215612ece57600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b81811015612f1257858101830151858201604001528201612ef6565b81811115612f24576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612fbf5784516001600160a01b031683529383019391830191600101612f9a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ff357612ff361308b565b500190565b60008261301557634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130345761303461308b565b500290565b60008282101561304b5761304b61308b565b500390565b600181811c9082168061306457607f821691505b6020821081141561308557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611caa57600080fd5b8015158114611caa57600080fdfea26469706673582212206b6dd0653d592b91022c5573dbe589ba2594052a55f0190b0c3d2831247eefe064736f6c634300080700336080604052600280546001600160a01b0319167395ad61b0a150d79219dcf64e1e6cc01f0b64c4ce179055662386f26fc1000060095534801561004157600080fd5b50604051610ef0380380610ef0833981016040819052610060916100ba565b6001600160a01b03811661008857737a250d5630b4cf539739df2c5dacb4c659f2488d61008a565b805b600380546001600160a01b03929092166001600160a01b03199283161790556000805490911633179055506100ea565b6000602082840312156100cc57600080fd5b81516001600160a01b03811681146100e357600080fd5b9392505050565b610df7806100f96000396000f3fe6080604052600436106100c25760003560e01c8063ce7c2ac21161007f578063e2d2e21911610059578063e2d2e219146101ff578063e53b201714610215578063e5711e8b14610235578063f0fc6bca1461025557600080fd5b8063ce7c2ac214610174578063d0e30db0146101d7578063d279c191146101df57600080fd5b80630650c787146100c757806311ce023d146100fa57806314b6ca96146101105780633a98ef3914610132578063997664d714610148578063c71b0e1c1461015e575b600080fd5b3480156100d357600080fd5b506100e76100e2366004610b6f565b61026a565b6040519081526020015b60405180910390f35b34801561010657600080fd5b506100e760095481565b34801561011c57600080fd5b5061013061012b366004610bea565b6102a7565b005b34801561013e57600080fd5b506100e760045481565b34801561015457600080fd5b506100e760055481565b34801561016a57600080fd5b506100e760085481565b34801561018057600080fd5b506101b761018f366004610b6f565b6001602081905260009182526040909120805491810154600282015460039092015490919084565b6040805194855260208501939093529183015260608201526080016100f1565b610130610361565b3480156101eb57600080fd5b506101306101fa366004610b6f565b61061e565b34801561020b57600080fd5b506100e760075481565b34801561022157600080fd5b50610130610230366004610b6f565b610641565b34801561024157600080fd5b50610130610250366004610ba9565b610691565b34801561026157600080fd5b50610130610730565b6000806102768361073a565b6001600160a01b03841660009081526001602052604090206003015490915061029f82826107bc565b949350505050565b6000546001600160a01b031633146102be57600080fd5b6001600160a01b038216600090815260016020526040902054156102e5576102e582610829565b6001600160a01b03821660009081526001602052604090205460045461031691839161031091610905565b906107bc565b6004556001600160a01b038216600090815260016020526040902081905561033d81610947565b6001600160a01b039092166000908152600160208190526040909120019190915550565b6000546001600160a01b0316331461037857600080fd5b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156103bc57600080fd5b505afa1580156103d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f49190610c38565b60408051600280825260608201835292935060009290916020830190803683375050600354604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561045e57600080fd5b505afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104969190610b8c565b816000815181106104a9576104a9610d96565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106104da576104da610d96565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061052090600090869030904290600401610c51565b6000604051808303818588803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b50506002546040516370a0823160e01b8152306004820152600094506105dc93508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d69190610c38565b90610905565b6005549091506105ec90826107bc565b6005556004546009546106169161060d916106079085610964565b906109e3565b600754906107bc565b600755505050565b6000546001600160a01b0316331461063557600080fd5b61063e81610a25565b50565b6000546001600160a01b0316331461065857600080fd5b6040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561068d573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146106a857600080fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b1580156106f257600080fd5b505af1158015610706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072a9190610c16565b50505050565b3361063e81610a25565b6001600160a01b03811660009081526001602052604081205461075f57506000919050565b6001600160a01b03821660009081526001602052604081205461078190610947565b6001600160a01b038416600090815260016020819052604090912001549091508082116107b2575060009392505050565b61029f8282610905565b6000806107c98385610d10565b9050838110156108205760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b6001600160a01b0381166000908152600160205260409020546108495750565b60006108548261073a565b9050801561068d5760065461086990826107bc565b6006556001600160a01b03821660009081526001602052604081206003018054839290610897908490610d10565b9250508190555080600860008282546108b09190610d10565b90915550506001600160a01b0382166000908152600160205260409020600201546108db90826107bc565b6001600160a01b038316600090815260016020526040902060028101919091555461033d90610947565b600061082083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b07565b60006108236009546106076007548561096490919063ffffffff16565b60008261097357506000610823565b600061097f8385610d4a565b90508261098c8583610d28565b146108205760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610817565b600061082083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b41565b610a2e81610829565b6001600160a01b038116600090815260016020526040902060030154801561068d576001600160a01b038216600090815260016020526040812060030155600854610a799082610905565b60085560025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b158015610aca57600080fd5b505af1158015610ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b029190610c16565b505050565b60008184841115610b2b5760405162461bcd60e51b81526004016108179190610cbb565b506000610b388486610d69565b95945050505050565b60008183610b625760405162461bcd60e51b81526004016108179190610cbb565b506000610b388486610d28565b600060208284031215610b8157600080fd5b813561082081610dac565b600060208284031215610b9e57600080fd5b815161082081610dac565b600080600060608486031215610bbe57600080fd5b8335610bc981610dac565b92506020840135610bd981610dac565b929592945050506040919091013590565b60008060408385031215610bfd57600080fd5b8235610c0881610dac565b946020939093013593505050565b600060208284031215610c2857600080fd5b8151801515811461082057600080fd5b600060208284031215610c4a57600080fd5b5051919050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610c9b5784516001600160a01b031683529383019391830191600101610c76565b50506001600160a01b039690961660408501525050506060015292915050565b600060208083528351808285015260005b81811015610ce857858101830151858201604001528201610ccc565b81811115610cfa576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610d2357610d23610d80565b500190565b600082610d4557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610d6457610d64610d80565b500290565b600082821015610d7b57610d7b610d80565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461063e57600080fdfea26469706673582212203cb7c294df6fa9b6439a449090682aa08f82d85a4403b23415c2aafcc1d339cf64736f6c634300080700336080604052600280546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556a52b7d2dcc80cd2e400000060095534801561004557600080fd5b50604051610d61380380610d61833981016040819052610064916100be565b6001600160a01b03811661008c57737a250d5630b4cf539739df2c5dacb4c659f2488d61008e565b805b600380546001600160a01b03929092166001600160a01b03199283161790556000805490911633179055506100ee565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610c64806100fd6000396000f3fe6080604052600436106100c25760003560e01c8063ce7c2ac21161007f578063e2d2e21911610059578063e2d2e219146101ff578063e53b201714610215578063e5711e8b14610235578063f0fc6bca1461025557600080fd5b8063ce7c2ac214610174578063d0e30db0146101d7578063d279c191146101df57600080fd5b80630650c787146100c757806311ce023d146100fa57806314b6ca96146101105780633a98ef3914610132578063997664d714610148578063c71b0e1c1461015e575b600080fd5b3480156100d357600080fd5b506100e76100e2366004610a97565b61026a565b6040519081526020015b60405180910390f35b34801561010657600080fd5b506100e760095481565b34801561011c57600080fd5b5061013061012b366004610aee565b6102a7565b005b34801561013e57600080fd5b506100e760045481565b34801561015457600080fd5b506100e760055481565b34801561016a57600080fd5b506100e760085481565b34801561018057600080fd5b506101b761018f366004610a97565b6001602081905260009182526040909120805491810154600282015460039092015490919084565b6040805194855260208501939093529183015260608201526080016100f1565b610130610361565b3480156101eb57600080fd5b506101306101fa366004610a97565b61052a565b34801561020b57600080fd5b506100e760075481565b34801561022157600080fd5b50610130610230366004610a97565b61054d565b34801561024157600080fd5b50610130610250366004610ab2565b61059d565b34801561026157600080fd5b5061013061063c565b60008061027683610646565b6001600160a01b03841660009081526001602052604090206003015490915061029f82826106c8565b949350505050565b6000546001600160a01b031633146102be57600080fd5b6001600160a01b038216600090815260016020526040902054156102e5576102e582610735565b6001600160a01b03821660009081526001602052604090205460045461031691839161031091610811565b906106c8565b6004556001600160a01b038216600090815260016020526040902081905561033d81610853565b6001600160a01b039092166000908152600160208190526040909120019190915550565b6000546001600160a01b0316331461037857600080fd5b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156103bc57600080fd5b505afa1580156103d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f49190610b3a565b9050600260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561044657600080fd5b505af115801561045a573d6000803e3d6000fd5b50506002546040516370a0823160e01b8152306004820152600094506104e993508592506001600160a01b03909116906370a082319060240160206040518083038186803b1580156104ab57600080fd5b505afa1580156104bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e39190610b3a565b90610811565b6005549091506104f990826106c8565b6005556004546009546105239161051a916105149085610870565b906108ef565b600754906106c8565b6007555050565b6000546001600160a01b0316331461054157600080fd5b61054a81610931565b50565b6000546001600160a01b0316331461056457600080fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610599573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146105b457600080fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b1580156105fe57600080fd5b505af1158015610612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106369190610b18565b50505050565b3361054a81610931565b6001600160a01b03811660009081526001602052604081205461066b57506000919050565b6001600160a01b03821660009081526001602052604081205461068d90610853565b6001600160a01b038416600090815260016020819052604090912001549091508082116106be575060009392505050565b61029f8282610811565b6000806106d58385610ba8565b90508381101561072c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b6001600160a01b0381166000908152600160205260409020546107555750565b600061076082610646565b905080156105995760065461077590826106c8565b6006556001600160a01b038216600090815260016020526040812060030180548392906107a3908490610ba8565b9250508190555080600860008282546107bc9190610ba8565b90915550506001600160a01b0382166000908152600160205260409020600201546107e790826106c8565b6001600160a01b038316600090815260016020526040902060028101919091555461033d90610853565b600061072c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a13565b600061072f6009546105146007548561087090919063ffffffff16565b60008261087f5750600061072f565b600061088b8385610be2565b9050826108988583610bc0565b1461072c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610723565b600061072c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610a4d565b61093a81610735565b6001600160a01b0381166000908152600160205260409020600301548015610599576001600160a01b0382166000908152600160205260408120600301556008546109859082610811565b60085560025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156109d657600080fd5b505af11580156109ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0e9190610b18565b505050565b60008184841115610a375760405162461bcd60e51b81526004016107239190610b53565b506000610a448486610c01565b95945050505050565b60008183610a6e5760405162461bcd60e51b81526004016107239190610b53565b506000610a448486610bc0565b80356001600160a01b0381168114610a9257600080fd5b919050565b600060208284031215610aa957600080fd5b61072c82610a7b565b600080600060608486031215610ac757600080fd5b610ad084610a7b565b9250610ade60208501610a7b565b9150604084013590509250925092565b60008060408385031215610b0157600080fd5b610b0a83610a7b565b946020939093013593505050565b600060208284031215610b2a57600080fd5b8151801515811461072c57600080fd5b600060208284031215610b4c57600080fd5b5051919050565b600060208083528351808285015260005b81811015610b8057858101830151858201604001528201610b64565b81811115610b92576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610bbb57610bbb610c18565b500190565b600082610bdd57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610bfc57610bfc610c18565b500290565b600082821015610c1357610c13610c18565b500390565b634e487b7160e01b600052601160045260246000fdfea264697066735822122062d30b99f558830faa7eda80b635ee16e8ba2da164ca030ccc75a5f1379afdeb64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061044b5760003560e01c806373129e5211610234578063d37e6ff41161012e578063e2f45605116100b6578063f2fde38b1161007a578063f2fde38b14610d28578063f872858a14610d48578063f887ea4014610d67578063f9f92be414610d87578063fdd24dfe14610db757600080fd5b8063e2f4560514610c9d578063e6b2603b14610cb3578063ea8b2c4414610cc8578063eac25cbb14610ce8578063f275f64b14610d0857600080fd5b8063dd656b63116100fd578063dd656b6314610c11578063dda9167614610c27578063e01bb68814610c47578063e0202f8714610c67578063e0de51ef14610c7d57600080fd5b8063d37e6ff414610b42578063d439979014610b72578063dbf5360c14610bab578063dd62ed3e14610bcb57600080fd5b806392136913116101bc578063b43725b111610180578063b43725b114610a7c578063b62496f514610a9c578063b8d317ec14610acc578063be479d9114610aec578063c867d60b14610b1257600080fd5b806392136913146109fb57806395d89b4114610a11578063a457c2d714610a26578063a9059cbb14610a46578063b1c09b2a14610a6657600080fd5b80638b42507f116102035780638b42507f146109575780638cc5ce99146109875780638da5cb5b146109a75780638e34b1a3146109c55780638f32d59b146109db57600080fd5b806373129e52146108e75780637bce5a041461090757806383b4ac681461091d578063852614851461093d57600080fd5b80633a5ec0fb116103455780634bf74324116102cd5780636140a51e116102915780636140a51e1461084d57806364f5a5bb1461086d57806370a082311461088d57806370ee7395146108ad578063728d41c9146108c757600080fd5b80634bf74324146107c25780634f322c51146107e257806351bc3c8514610802578063531295971461081757806355acbc331461082d57600080fd5b80633eaaf86b116103145780633eaaf86b146107145780634144d9e41461072a5780634201181114610762578063492dbf4b146107825780634bc6dd18146107a257600080fd5b80633a5ec0fb146106a45780633bb32840146106b95780633e05e01b146106cf5780633e7be973146106e457600080fd5b806323b872dd116103d3578063320d453411610397578063320d45341461060e578063334901911461062e57806333f3d6281461064457806337c9be8714610664578063395093511461068457600080fd5b806323b872dd1461057757806325519cf2146105975780632563ae83146105b75780632b112e49146105d7578063313ce567146105ec57600080fd5b806318160ddd1161041a57806318160ddd146104f85780631a032b041461050d5780631d865c301461052c57806320365d5f1461054c57806323a2f1fc1461056157600080fd5b806306fdde0314610457578063095ea7b31461048257806315bdde40146104b2578063180b0d7e146104d457600080fd5b3661045257005b600080fd5b34801561046357600080fd5b5061046c610dcd565b6040516104799190612ee5565b60405180910390f35b34801561048e57600080fd5b506104a261049d366004612e21565b610e5f565b6040519015158152602001610479565b3480156104be57600080fd5b506104d26104cd366004612d3f565b610e76565b005b3480156104e057600080fd5b506104ea600c5481565b604051908152602001610479565b34801561050457600080fd5b506015546104ea565b34801561051957600080fd5b50601d546104a290610100900460ff1681565b34801561053857600080fd5b506104d2610547366004612eb9565b610ef7565b34801561055857600080fd5b506104d2610f55565b34801561056d57600080fd5b506104ea60195481565b34801561058357600080fd5b506104a2610592366004612db2565b610fcf565b3480156105a357600080fd5b506104d26105b2366004612eb9565b6110a9565b3480156105c357600080fd5b506104d26105d2366004612e4d565b6110f8565b3480156105e357600080fd5b506104ea61113c565b3480156105f857600080fd5b5060035460405160ff9091168152602001610479565b34801561061a57600080fd5b506104d2610629366004612e87565b6111ad565b34801561063a57600080fd5b506104ea60185481565b34801561065057600080fd5b506104d261065f366004612e21565b6111dc565b34801561067057600080fd5b506104d261067f366004612df3565b611278565b34801561069057600080fd5b506104a261069f366004612e21565b6112cd565b3480156106b057600080fd5b506104d261135e565b3480156106c557600080fd5b506104ea60065481565b3480156106db57600080fd5b506104d26113c3565b3480156106f057600080fd5b506104a26106ff366004612d3f565b60136020526000908152604090205460ff1681565b34801561072057600080fd5b506104ea60155481565b34801561073657600080fd5b50600d5461074a906001600160a01b031681565b6040516001600160a01b039091168152602001610479565b34801561076e57600080fd5b506104ea61077d366004612d3f565b6113f3565b34801561078e57600080fd5b506104d261079d366004612db2565b611472565b3480156107ae57600080fd5b506104d26107bd366004612e4d565b611504565b3480156107ce57600080fd5b506104d26107dd366004612df3565b611541565b3480156107ee57600080fd5b506104d26107fd366004612db2565b611596565b34801561080e57600080fd5b506104d26115ee565b34801561082357600080fd5b506104ea60085481565b34801561083957600080fd5b506104d2610848366004612df3565b61166e565b34801561085957600080fd5b506104d2610868366004612e4d565b6116c3565b34801561087957600080fd5b506104d2610888366004612e87565b611700565b34801561089957600080fd5b506104ea6108a8366004612d3f565b61172f565b3480156108b957600080fd5b50601d546104a29060ff1681565b3480156108d357600080fd5b506104d26108e2366004612e87565b61174a565b3480156108f357600080fd5b506104d2610902366004612d3f565b611779565b34801561091357600080fd5b506104ea60045481565b34801561092957600080fd5b50602054600160a01b900460ff16156104a2565b34801561094957600080fd5b50601a546104a29060ff1681565b34801561096357600080fd5b506104a2610972366004612d3f565b600f6020526000908152604090205460ff1681565b34801561099357600080fd5b50601f5461074a906001600160a01b031681565b3480156109b357600080fd5b506000546001600160a01b031661074a565b3480156109d157600080fd5b506104ea60095481565b3480156109e757600080fd5b506000546001600160a01b031633146104a2565b348015610a0757600080fd5b506104ea60075481565b348015610a1d57600080fd5b5061046c6117c2565b348015610a3257600080fd5b506104a2610a41366004612e21565b6117d1565b348015610a5257600080fd5b506104a2610a61366004612e21565b6118b8565b348015610a7257600080fd5b506104ea600a5481565b348015610a8857600080fd5b506104ea610a97366004612d3f565b6118e4565b348015610aa857600080fd5b506104a2610ab7366004612d3f565b60116020526000908152604090205460ff1681565b348015610ad857600080fd5b506104d2610ae7366004612df3565b61191d565b348015610af857600080fd5b50601d5461074a906201000090046001600160a01b031681565b348015610b1e57600080fd5b506104a2610b2d366004612d3f565b60106020526000908152604090205460ff1681565b348015610b4e57600080fd5b506104a2610b5d366004612d3f565b60126020526000908152604090205460ff1681565b348015610b7e57600080fd5b506104a2610b8d366004612d3f565b6001600160a01b03166000908152600e602052604090205460ff1690565b348015610bb757600080fd5b506104d2610bc6366004612e87565b611a6a565b348015610bd757600080fd5b506104ea610be6366004612d79565b6001600160a01b039182166000908152601c6020908152604080832093909416825291909152205490565b348015610c1d57600080fd5b506104ea60055481565b348015610c3357600080fd5b506104d2610c42366004612df3565b611a99565b348015610c5357600080fd5b506104d2610c62366004612d3f565b611bd9565b348015610c7357600080fd5b506104ea600b5481565b348015610c8957600080fd5b506104d2610c98366004612df3565b611c12565b348015610ca957600080fd5b506104ea60165481565b348015610cbf57600080fd5b506104d2611c67565b348015610cd457600080fd5b506104d2610ce3366004612df3565b611cad565b348015610cf457600080fd5b50601e5461074a906001600160a01b031681565b348015610d1457600080fd5b506104d2610d23366004612e4d565b611d99565b348015610d3457600080fd5b506104d2610d43366004612d3f565b611ddd565b348015610d5457600080fd5b50601a546104a290610100900460ff1681565b348015610d7357600080fd5b5060205461074a906001600160a01b031681565b348015610d9357600080fd5b506104a2610da2366004612d3f565b60146020526000908152604090205460ff1681565b348015610dc357600080fd5b506104ea60175481565b606060018054610ddc90613050565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0890613050565b8015610e555780601f10610e2a57610100808354040283529160200191610e55565b820191906000526020600020905b815481529060010190602001808311610e3857829003601f168201915b5050505050905090565b6000610e6c338484611fee565b5060015b92915050565b601f546001600160a01b03163314610e8d57600080fd5b601d5460405163e53b201760e01b81526001600160a01b038381166004830152620100009092049091169063e53b2017906024015b600060405180830381600087803b158015610edc57600080fd5b505af1158015610ef0573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610f2a5760405162461bcd60e51b8152600401610f2190612f3a565b60405180910390fd5b600783905560088290556009819055610f4d81610f478585611f8f565b90611f8f565b600b55505050565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b8152600401610f2190612f3a565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000826001600160a01b038116610fe557600080fd5b6001600160a01b0385166000908152601c6020908152604080832033845290915290205460001914611092576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0388166000908152601c8252838120338252909152919091205461106d918590612112565b6001600160a01b0386166000908152601c602090815260408083203384529091529020555b61109d85858561214c565b50600195945050505050565b6000546001600160a01b031633146110d35760405162461bcd60e51b8152600401610f2190612f3a565b6004839055600582905560068190556110f081610f478585611f8f565b600a55505050565b6000546001600160a01b031633146111225760405162461bcd60e51b8152600401610f2190612f3a565b601a80549115156101000261ff0019909216919091179055565b601b6020527f584f46c60af19681376031579adb04a2416e54ee5505351c2a8435e3766026ea5461dead60009081527f6790d4910a095e0e04c8daa388834616a295bac3f59038957b6d0b93a2d216845460155491926111a89290916111a291906126e8565b906126e8565b905090565b6000546001600160a01b031633146111d75760405162461bcd60e51b8152600401610f2190612f3a565b601655565b601f546001600160a01b031633146111f357600080fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561123b57600080fd5b505af115801561124f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112739190612e6a565b505050565b6000546001600160a01b031633146112a25760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b336000908152601c602090815260408083206001600160a01b03861684529091528120546112fb9083611f8f565b336000818152601c602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b601d5460405163d279c19160e01b8152336004820152620100009091046001600160a01b03169063d279c191906024015b600060405180830381600087803b1580156113a957600080fd5b505af11580156113bd573d6000803e3d6000fd5b50505050565b601e5460405163d279c19160e01b81523360048201526001600160a01b039091169063d279c1919060240161138f565b601e54604051630650c78760e01b81526001600160a01b0383811660048301526000921690630650c787906024015b60206040518083038186803b15801561143a57600080fd5b505afa15801561144e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e709190612ea0565b601f546001600160a01b0316331461148957600080fd5b601d5460405163e5711e8b60e01b81526001600160a01b038581166004830152848116602483015260448201849052620100009092049091169063e5711e8b906064015b600060405180830381600087803b1580156114e757600080fd5b505af11580156114fb573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b0316331461152e5760405162461bcd60e51b8152600401610f2190612f3a565b601d805460ff1916911515919091179055565b6000546001600160a01b0316331461156b5760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b601f546001600160a01b031633146115ad57600080fd5b601e5460405163e5711e8b60e01b81526001600160a01b0385811660048301528481166024830152604482018490529091169063e5711e8b906064016114cd565b6000546001600160a01b031633146116185760405162461bcd60e51b8152600401610f2190612f3a565b602054600160a01b900460ff16156116645760405162461bcd60e51b815260206004820152600f60248201526e0416c726561647920696e205377617608c1b6044820152606401610f21565b61166c61272a565b565b6000546001600160a01b031633146116985760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116ed5760405162461bcd60e51b8152600401610f2190612f3a565b601a805460ff1916911515919091179055565b6000546001600160a01b0316331461172a5760405162461bcd60e51b8152600401610f2190612f3a565b601955565b6001600160a01b03166000908152601b602052604090205490565b6000546001600160a01b031633146117745760405162461bcd60e51b8152600401610f2190612f3a565b601855565b601f546001600160a01b0316331461179057600080fd5b601e5460405163e53b201760e01b81526001600160a01b0383811660048301529091169063e53b201790602401610ec2565b606060028054610ddc90613050565b336000908152601c602090815260408083206001600160a01b038616845290915281205480831061182557336000908152601c602090815260408083206001600160a01b0388168452909152812055611854565b61182f81846126e8565b336000908152601c602090815260408083206001600160a01b03891684529091529020555b336000818152601c602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6000826001600160a01b0381166118ce57600080fd5b6118d933858561214c565b506001949350505050565b601d54604051630650c78760e01b81526001600160a01b0383811660048301526000926201000090041690630650c78790602401611422565b6000546001600160a01b031633146119475760405162461bcd60e51b8152600401610f2190612f3a565b80156119bf57601d54604051630a5b654b60e11b81526001600160a01b0384811660048301526000602483015262010000909204909116906314b6ca9690604401600060405180830381600087803b1580156119a257600080fd5b505af11580156119b6573d6000803e3d6000fd5b50505050611a3f565b601d546201000090046001600160a01b03166314b6ca96836119e08161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611a2657600080fd5b505af1158015611a3a573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a945760405162461bcd60e51b8152600401610f2190612f3a565b601755565b6000546001600160a01b03163314611ac35760405162461bcd60e51b8152600401610f2190612f3a565b8015611b3457601e54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b50505050611bae565b601e546001600160a01b03166314b6ca9683611b4f8161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611b9557600080fd5b505af1158015611ba9573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b601f546001600160a01b03163314611bf057600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c3c5760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b601f546001600160a01b03163314611c7e57600080fd5b60405133904780156108fc02916000818181858888f19350505050158015611caa573d6000803e3d6000fd5b50565b6000546001600160a01b03163314611cd75760405162461bcd60e51b8152600401610f2190612f3a565b8015611d3b576001600160a01b03821660009081526011602052604090205460ff1615611d3b5760405162461bcd60e51b81526020600482015260126024820152715061697220416c726561647920536574212160701b6044820152606401610f21565b6001600160a01b039091166000908152601160209081526040808320805494151560ff199586161790556010825280832080548516600190811790915560138352818420805486168217905560129092529091208054909216179055565b6000546001600160a01b03163314611dc35760405162461bcd60e51b8152600401610f2190612f3a565b601d80549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611e075760405162461bcd60e51b8152600401610f2190612f3a565b6001600160a01b038116611e6c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610f21565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082611ed657506000610e70565b6000611ee2838561301a565b905082611eef8583612ff8565b14611f465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610f21565b9392505050565b6000611f4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061293a565b600080611f9c8385612fe0565b905083811015611f465760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610f21565b6001600160a01b0383166120505760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610f21565b6001600160a01b0382166120b15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610f21565b6001600160a01b038381166000818152601c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081848411156121365760405162461bcd60e51b8152600401610f219190612ee5565b5060006121438486613039565b95945050505050565b6001600160a01b03831660009081526014602052604081205460ff1615801561218e57506001600160a01b03831660009081526014602052604090205460ff16155b6121c95760405162461bcd60e51b815260206004820152600c60248201526b1a5b97d89b1858dadb1a5cdd60a21b6044820152606401610f21565b601d54610100900460ff1661225c576001600160a01b0384166000908152600e602052604090205460ff168061221757506001600160a01b0383166000908152600e602052604090205460ff165b61225c5760405162461bcd60e51b81526020600482015260166024820152754572726f723a2054726164696e67205061757365642160501b6044820152606401610f21565b6001600160a01b0384166000908152600f602052604090205460ff1615801561229e57506001600160a01b0383166000908152600f602052604090205460ff16155b80156122ac5750601a5460ff165b15612314576019548211156123145760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610f21565b602054600160a01b900460ff161561233857612331848484612968565b9050611f46565b6123406129dd565b1561234d5761234d61272a565b6001600160a01b0384166000908152601b602052604090205461237090836126e8565b6001600160a01b0385166000908152601b60205260408120919091556123968585612a3b565b6123a057826123ab565b6123ab858585612acd565b601a54909150610100900460ff1680156123de57506001600160a01b03841660009081526010602052604090205460ff16155b156123fe576018546123f382610f478761172f565b11156123fe57600080fd5b6001600160a01b0384166000908152601b60205260409020546124219082611f8f565b6001600160a01b038086166000908152601b602090815260408083209490945591881681526012909152205460ff166124ce57601d546201000090046001600160a01b03166314b6ca96866124758161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156124bb57600080fd5b505af19250505080156124cc575060015b505b6001600160a01b03841660009081526012602052604090205460ff1661256857601d546201000090046001600160a01b03166314b6ca968561250f8161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561255557600080fd5b505af1925050508015612566575060015b505b6001600160a01b03851660009081526013602052604090205460ff166125fc57601e546001600160a01b03166314b6ca96866125a38161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156125e957600080fd5b505af19250505080156125fa575060015b505b6001600160a01b03841660009081526013602052604090205460ff1661269057601e546001600160a01b03166314b6ca96856126378161172f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561267d57600080fd5b505af192505050801561268e575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126d591815260200190565b60405180910390a3506001949350505050565b6000611f4683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612112565b6020805460ff60a01b1916600160a01b17905560006127483061172f565b90506000612763600b54600a54611f8f90919063ffffffff16565b90508061277157505061292b565b6017548211156127815760175491505b600061279a600754600454611f8f90919063ffffffff16565b905060006127b5600854600554611f8f90919063ffffffff16565b9050476127c185612bd5565b60006127cd47836126e8565b905060006127e5866127df8488611ec7565b90611f4d565b905060006127f7876127df8588611ec7565b90506000612809826111a286866126e8565b9050821561284d57600d546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801561284b573d6000803e3d6000fd5b505b81156128b757601d60029054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156128a357600080fd5b505af1935050505080156128b5575060015b505b801561292157601e60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561290d57600080fd5b505af19350505050801561291f575060015b505b5050505050505050505b6020805460ff60a01b19169055565b6000818361295b5760405162461bcd60e51b8152600401610f219190612ee5565b5060006121438486612ff8565b6001600160a01b0383166000908152601b602052604081205461298b90836126e8565b6001600160a01b038086166000908152601b602052604080822093909355908516815220546129ba9083611f8f565b6001600160a01b0384166000908152601b60205260409020555060019392505050565b6000806129e93061172f565b60165490915081108015908190612a025750601d5460ff165b8015612a185750602054600160a01b900460ff16155b8015612a3457503360009081526011602052604090205460ff16155b9250505090565b6001600160a01b0382166000908152600e602052604081205460ff1680612a7a57506001600160a01b0382166000908152600e602052604090205460ff165b15612a8757506000610e70565b6001600160a01b03831660009081526011602052604090205460ff1680612ac657506001600160a01b03821660009081526011602052604090205460ff165b9050610e70565b6001600160a01b038316600090815260116020526040812054819060ff1615612b1257612b0b600c546127df600a5486611ec790919063ffffffff16565b9050612b51565b6001600160a01b03841660009081526011602052604090205460ff1615612b5157612b4e600c546127df600b5486611ec790919063ffffffff16565b90505b8015612bcb57306000908152601b6020526040902054612b719082611f8f565b306000818152601b6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612bc29085815260200190565b60405180910390a35b61214383826126e8565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c0a57612c0a6130a1565b6001600160a01b039283166020918202929092018101919091528054604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612c5d57600080fd5b505afa158015612c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c959190612d5c565b81600181518110612ca857612ca86130a1565b6001600160a01b0392831660209182029290920181019190915254612cd09130911684611fee565b60205460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d09908590600090869030904290600401612f6f565b600060405180830381600087803b158015612d2357600080fd5b505af1158015612d37573d6000803e3d6000fd5b505050505050565b600060208284031215612d5157600080fd5b8135611f46816130b7565b600060208284031215612d6e57600080fd5b8151611f46816130b7565b60008060408385031215612d8c57600080fd5b8235612d97816130b7565b91506020830135612da7816130b7565b809150509250929050565b600080600060608486031215612dc757600080fd5b8335612dd2816130b7565b92506020840135612de2816130b7565b929592945050506040919091013590565b60008060408385031215612e0657600080fd5b8235612e11816130b7565b91506020830135612da7816130cc565b60008060408385031215612e3457600080fd5b8235612e3f816130b7565b946020939093013593505050565b600060208284031215612e5f57600080fd5b8135611f46816130cc565b600060208284031215612e7c57600080fd5b8151611f46816130cc565b600060208284031215612e9957600080fd5b5035919050565b600060208284031215612eb257600080fd5b5051919050565b600080600060608486031215612ece57600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b81811015612f1257858101830151858201604001528201612ef6565b81811115612f24576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612fbf5784516001600160a01b031683529383019391830191600101612f9a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ff357612ff361308b565b500190565b60008261301557634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130345761303461308b565b500290565b60008282101561304b5761304b61308b565b500390565b600181811c9082168061306457607f821691505b6020821081141561308557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611caa57600080fd5b8015158114611caa57600080fdfea26469706673582212206b6dd0653d592b91022c5573dbe589ba2594052a55f0190b0c3d2831247eefe064736f6c63430008070033

Deployed Bytecode Sourcemap

14303:17520:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18330:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19426:189;;;;;;;;;;-1:-1:-1;19426:189:0;;;;;:::i;:::-;;:::i;:::-;;;4593:14:1;;4586:22;4568:41;;4556:2;4541:18;19426:189:0;4428:187:1;30469:130:0;;;;;;;;;;-1:-1:-1;30469:130:0;;;;;:::i;:::-;;:::i;:::-;;14815:36;;;;;;;;;;;;;;;;;;;10176:25:1;;;10164:2;10149:18;14815:36:0;10030:177:1;18607:102:0;;;;;;;;;;-1:-1:-1;18689:12:0;;18607:102;;16180:33;;;;;;;;;;-1:-1:-1;16180:33:0;;;;;;;;;;;27669:333;;;;;;;;;;-1:-1:-1;27669:333:0;;;;;:::i;:::-;;:::i;4792:231::-;;;;;;;;;;;;;:::i;15832:68::-;;;;;;;;;;;;;;;;20234:447;;;;;;;;;;-1:-1:-1;20234:447:0;;;;;:::i;:::-;;:::i;27336:325::-;;;;;;;;;;-1:-1:-1;27336:325:0;;;;;:::i;:::-;;:::i;26657:112::-;;;;;;;;;;-1:-1:-1;26657:112:0;;;;;:::i;:::-;;:::i;19043:154::-;;;;;;;;;;;;;:::i;18516:83::-;;;;;;;;;;-1:-1:-1;18582:9:0;;18516:83;;18582:9;;;;11339:36:1;;11327:2;11312:18;18516:83:0;11197:184:1;29529:104:0;;;;;;;;;;-1:-1:-1;29529:104:0;;;;;:::i;:::-;;:::i;15747:72::-;;;;;;;;;;;;;;;;31063:141;;;;;;;;;;-1:-1:-1;31063:141:0;;;;;:::i;:::-;;:::i;29391:130::-;;;;;;;;;;-1:-1:-1;29391:130:0;;;;;:::i;:::-;;:::i;25988:388::-;;;;;;;;;;-1:-1:-1;25988:388:0;;;;;:::i;:::-;;:::i;29770:88::-;;;;;;;;;;;;;:::i;14590:30::-;;;;;;;;;;;;;;;;29866:84;;;;;;;;;;;;;:::i;15430:46::-;;;;;;;;;;-1:-1:-1;15430:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15533:57;;;;;;;;;;;;;;;;14860:83;;;;;;;;;;-1:-1:-1;14860:83:0;;;;-1:-1:-1;;;;;14860:83:0;;;;;;-1:-1:-1;;;;;3438:32:1;;;3420:51;;3408:2;3393:18;14860:83:0;3274:203:1;30127:139:0;;;;;;;;;;-1:-1:-1;30127:139:0;;;;;:::i;:::-;;:::i;30274:187::-;;;;;;;;;;-1:-1:-1;30274:187:0;;;;;:::i;:::-;;:::i;26883:96::-;;;;;;;;;;-1:-1:-1;26883:96:0;;;;;:::i;:::-;;:::i;29125:121::-;;;;;;;;;;-1:-1:-1;29125:121:0;;;;;:::i;:::-;;:::i;30607:183::-;;;;;;;;;;-1:-1:-1;30607:183:0;;;;;:::i;:::-;;:::i;26384:143::-;;;;;;;;;;;;;:::i;14673:32::-;;;;;;;;;;;;;;;;29254:129;;;;;;;;;;-1:-1:-1;29254:129:0;;;;;:::i;:::-;;:::i;26535:114::-;;;;;;;;;;-1:-1:-1;26535:114:0;;;;;:::i;:::-;;:::i;27234:94::-;;;;;;;;;;-1:-1:-1;27234:94:0;;;;;:::i;:::-;;:::i;18720:119::-;;;;;;;;;;-1:-1:-1;18720:119:0;;;;;:::i;:::-;;:::i;16141:32::-;;;;;;;;;;-1:-1:-1;16141:32:0;;;;;;;;27125:101;;;;;;;;;;-1:-1:-1;27125:101:0;;;;;:::i;:::-;;:::i;30798:126::-;;;;;;;;;;-1:-1:-1;30798:126:0;;;;;:::i;:::-;;:::i;14509:36::-;;;;;;;;;;;;;;;;19205:85;;;;;;;;;;-1:-1:-1;19276:6:0;;-1:-1:-1;;;19276:6:0;;;;19275:7;19205:85;;15919:41;;;;;;;;;;-1:-1:-1;15919:41:0;;;;;;;;15190:48;;;;;;;;;;-1:-1:-1;15190:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16298:31;;;;;;;;;;-1:-1:-1;16298:31:0;;;;-1:-1:-1;;;;;16298:31:0;;;4467:79;;;;;;;;;;-1:-1:-1;4505:7:0;4532:6;-1:-1:-1;;;;;4532:6:0;4467:79;;14712:31;;;;;;;;;;;;;;;;4692:92;;;;;;;;;;-1:-1:-1;4732:4:0;4770:6;-1:-1:-1;;;;;4770:6:0;4756:10;:20;4692:92;;14629:37;;;;;;;;;;;;;;;;18421:87;;;;;;;;;;;;;:::i;25408:572::-;;;;;;;;;;-1:-1:-1;25408:572:0;;;;;:::i;:::-;;:::i;20011:215::-;;;;;;;;;;-1:-1:-1;20011:215:0;;;;;:::i;:::-;;:::i;14752:23::-;;;;;;;;;;;;;;;;29976:143;;;;;;;;;;-1:-1:-1;29976:143:0;;;;;:::i;:::-;;:::i;15310:58::-;;;;;;;;;;-1:-1:-1;15310:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28392:295;;;;;;;;;;-1:-1:-1;28392:295:0;;;;;:::i;:::-;;:::i;16222:32::-;;;;;;;;;;-1:-1:-1;16222:32:0;;;;;;;-1:-1:-1;;;;;16222:32:0;;;15245:52;;;;;;;;;;-1:-1:-1;15245:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15377:46;;;;;;;;;;-1:-1:-1;15377:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19298:120;;;;;;;;;;-1:-1:-1;19298:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;19384:26:0;19360:4;19384:26;;;:19;:26;;;;;;;;;19298:120;29643:101;;;;;;;;;;-1:-1:-1;29643:101:0;;;;;:::i;:::-;;:::i;18847:188::-;;;;;;;;;;-1:-1:-1;18847:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;18999:19:0;;;18967:7;18999:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18847:188;14552:31;;;;;;;;;;;;;;;;28696:289;;;;;;;;;;-1:-1:-1;28696:289:0;;;;;:::i;:::-;;:::i;26987:130::-;;;;;;;;;;-1:-1:-1;26987:130:0;;;;;:::i;:::-;;:::i;14782:24::-;;;;;;;;;;;;;;;;28996:121;;;;;;;;;;-1:-1:-1;28996:121:0;;;;;:::i;:::-;;:::i;15597:64::-;;;;;;;;;;;;;;;;30932:123;;;;;;;;;;;;;:::i;28010:374::-;;;;;;;;;;-1:-1:-1;28010:374:0;;;;;:::i;:::-;;:::i;16261:30::-;;;;;;;;;;-1:-1:-1;16261:30:0;;;;-1:-1:-1;;;;;16261:30:0;;;26777:98;;;;;;;;;;-1:-1:-1;26777:98:0;;;;;:::i;:::-;;:::i;5031:244::-;;;;;;;;;;-1:-1:-1;5031:244:0;;;;;:::i;:::-;;:::i;15967:35::-;;;;;;;;;;-1:-1:-1;15967:35:0;;;;;;;;;;;16336:24;;;;;;;;;;-1:-1:-1;16336:24:0;;;;-1:-1:-1;;;;;16336:24:0;;;15483:41;;;;;;;;;;-1:-1:-1;15483:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15678:60;;;;;;;;;;;;;;;;18330:83;18367:13;18400:5;18393:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18330:83;:::o;19426:189::-;19529:4;19551:34;19560:10;19571:7;19579:5;19551:8;:34::i;:::-;-1:-1:-1;19603:4:0;19426:189;;;;;:::o;30469:130::-;16566:16;;-1:-1:-1;;;;;16566:16:0;16552:10;:30;16544:39;;;;;;30555:13:::1;::::0;:36:::1;::::0;-1:-1:-1;;;30555:36:0;;-1:-1:-1;;;;;3438:32:1;;;30555:36:0::1;::::0;::::1;3420:51:1::0;30555:13:0;;;::::1;::::0;;::::1;::::0;:25:::1;::::0;3393:18:1;;30555:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30469:130:::0;:::o;27669:333::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;;;;;;;;;27820:16:::1;:32:::0;;;27863:12:::1;:24:::0;;;27898:11:::1;:22:::0;;;27943:51:::1;27912:8:::0;27943:34:::1;27839:13:::0;27878:9;27943:20:::1;:34::i;:::-;:38:::0;::::1;:51::i;:::-;27931:9;:63:::0;-1:-1:-1;;;27669:333:0:o;4792:231::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;4884:6:::1;::::0;;4863:81:::1;::::0;4900:42:::1;::::0;-1:-1:-1;;;;;4884:6:0;;::::1;::::0;4863:81:::1;::::0;::::1;4955:6;:60:::0;;-1:-1:-1;;;;;;4955:60:0::1;4972:42;4955:60;::::0;;4792:231::o;20234:447::-;20377:4;20364:2;-1:-1:-1;;;;;16456:18:0;;16448:27;;;;;;-1:-1:-1;;;;;20408:17:0;::::1;20450:1;20408:17:::0;;;:11:::1;:17;::::0;;;;;;;20426:10:::1;20408:29:::0;;;;;;;;-1:-1:-1;;20408:44:0::1;20404:207;;20501:98;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;20501:98:0::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;20501:17:0;::::1;-1:-1:-1::0;20501:17:0;;;:11:::1;:17:::0;;;;;20537:10:::1;20501:61:::0;;;;;;;;;;:98:::1;::::0;20567:5;;20501:65:::1;:98::i;:::-;-1:-1:-1::0;;;;;20469:17:0;::::1;;::::0;;;:11:::1;:17;::::0;;;;;;;20487:10:::1;20469:29:::0;;;;;;;:130;20404:207:::1;20621:30;20635:4;20641:2;20645:5;20621:13;:30::i;:::-;-1:-1:-1::0;20669:4:0::1;::::0;20234:447;-1:-1:-1;;;;;20234:447:0:o;27336:325::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;27486:15:::1;:31:::0;;;27528:11:::1;:23:::0;;;27562:10:::1;:21:::0;;;27605:48:::1;27575:8:::0;27605:32:::1;27504:13:::0;27542:9;27605:19:::1;:32::i;:48::-;27594:8;:59:::0;-1:-1:-1;;;27336:325:0:o;26657:112::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;26735:16:::1;:26:::0;;;::::1;;;;-1:-1:-1::0;;26735:26:0;;::::1;::::0;;;::::1;::::0;;26657:112::o;19043:154::-;19167:9;:21;;;;14990:42;19096:7;19140:21;;;;;19123:12;;19096:7;;19123:66;;19167:21;;19123:39;;:12;:16;:39::i;:::-;:43;;:66::i;:::-;19116:73;;19043:154;:::o;29529:104::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;29598:18:::1;:27:::0;29529:104::o;31063:141::-;16566:16;;-1:-1:-1;;;;;16566:16:0;16552:10;:30;16544:39;;;;;;31154:42:::1;::::0;-1:-1:-1;;;31154:42:0;;31178:10:::1;31154:42;::::0;::::1;4044:51:1::0;4111:18;;;4104:34;;;-1:-1:-1;;;;;31154:23:0;::::1;::::0;::::1;::::0;4017:18:1;;31154:42:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31063:141:::0;;:::o;29391:130::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29479:22:0;;;::::1;;::::0;;;:9:::1;:22;::::0;;;;:30;;-1:-1:-1;;29479:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29391:130::o;25988:388::-;26157:10;26088:4;26145:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;26145:56:0;;;;;;;;;;:72;;26206:10;26145:60;:72::i;:::-;26122:10;26110:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;26110:32:0;;;;;;;;;;;;:107;;;26233:113;10176:25:1;;;26110:32:0;;26233:113;;10149:18:1;26233:113:0;;;;;;;-1:-1:-1;26364:4:0;25988:388;;;;:::o;29770:88::-;29813:13;;:37;;-1:-1:-1;;;29813:37:0;;29839:10;29813:37;;;3420:51:1;29813:13:0;;;;-1:-1:-1;;;;;29813:13:0;;:25;;3393:18:1;;29813:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29770:88::o;29866:84::-;29907:11;;:35;;-1:-1:-1;;;29907:35:0;;29931:10;29907:35;;;3420:51:1;-1:-1:-1;;;;;29907:11:0;;;;:23;;3393:18:1;;29907:35:0;3274:203:1;30127:139:0;30219:11;;:39;;-1:-1:-1;;;30219:39:0;;-1:-1:-1;;;;;3438:32:1;;;30219:39:0;;;3420:51:1;30195:4:0;;30219:11;;:28;;3393:18:1;;30219:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;30274:187::-;16566:16;;-1:-1:-1;;;;;16566:16:0;16552:10;:30;16544:39;;;;;;30397:13:::1;::::0;:56:::1;::::0;-1:-1:-1;;;30397:56:0;;-1:-1:-1;;;;;3740:15:1;;;30397:56:0::1;::::0;::::1;3722:34:1::0;3792:15;;;3772:18;;;3765:43;3824:18;;;3817:34;;;30397:13:0;;;::::1;::::0;;::::1;::::0;:25:::1;::::0;3657:18:1;;30397:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30274:187:::0;;;:::o;26883:96::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;26950:13:::1;:21:::0;;-1:-1:-1;;26950:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26883:96::o;29125:121::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29206:22:0;;;::::1;;::::0;;;:15:::1;:22;::::0;;;;:32;;-1:-1:-1;;29206:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29125:121::o;30607:183::-;16566:16;;-1:-1:-1;;;;;16566:16:0;16552:10;:30;16544:39;;;;;;30728:11:::1;::::0;:54:::1;::::0;-1:-1:-1;;;30728:54:0;;-1:-1:-1;;;;;3740:15:1;;;30728:54:0::1;::::0;::::1;3722:34:1::0;3792:15;;;3772:18;;;3765:43;3824:18;;;3817:34;;;30728:11:0;;::::1;::::0;:23:::1;::::0;3657:18:1;;30728:54:0::1;3482:375:1::0;26384:143:0;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;26439:6:::1;::::0;-1:-1:-1;;;26439:6:0;::::1;;;26436:63;;;26462:25;::::0;-1:-1:-1;;;26462:25:0;;8430:2:1;26462:25:0::1;::::0;::::1;8412:21:1::0;8469:2;8449:18;;;8442:30;-1:-1:-1;;;8488:18:1;;;8481:45;8543:18;;26462:25:0::1;8228:339:1::0;26436:63:0::1;26509:10;:8;:10::i;:::-;26384:143::o:0;29254:129::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29339:26:0;;;::::1;;::::0;;;:19:::1;:26;::::0;;;;:36;;-1:-1:-1;;29339:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29254:129::o;26535:114::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;26609:22:::1;:32:::0;;-1:-1:-1;;26609:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26535:114::o;27234:94::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;27300:10:::1;:19:::0;27234:94::o;18720:119::-;-1:-1:-1;;;;;18813:18:0;18786:7;18813:18;;;:9;:18;;;;;;;18720:119::o;27125:101::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;27195:14:::1;:23:::0;27125:101::o;30798:126::-;16566:16;;-1:-1:-1;;;;;16566:16:0;16552:10;:30;16544:39;;;;;;30882:11:::1;::::0;:34:::1;::::0;-1:-1:-1;;;30882:34:0;;-1:-1:-1;;;;;3438:32:1;;;30882:34:0::1;::::0;::::1;3420:51:1::0;30882:11:0;;::::1;::::0;:23:::1;::::0;3393:18:1;;30882:34:0::1;3274:203:1::0;18421:87:0;18460:13;18493:7;18486:14;;;;;:::i;25408:572::-;25566:10;25513:4;25554:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;25554:32:0;;;;;;;;;;25601:27;;;25597:225;;25657:10;25680:1;25645:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;25645:32:0;;;;;;;;;:36;25597:225;;;25749:61;:8;25780:15;25749:12;:61::i;:::-;25726:10;25714:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;25714:32:0;;;;;;;;;:96;25597:225;25860:10;25907:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;25837:113:0;;25907:32;;;;;;;;;;;25837:113;;10176:25:1;;;25837:113:0;;25860:10;25837:113;;10149:18:1;25837:113:0;;;;;;;-1:-1:-1;25968:4:0;;25408:572;-1:-1:-1;;;25408:572:0:o;20011:215::-;20138:4;20116:2;-1:-1:-1;;;;;16456:18:0;;16448:27;;;;;;20160:36:::1;20174:10;20186:2;20190:5;20160:13;:36::i;:::-;-1:-1:-1::0;20214:4:0::1;::::0;20011:215;-1:-1:-1;;;;20011:215:0:o;29976:143::-;30070:13;;:41;;-1:-1:-1;;;30070:41:0;;-1:-1:-1;;;;;3438:32:1;;;30070:41:0;;;3420:51:1;30046:4:0;;30070:13;;;;;:30;;3393:18:1;;30070:41:0;3274:203:1;28392:295:0;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;28483:7:::1;28480:158;;;28507:13;::::0;:31:::1;::::0;-1:-1:-1;;;28507:31:0;;-1:-1:-1;;;;;4062:32:1;;;28507:31:0::1;::::0;::::1;4044:51:1::0;28536:1:0::1;4111:18:1::0;;;4104:34;28507:13:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;4017:18:1;;28507:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28480:158;;;28580:13;::::0;;;::::1;-1:-1:-1::0;;;;;28580:13:0::1;:22;28603:5:::0;28609:16:::1;28603:5:::0;28609:9:::1;:16::i;:::-;28580:46;::::0;-1:-1:-1;;;;;;28580:46:0::1;::::0;;;;;;-1:-1:-1;;;;;4062:32:1;;;28580:46:0::1;::::0;::::1;4044:51:1::0;4111:18;;;4104:34;4017:18;;28580:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28480:158;-1:-1:-1::0;;;;;28648:21:0;;;::::1;;::::0;;;:14:::1;:21;::::0;;;;:31;;-1:-1:-1;;28648:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28392:295::o;29643:101::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;29713:14:::1;:23:::0;29643:101::o;28696:289::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;28785:7:::1;28782:154;;;28809:11;::::0;:29:::1;::::0;-1:-1:-1;;;28809:29:0;;-1:-1:-1;;;;;4062:32:1;;;28809:29:0::1;::::0;::::1;4044:51:1::0;28809:11:0::1;4111:18:1::0;;;4104:34;28809:11:0;;::::1;::::0;:20:::1;::::0;4017:18:1;;28809:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28782:154;;;28880:11;::::0;-1:-1:-1;;;;;28880:11:0::1;:20;28901:5:::0;28907:16:::1;28901:5:::0;28907:9:::1;:16::i;:::-;28880:44;::::0;-1:-1:-1;;;;;;28880:44:0::1;::::0;;;;;;-1:-1:-1;;;;;4062:32:1;;;28880:44:0::1;::::0;::::1;4044:51:1::0;4111:18;;;4104:34;4017:18;;28880:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28782:154;-1:-1:-1::0;;;;;28946:21:0;;;::::1;;::::0;;;:14:::1;:21;::::0;;;;:31;;-1:-1:-1;;28946:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28696:289::o;26987:130::-;16566:16;;-1:-1:-1;;;;;16566:16:0;16552:10;:30;16544:39;;;;;;27073:23:::1;:36:::0;;-1:-1:-1;;;;;;27073:36:0::1;-1:-1:-1::0;;;;;27073:36:0;;;::::1;::::0;;;::::1;::::0;;26987:130::o;28996:121::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29073:26:0;;;::::1;;::::0;;;:19:::1;:26;::::0;;;;:36;;-1:-1:-1;;29073:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28996:121::o;30932:123::-;16566:16;;-1:-1:-1;;;;;16566:16:0;16552:10;:30;16544:39;;;;;;30996:51:::1;::::0;31004:10:::1;::::0;31025:21:::1;30996:51:::0;::::1;;;::::0;::::1;::::0;;;31025:21;31004:10;30996:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30932:123::o:0;28010:374::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;28103:7:::1;28100:102;;;-1:-1:-1::0;;;;;28136:32:0;::::1;;::::0;;;:25:::1;:32;::::0;;;;;::::1;;28135:33;28127:63;;;::::0;-1:-1:-1;;;28127:63:0;;6916:2:1;28127:63:0::1;::::0;::::1;6898:21:1::0;6955:2;6935:18;;;6928:30;-1:-1:-1;;;6974:18:1;;;6967:48;7032:18;;28127:63:0::1;6714:342:1::0;28127:63:0::1;-1:-1:-1::0;;;;;28212:32:0;;::::1;;::::0;;;:25:::1;:32;::::0;;;;;;;:42;;;::::1;;-1:-1:-1::0;;28212:42:0;;::::1;;::::0;;28265:19:::1;:26:::0;;;;;:33;;;::::1;28212:42:::0;28265:33;;::::1;::::0;;;28309:14:::1;:21:::0;;;;;:28;;;::::1;::::0;::::1;::::0;;28348:14:::1;:21:::0;;;;;;:28;;;;::::1;;::::0;;28010:374::o;26777:98::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;26844:13:::1;:23:::0;;;::::1;;;;-1:-1:-1::0;;26844:23:0;;::::1;::::0;;;::::1;::::0;;26777:98::o;5031:244::-;4601:6;;-1:-1:-1;;;;;4601:6:0;314:10;4601:22;4593:67;;;;-1:-1:-1;;;4593:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5120:22:0;::::1;5112:73;;;::::0;-1:-1:-1;;;5112:73:0;;6106:2:1;5112:73:0::1;::::0;::::1;6088:21:1::0;6145:2;6125:18;;;6118:30;6184:34;6164:18;;;6157:62;-1:-1:-1;;;6235:18:1;;;6228:36;6281:19;;5112:73:0::1;5904:402:1::0;5112:73:0::1;5222:6;::::0;;5201:38:::1;::::0;-1:-1:-1;;;;;5201:38:0;;::::1;::::0;5222:6;::::1;::::0;5201:38:::1;::::0;::::1;5250:6;:17:::0;;-1:-1:-1;;;;;;5250:17:0::1;-1:-1:-1::0;;;;;5250:17:0;;;::::1;::::0;;;::::1;::::0;;5031:244::o;1051:250::-;1109:7;1133:6;1129:47;;-1:-1:-1;1163:1:0;1156:8;;1129:47;1188:9;1200:5;1204:1;1200;:5;:::i;:::-;1188:17;-1:-1:-1;1233:1:0;1224:5;1228:1;1188:17;1224:5;:::i;:::-;:10;1216:56;;;;-1:-1:-1;;;1216:56:0;;8028:2:1;1216:56:0;;;8010:21:1;8067:2;8047:18;;;8040:30;8106:34;8086:18;;;8079:62;-1:-1:-1;;;8157:18:1;;;8150:31;8198:19;;1216:56:0;7826:397:1;1216:56:0;1292:1;1051:250;-1:-1:-1;;;1051:250:0:o;1309:132::-;1367:7;1394:39;1398:1;1401;1394:39;;;;;;;;;;;;;;;;;:3;:39::i;484:181::-;542:7;;574:5;578:1;574;:5;:::i;:::-;562:17;;603:1;598;:6;;590:46;;;;-1:-1:-1;;;590:46:0;;7263:2:1;590:46:0;;;7245:21:1;7302:2;7282:18;;;7275:30;7341:29;7321:18;;;7314:57;7388:18;;590:46:0;7061:351:1;19623:380:0;-1:-1:-1;;;;;19759:19:0;;19751:68;;;;-1:-1:-1;;;19751:68:0;;9476:2:1;19751:68:0;;;9458:21:1;9515:2;9495:18;;;9488:30;9554:34;9534:18;;;9527:62;-1:-1:-1;;;9605:18:1;;;9598:34;9649:19;;19751:68:0;9274:400:1;19751:68:0;-1:-1:-1;;;;;19838:21:0;;19830:68;;;;-1:-1:-1;;;19830:68:0;;6513:2:1;19830:68:0;;;6495:21:1;6552:2;6532:18;;;6525:30;6591:34;6571:18;;;6564:62;-1:-1:-1;;;6642:18:1;;;6635:32;6684:19;;19830:68:0;6311:398:1;19830:68:0;-1:-1:-1;;;;;19911:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19963:32;;10176:25:1;;;19963:32:0;;10149:18:1;19963:32:0;;;;;;;19623:380;;;:::o;817:226::-;937:7;973:12;965:6;;;;957:29;;;;-1:-1:-1;;;957:29:0;;;;;;;;:::i;:::-;-1:-1:-1;997:9:0;1009:5;1013:1;1009;:5;:::i;:::-;997:17;817:226;-1:-1:-1;;;;;817:226:0:o;20959:1733::-;-1:-1:-1;;;;;21113:17:0;;21085:4;21113:17;;;:9;:17;;;;;;;;21112:18;:43;;;;-1:-1:-1;;;;;;21135:20:0;;;;;;:9;:20;;;;;;;;21134:21;21112:43;21104:68;;;;-1:-1:-1;;;21104:68:0;;9135:2:1;21104:68:0;;;9117:21:1;9174:2;9154:18;;;9147:30;-1:-1:-1;;;9193:18:1;;;9186:42;9245:18;;21104:68:0;8933:336:1;21104:68:0;21189:13;;;;;;;21185:141;;-1:-1:-1;;;;;21226:27:0;;;;;;:19;:27;;;;;;;;;:61;;-1:-1:-1;;;;;;21257:30:0;;;;;;:19;:30;;;;;;;;21226:61;21218:95;;;;-1:-1:-1;;;21218:95:0;;9881:2:1;21218:95:0;;;9863:21:1;9920:2;9900:18;;;9893:30;-1:-1:-1;;;9939:18:1;;;9932:52;10001:18;;21218:95:0;9679:346:1;21218:95:0;-1:-1:-1;;;;;21342:23:0;;;;;;:15;:23;;;;;;;;21341:24;:55;;;;-1:-1:-1;;;;;;21370:26:0;;;;;;:15;:26;;;;;;;;21369:27;21341:55;:81;;;;-1:-1:-1;21400:22:0;;;;21341:81;21338:186;;;21457:10;;21447:6;:20;;21439:73;;;;-1:-1:-1;;;21439:73:0;;7619:2:1;21439:73:0;;;7601:21:1;7658:2;7638:18;;;7631:30;7697:34;7677:18;;;7670:62;-1:-1:-1;;;7748:18:1;;;7741:38;7796:19;;21439:73:0;7417:404:1;21439:73:0;21540:6;;-1:-1:-1;;;21540:6:0;;;;21536:87;;;21570:41;21585:6;21593:9;21604:6;21570:14;:41::i;:::-;21563:48;;;;21536:87;21639:16;:14;:16::i;:::-;21635:59;;;21672:10;:8;:10::i;:::-;-1:-1:-1;;;;;21734:17:0;;;;;;:9;:17;;;;;;:29;;21756:6;21734:21;:29::i;:::-;-1:-1:-1;;;;;21714:17:0;;;;;;:9;:17;;;;;:49;;;;21809:32;21724:6;21831:9;21809:13;:32::i;:::-;:104;;21907:6;21809:104;;;21857:34;21865:6;21873:9;21884:6;21857:7;:34::i;:::-;21929:16;;21784:129;;-1:-1:-1;21929:16:0;;;;;:51;;;;-1:-1:-1;;;;;;21950:30:0;;;;;;:19;:30;;;;;;;;21949:31;21929:51;21926:150;;;22049:14;;22005:40;22030:14;22005:20;22015:9;22005;:20::i;:40::-;:58;;21997:67;;;;;;-1:-1:-1;;;;;22119:20:0;;;;;;:9;:20;;;;;;:40;;22144:14;22119:24;:40::i;:::-;-1:-1:-1;;;;;22096:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;22176:22;;;;;:14;:22;;;;;;;22172:96;;22205:13;;;;;-1:-1:-1;;;;;22205:13:0;:22;22228:6;22236:17;22228:6;22236:9;:17::i;:::-;22205:49;;-1:-1:-1;;;;;;22205:49:0;;;;;;;-1:-1:-1;;;;;4062:32:1;;;22205:49:0;;;4044:51:1;4111:18;;;4104:34;4017:18;;22205:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22201:65;;-1:-1:-1;;;;;22282:25:0;;;;;;:14;:25;;;;;;;;22278:105;;22314:13;;;;;-1:-1:-1;;;;;22314:13:0;:22;22337:9;22348:20;22337:9;22348;:20::i;:::-;22314:55;;-1:-1:-1;;;;;;22314:55:0;;;;;;;-1:-1:-1;;;;;4062:32:1;;;22314:55:0;;;4044:51:1;4111:18;;;4104:34;4017:18;;22314:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22310:71;;-1:-1:-1;;;;;22399:22:0;;;;;;:14;:22;;;;;;;;22395:94;;22428:11;;-1:-1:-1;;;;;22428:11:0;:20;22449:6;22457:17;22449:6;22457:9;:17::i;:::-;22428:47;;-1:-1:-1;;;;;;22428:47:0;;;;;;;-1:-1:-1;;;;;4062:32:1;;;22428:47:0;;;4044:51:1;4111:18;;;4104:34;4017:18;;22428:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22424:63;;-1:-1:-1;;;;;22503:25:0;;;;;;:14;:25;;;;;;;;22499:103;;22535:11;;-1:-1:-1;;;;;22535:11:0;:20;22556:9;22567:20;22556:9;22567;:20::i;:::-;22535:53;;-1:-1:-1;;;;;;22535:53:0;;;;;;;-1:-1:-1;;;;;4062:32:1;;;22535:53:0;;;4044:51:1;4111:18;;;4104:34;4017:18;;22535:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22531:69;;22635:9;-1:-1:-1;;;;;22619:41:0;22628:6;-1:-1:-1;;;;;22619:41:0;;22645:14;22619:41;;;;10176:25:1;;10164:2;10149:18;;10030:177;22619:41:0;;;;;;;;-1:-1:-1;22680:4:0;;20959:1733;-1:-1:-1;;;;20959:1733:0:o;673:136::-;731:7;758:43;762:1;765;758:43;;;;;;;;;;;;;;;;;:3;:43::i;23373:1317::-;16642:6;:13;;-1:-1:-1;;;;16642:13:0;-1:-1:-1;;;16642:13:0;;;;23448:24:::1;23466:4;23448:9;:24::i;:::-;23422:50;;23483:16;23502:23;23515:9;;23502:8;;:12;;:23;;;;:::i;:::-;23483:42:::0;-1:-1:-1;23539:16:0;23536:28:::1;;23557:7;;;;23536:28;23597:14;;23579:15;:32;23576:96;;;23646:14;;23628:32;;23576:96;23684:13;23700:37;23720:16;;23700:15;;:19;;:37;;;;:::i;:::-;23684:53;;23748:15;23766:29;23782:12;;23766:11;;:15;;:29;;;;:::i;:::-;23748:47:::0;-1:-1:-1;23886:21:0::1;23918:33;23935:15:::0;23918:16:::1;:33::i;:::-;23962:20;23985:40;:21;24011:13:::0;23985:25:::1;:40::i;:::-;23962:63:::0;-1:-1:-1;24038:20:0::1;24061:46;24095:11:::0;24061:29:::1;23962:63:::0;24081:8;24061:19:::1;:29::i;:::-;:33:::0;::::1;:46::i;:::-;24038:69:::0;-1:-1:-1;24118:22:0::1;24143:48;24179:11:::0;24143:31:::1;:15:::0;24163:10;24143:19:::1;:31::i;:48::-;24118:73:::0;-1:-1:-1;24202:22:0::1;24227:59;24118:73:::0;24227:36:::1;:15:::0;24247;24227:19:::1;:36::i;:59::-;24202:84:::0;-1:-1:-1;24300:19:0;;24297:109:::1;;24344:23;::::0;24336:58:::1;::::0;-1:-1:-1;;;;;24344:23:0;;::::1;::::0;24336:58;::::1;;;::::0;24378:15;;24344:23:::1;24336:58:::0;24344:23;24336:58;24378:15;24344:23;24336:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24297:109;24419:21:::0;;24416:134:::1;;24461:13;;;;;;;;;-1:-1:-1::0;;;;;24461:13:0::1;-1:-1:-1::0;;;;;24461:21:0::1;;24492:17;24461:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;24457:69:::0;::::1;24563:21:::0;;24560:123:::1;;24605:11;;;;;;;;;-1:-1:-1::0;;;;;24605:11:0::1;-1:-1:-1::0;;;;;24605:19:0::1;;24634:17;24605:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;24601:67:::0;::::1;23411:1279;;;;;;;;;16666:1;16678:6:::0;:14;;-1:-1:-1;;;;16678:14:0;;;23373:1317::o;1449:225::-;1569:7;1604:12;1597:5;1589:28;;;;-1:-1:-1;;;1589:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1628:9:0;1640:5;1644:1;1640;:5;:::i;20689:262::-;-1:-1:-1;;;;;20842:15:0;;20807:4;20842:15;;;:9;:15;;;;;;:27;;20862:6;20842:19;:27::i;:::-;-1:-1:-1;;;;;20824:15:0;;;;;;;:9;:15;;;;;;:45;;;;20896:13;;;;;;;:25;;20914:6;20896:17;:25::i;:::-;-1:-1:-1;;;;;20880:13:0;;;;;;:9;:13;;;;;:41;-1:-1:-1;20939:4:0;20689:262;;;;;:::o;25051:349::-;25100:4;25119:28;25150:24;25168:4;25150:9;:24::i;:::-;25224:18;;25119:55;;-1:-1:-1;25200:42:0;;;;;;;25275:37;;-1:-1:-1;25299:13:0;;;;25275:37;:61;;;;-1:-1:-1;25330:6:0;;-1:-1:-1;;;25330:6:0;;;;25329:7;25275:61;:116;;;;-1:-1:-1;25380:10:0;25354:37;;;;:25;:37;;;;;;;;25353:38;25275:116;25255:136;;;;25051:349;:::o;24698:345::-;-1:-1:-1;;;;;24822:25:0;;24797:4;24822:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;24851:23:0;;;;;;:19;:23;;;;;;;;24822:52;24819:217;;;-1:-1:-1;24897:5:0;24890:12;;24819:217;-1:-1:-1;;;;;24959:31:0;;;;;;:25;:31;;;;;;;;;:64;;-1:-1:-1;;;;;;24994:29:0;;;;;;:25;:29;;;;;;;;24959:64;24951:73;;;;22700:665;-1:-1:-1;;;;;22884:33:0;;22821:7;22884:33;;;:25;:33;;;;;;22821:7;;22884:33;;22881:251;;;22945:40;22970:14;;22945:20;22956:8;;22945:6;:10;;:20;;;;:::i;:40::-;22933:52;;22881:251;;;-1:-1:-1;;;;;23015:36:0;;;;;;:25;:36;;;;;;;;23012:120;;;23079:41;23105:14;;23079:21;23090:9;;23079:6;:10;;:21;;;;:::i;:41::-;23067:53;;23012:120;23147:13;;23144:173;;23222:4;23204:24;;;;:9;:24;;;;;;:39;;23233:9;23204:28;:39::i;:::-;23195:4;23177:24;;;;:9;:24;;;;;;;:66;;;;23263:42;;-1:-1:-1;;;;;23263:42:0;;;;;;;23295:9;10176:25:1;;10164:2;10149:18;;10030:177;23263:42:0;;;;;;;;23144:173;23336:21;:6;23347:9;23336:10;:21::i;31216:562::-;31366:16;;;31380:1;31366:16;;;;;;;;31342:21;;31366:16;;;;;;;;;;-1:-1:-1;31366:16:0;31342:40;;31411:4;31393;31398:1;31393:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31393:23:0;;;:7;;;;;;;;;;:23;;;;31437:6;;:13;;;-1:-1:-1;;;31437:13:0;;;;:6;;;;;:11;;:13;;;;;31393:7;;31437:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31427:4;31432:1;31427:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31427:23:0;;;:7;;;;;;;;;;:23;;;;31495:6;31463:53;;31480:4;;31495:6;31504:11;31463:8;:53::i;:::-;31555:6;;:215;;-1:-1:-1;;;31555:215:0;;-1:-1:-1;;;;;31555:6:0;;;;:57;;:215;;31627:11;;31555:6;;31697:4;;31724;;31744:15;;31555:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31271:507;31216:562;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:382::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1576:31;1601:5;1576:31;:::i;:::-;1626:5;-1:-1:-1;1683:2:1;1668:18;;1655:32;1696:30;1655:32;1696:30;:::i;1763:315::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2083:241::-;2139:6;2192:2;2180:9;2171:7;2167:23;2163:32;2160:52;;;2208:1;2205;2198:12;2160:52;2247:9;2234:23;2266:28;2288:5;2266:28;:::i;2329:245::-;2396:6;2449:2;2437:9;2428:7;2424:23;2420:32;2417:52;;;2465:1;2462;2455:12;2417:52;2497:9;2491:16;2516:28;2538:5;2516:28;:::i;2579:180::-;2638:6;2691:2;2679:9;2670:7;2666:23;2662:32;2659:52;;;2707:1;2704;2697:12;2659:52;-1:-1:-1;2730:23:1;;2579:180;-1:-1:-1;2579:180:1:o;2764:184::-;2834:6;2887:2;2875:9;2866:7;2862:23;2858:32;2855:52;;;2903:1;2900;2893:12;2855:52;-1:-1:-1;2926:16:1;;2764:184;-1:-1:-1;2764:184:1:o;2953:316::-;3030:6;3038;3046;3099:2;3087:9;3078:7;3074:23;3070:32;3067:52;;;3115:1;3112;3105:12;3067:52;-1:-1:-1;;3138:23:1;;;3208:2;3193:18;;3180:32;;-1:-1:-1;3259:2:1;3244:18;;;3231:32;;2953:316;-1:-1:-1;2953:316:1:o;5302:597::-;5414:4;5443:2;5472;5461:9;5454:21;5504:6;5498:13;5547:6;5542:2;5531:9;5527:18;5520:34;5572:1;5582:140;5596:6;5593:1;5590:13;5582:140;;;5691:14;;;5687:23;;5681:30;5657:17;;;5676:2;5653:26;5646:66;5611:10;;5582:140;;;5740:6;5737:1;5734:13;5731:91;;;5810:1;5805:2;5796:6;5785:9;5781:22;5777:31;5770:42;5731:91;-1:-1:-1;5883:2:1;5862:15;-1:-1:-1;;5858:29:1;5843:45;;;;5890:2;5839:54;;5302:597;-1:-1:-1;;;5302:597:1:o;8572:356::-;8774:2;8756:21;;;8793:18;;;8786:30;8852:34;8847:2;8832:18;;8825:62;8919:2;8904:18;;8572:356::o;10212:980::-;10474:4;10522:3;10511:9;10507:19;10553:6;10542:9;10535:25;10579:2;10617:6;10612:2;10601:9;10597:18;10590:34;10660:3;10655:2;10644:9;10640:18;10633:31;10684:6;10719;10713:13;10750:6;10742;10735:22;10788:3;10777:9;10773:19;10766:26;;10827:2;10819:6;10815:15;10801:29;;10848:1;10858:195;10872:6;10869:1;10866:13;10858:195;;;10937:13;;-1:-1:-1;;;;;10933:39:1;10921:52;;11028:15;;;;10993:12;;;;10969:1;10887:9;10858:195;;;-1:-1:-1;;;;;;;11109:32:1;;;;11104:2;11089:18;;11082:60;-1:-1:-1;;;11173:3:1;11158:19;11151:35;11070:3;10212:980;-1:-1:-1;;;10212:980:1:o;11386:128::-;11426:3;11457:1;11453:6;11450:1;11447:13;11444:39;;;11463:18;;:::i;:::-;-1:-1:-1;11499:9:1;;11386:128::o;11519:217::-;11559:1;11585;11575:132;;11629:10;11624:3;11620:20;11617:1;11610:31;11664:4;11661:1;11654:15;11692:4;11689:1;11682:15;11575:132;-1:-1:-1;11721:9:1;;11519:217::o;11741:168::-;11781:7;11847:1;11843;11839:6;11835:14;11832:1;11829:21;11824:1;11817:9;11810:17;11806:45;11803:71;;;11854:18;;:::i;:::-;-1:-1:-1;11894:9:1;;11741:168::o;11914:125::-;11954:4;11982:1;11979;11976:8;11973:34;;;11987:18;;:::i;:::-;-1:-1:-1;12024:9:1;;11914:125::o;12044:380::-;12123:1;12119:12;;;;12166;;;12187:61;;12241:4;12233:6;12229:17;12219:27;;12187:61;12294:2;12286:6;12283:14;12263:18;12260:38;12257:161;;;12340:10;12335:3;12331:20;12328:1;12321:31;12375:4;12372:1;12365:15;12403:4;12400:1;12393:15;12257:161;;12044:380;;;:::o;12429:127::-;12490:10;12485:3;12481:20;12478:1;12471:31;12521:4;12518:1;12511:15;12545:4;12542:1;12535:15;12561:127;12622:10;12617:3;12613:20;12610:1;12603:31;12653:4;12650:1;12643:15;12677:4;12674:1;12667:15;12825:131;-1:-1:-1;;;;;12900:31:1;;12890:42;;12880:70;;12946:1;12943;12936:12;12961:118;13047:5;13040:13;13033:21;13026:5;13023:32;13013:60;;13069:1;13066;13059:12

Swarm Source

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