ETH Price: $3,093.96 (+2.01%)
Gas: 3 Gwei

Token

Gambit (GAMBIT)
 

Overview

Max Total Supply

100,000,000,000 GAMBIT

Holders

5,171

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
240,640.404116705115767475 GAMBIT

Value
$0.00
0xa7C7bEd4750c60A982Fc7BC023Ec17bAFdb20048
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:
Gambit

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-12
*/

// SPDX-License-Identifier: MIT
/*

Gambit is a pioneering betting platform leveraging blockchain technology to redefine the gaming experience. 
Distinguished from traditional betting platforms, Gambit unveils a novel selection of betting games,
underpinned by algorithmic designs that guarantee equitable play. 

Website : https://gambit.game/
TG : https://t.me/play_gambit
X : https://twitter.com/Play_Gambit

*/
pragma solidity 0.8.12;

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

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

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

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 renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    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 IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
    external
    payable
    returns (
        uint256 amountToken,
        uint256 amountETH,
        uint256 liquidity
    );
}

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

contract Gambit is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public TreasuryAddress;
    address public RewardsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyRewardsFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellRewardsFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForRewards;


    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading(bool tradingActive);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event UpdatedRewardsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("Gambit", "GAMBIT") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 100000000000 * 1e18;

        maxBuyAmount = totalSupply *  10 / 1000;
        maxSellAmount = totalSupply *  5 / 1000;
        maxWalletAmount = totalSupply * 10 / 1000;
        swapTokensAtAmount = totalSupply * 50 / 100000; 

        buyTreasuryFee = 2;
        buyLiquidityFee = 0;
        buyRewardsFee = 3;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;

        sellTreasuryFee = 20;
        sellLiquidityFee = 10;
        sellRewardsFee = 20;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        TreasuryAddress = address(0x12C050782034320725b352F89ACb1e0464A29A67);
        RewardsAddress = address(0xe21F58e8228e28D112aE49F16588255b1cf49a6f);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(RewardsAddress, true);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }


    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    function updateSwapThreshold(uint256 newAmount) public  {
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        swapTokensAtAmount = newAmount* (10**18);
    }


    function transferForeignToken(address _token, address _to) public returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() public {
        bool success;
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function updateBuyFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyRewardsFee = _rewardsFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;
        require(buyTotalFees <= 30, "Fees must be 30%  or less");
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellRewardsFee = _rewardsFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;
        require(sellTotalFees <= 30, "Fees must be 30%  or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }


    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");


        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                    require(from == owner(), "Trading is not enabled");
                }
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 penaltyAmount = 0;

        // only take fees on Trades, not on wallet transfers
        if(takeFee){       
            if(tradingActiveBlock>0 && (tradingActiveBlock + 1) > block.number){
                penaltyAmount = amount * 10 / 100;
                super._transfer(from, RewardsAddress, penaltyAmount);
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
                tokensForRewards += fees * sellRewardsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
                tokensForRewards += fees * buyRewardsFee / buyTotalFees;
            }  
            if(fees > 0){
                super._transfer(from, address(this), fees);
            }
            amount -= fees + penaltyAmount;
        }

        super._transfer(from, to, amount);
    }

    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] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(owner()),
            block.timestamp
        );
    }

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

    function setRewardsAddress(address _RewardsAddress) external onlyOwner {
        require(_RewardsAddress != address(0), "_RewardsAddress address cannot be 0");
        RewardsAddress = payable(_RewardsAddress);
        emit UpdatedRewardsAddress(_RewardsAddress);
    }
   
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury + tokensForRewards;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 5){
            contractBalance = swapTokensAtAmount * 5;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = ethBalance * tokensForTreasury / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForRewards = ethBalance * tokensForRewards / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForTreasury + ethForRewards;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;
        tokensForRewards = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(RewardsAddress).call{value: ethForRewards}("");

        (success,) = address(TreasuryAddress).call{value: address(this).balance}("");
    }


    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading(tradingActive);

        if (tradingActive && tradingActiveBlock == 0) {
            tradingActiveBlock = block.number;
        }
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedRewardsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"RewardsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_RewardsAddress","type":"address"}],"name":"setRewardsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040518060400160405280600681526020017f47616d62697400000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f47414d42495400000000000000000000000000000000000000000000000000008152508160039080519060200190620000ec92919062000c30565b5080600490805190602001906200010592919062000c30565b50505060006200011a6200066c60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ea8160016200067460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000d4a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000d4a565b6040518363ffffffff1660e01b81526004016200033d92919062000d8d565b6020604051808303816000875af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062000d4a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003cb60a05160016200070a60201b60201c565b60006c01431e0fae6d7217caa000000090506103e8600a82620003ef919062000df3565b620003fb919062000e83565b6006819055506103e860058262000413919062000df3565b6200041f919062000e83565b6007819055506103e8600a8262000437919062000df3565b62000443919062000e83565b600881905550620186a06032826200045c919062000df3565b62000468919062000e83565b600a819055506002601081905550600060118190555060036012819055506012546011546010546200049b919062000ebb565b620004a7919062000ebb565b600f8190555060148081905550600a6015819055506014601681905550601654601554601454620004d9919062000ebb565b620004e5919062000ebb565b601381905550620004fe8360016200067460201b60201c565b620005113060016200067460201b60201c565b6200052661dead60016200067460201b60201c565b7312c050782034320725b352f89acb1e0464a29a67600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e21f58e8228e28d112ae49f16588255b1cf49a6f600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005e3836001620007bd60201b60201c565b620005f6306001620007bd60201b60201c565b6200060b61dead6001620007bd60201b60201c565b62000640600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007bd60201b60201c565b6200065283826200090a60201b60201c565b620006638362000a5b60201b60201c565b5050506200119f565b600033905090565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006fe92919062000f35565b60405180910390a15050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200077382826200067460201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007cd6200066c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008569062000fc3565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008fe919062000fe5565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200097d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009749062001052565b60405180910390fd5b806002600082825462000991919062000ebb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e8919062000ebb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a4f919062001085565b60405180910390a35050565b62000a6b6200066c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af49062000fc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b679062001118565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000c3e9062001169565b90600052602060002090601f01602090048101928262000c62576000855562000cae565b82601f1062000c7d57805160ff191683800117855562000cae565b8280016001018555821562000cae579182015b8281111562000cad57825182559160200191906001019062000c90565b5b50905062000cbd919062000cc1565b5090565b5b8082111562000cdc57600081600090555060010162000cc2565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d128262000ce5565b9050919050565b62000d248162000d05565b811462000d3057600080fd5b50565b60008151905062000d448162000d19565b92915050565b60006020828403121562000d635762000d6262000ce0565b5b600062000d738482850162000d33565b91505092915050565b62000d878162000d05565b82525050565b600060408201905062000da4600083018562000d7c565b62000db3602083018462000d7c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e008262000dba565b915062000e0d8362000dba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e495762000e4862000dc4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e908262000dba565b915062000e9d8362000dba565b92508262000eb05762000eaf62000e54565b5b828204905092915050565b600062000ec88262000dba565b915062000ed58362000dba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f0d5762000f0c62000dc4565b5b828201905092915050565b60008115159050919050565b62000f2f8162000f18565b82525050565b600060408201905062000f4c600083018562000d7c565b62000f5b602083018462000f24565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fab60208362000f62565b915062000fb88262000f73565b602082019050919050565b6000602082019050818103600083015262000fde8162000f9c565b9050919050565b600060208201905062000ffc600083018462000f24565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200103a601f8362000f62565b9150620010478262001002565b602082019050919050565b600060208201905081810360008301526200106d816200102b565b9050919050565b6200107f8162000dba565b82525050565b60006020820190506200109c600083018462001074565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200110060268362000f62565b91506200110d82620010a2565b604082019050919050565b600060208201905081810360008301526200113381620010f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200118257607f821691505b602082108114156200119957620011986200113a565b5b50919050565b60805160a051615921620011f6600039600081816110b9015281816115eb0152611eac015260008181610d7501528181613eb601528181613f9701528181613fbe0152818161405a015261408101526159216000f3fe6080604052600436106103395760003560e01c80638906758d116101ab578063c17b5b8c116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610c0d578063f54afa7814610c36578063f5648a4f14610c61578063f637434214610c7857610340565b8063e2f4560514610b8c578063ee40166e14610bb7578063f11a24d314610be257610340565b8063cc2ffe7c116100d1578063cc2ffe7c14610ad0578063d85ba06314610afb578063dc3f0d0f14610b26578063dd62ed3e14610b4f57610340565b8063c17b5b8c14610a55578063c18bc19514610a7e578063cc274b2914610aa757610340565b8063a9059cbb11610164578063bb8d51311161013e578063bb8d5131146109ab578063bbc0c742146109d6578063c024666814610a01578063c054f2f414610a2a57610340565b8063a9059cbb14610906578063aa4bde2814610943578063b62496f51461096e57610340565b80638906758d1461080a5780638a8c523c146108335780638da5cb5b1461084a57806395d89b41146108755780639a7a23d6146108a0578063a457c2d7146108c957610340565b80635c068a8c11610285578063715018a61161022357806377a3b609116101fd57806377a3b6091461074e5780638095d564146107795780638366e79a146107a257806388e765ff146107df57610340565b8063715018a6146106f7578063751039fc1461070e5780637571336a1461072557610340565b80636a486a8e1161025f5780636a486a8e146106395780636b2fb124146106645780636ddd17131461068f57806370a08231146106ba57610340565b80635c068a8c146105ba5780636605bfda146105e557806366d602ae1461060e57610340565b806323b872dd116102f257806339509351116102cc57806339509351146104fc57806349bd5a5e146105395780634a62bb65146105645780635b5c251f1461058f57610340565b806323b872dd1461046b5780632be32b61146104a8578063313ce567146104d157610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631a8145bb1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ca3565b60405161036791906141ce565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614289565b610d35565b6040516103a491906142e4565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906142ff565b610d53565b6040516103e191906142e4565b60405180910390f35b3480156103f657600080fd5b506103ff610d73565b60405161040c919061438b565b60405180910390f35b34801561042157600080fd5b5061042a610d97565b60405161043791906143b5565b60405180910390f35b34801561044c57600080fd5b50610455610da1565b60405161046291906143b5565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d91906143d0565b610da7565b60405161049f91906142e4565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190614423565b610e9f565b005b3480156104dd57600080fd5b506104e6611002565b6040516104f3919061446c565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e9190614289565b61100b565b60405161053091906142e4565b60405180910390f35b34801561054557600080fd5b5061054e6110b7565b60405161055b9190614496565b60405180910390f35b34801561057057600080fd5b506105796110db565b60405161058691906142e4565b60405180910390f35b34801561059b57600080fd5b506105a46110ee565b6040516105b19190614496565b60405180910390f35b3480156105c657600080fd5b506105cf611114565b6040516105dc91906143b5565b60405180910390f35b3480156105f157600080fd5b5061060c600480360381019061060791906142ff565b61111a565b005b34801561061a57600080fd5b506106236112a8565b60405161063091906143b5565b60405180910390f35b34801561064557600080fd5b5061064e6112ae565b60405161065b91906143b5565b60405180910390f35b34801561067057600080fd5b506106796112b4565b60405161068691906143b5565b60405180910390f35b34801561069b57600080fd5b506106a46112ba565b6040516106b191906142e4565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc91906142ff565b6112cd565b6040516106ee91906143b5565b60405180910390f35b34801561070357600080fd5b5061070c611315565b005b34801561071a57600080fd5b5061072361146d565b005b34801561073157600080fd5b5061074c600480360381019061074791906144dd565b61154d565b005b34801561075a57600080fd5b506107636116d4565b60405161077091906143b5565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b919061451d565b6116da565b005b3480156107ae57600080fd5b506107c960048036038101906107c49190614570565b6117f4565b6040516107d691906142e4565b60405180910390f35b3480156107eb57600080fd5b506107f4611a33565b60405161080191906143b5565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c91906142ff565b611a39565b005b34801561083f57600080fd5b50610848611bc7565b005b34801561085657600080fd5b5061085f611d57565b60405161086c9190614496565b60405180910390f35b34801561088157600080fd5b5061088a611d81565b60405161089791906141ce565b60405180910390f35b3480156108ac57600080fd5b506108c760048036038101906108c291906144dd565b611e13565b005b3480156108d557600080fd5b506108f060048036038101906108eb9190614289565b611f47565b6040516108fd91906142e4565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190614289565b612032565b60405161093a91906142e4565b60405180910390f35b34801561094f57600080fd5b50610958612050565b60405161096591906143b5565b60405180910390f35b34801561097a57600080fd5b50610995600480360381019061099091906142ff565b612056565b6040516109a291906142e4565b60405180910390f35b3480156109b757600080fd5b506109c0612076565b6040516109cd91906143b5565b60405180910390f35b3480156109e257600080fd5b506109eb61207c565b6040516109f891906142e4565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a2391906144dd565b61208f565b005b348015610a3657600080fd5b50610a3f6121cf565b604051610a4c9190614496565b60405180910390f35b348015610a6157600080fd5b50610a7c6004803603810190610a77919061451d565b6121f5565b005b348015610a8a57600080fd5b50610aa56004803603810190610aa09190614423565b61230f565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190614423565b612472565b005b348015610adc57600080fd5b50610ae561251f565b604051610af291906143b5565b60405180910390f35b348015610b0757600080fd5b50610b10612525565b604051610b1d91906143b5565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b489190614423565b61252b565b005b348015610b5b57600080fd5b50610b766004803603810190610b719190614570565b61268e565b604051610b8391906143b5565b60405180910390f35b348015610b9857600080fd5b50610ba1612715565b604051610bae91906143b5565b60405180910390f35b348015610bc357600080fd5b50610bcc61271b565b604051610bd991906143b5565b60405180910390f35b348015610bee57600080fd5b50610bf7612721565b604051610c0491906143b5565b60405180910390f35b348015610c1957600080fd5b50610c346004803603810190610c2f91906142ff565b612727565b005b348015610c4257600080fd5b50610c4b6128ee565b604051610c5891906143b5565b60405180910390f35b348015610c6d57600080fd5b50610c766128f4565b005b348015610c8457600080fd5b50610c8d6129f5565b604051610c9a91906143b5565b60405180910390f35b606060038054610cb2906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde906145df565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b6000610d49610d426129fb565b8484612a03565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60185481565b6000610db4848484612bce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dff6129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7690614683565b60405180910390fd5b610e9385610e8b6129fb565b858403612a03565b60019150509392505050565b610ea76129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d906146ef565b60405180910390fd5b670de0b6b3a76400006103e86001610f4c610d97565b610f56919061473e565b610f6091906147c7565b610f6a91906147c7565b811015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061486a565b60405180910390fd5b670de0b6b3a764000081610fc0919061473e565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ff791906143b5565b60405180910390a150565b60006012905090565b60006110ad6110186129fb565b8484600160006110266129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110a8919061488a565b612a03565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6111226129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614952565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60135481565b60145481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61131d6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a3906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114756129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb906146ef565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115556129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db906146ef565b60405180910390fd5b80611679577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f906149e4565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6116e26129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611768906146ef565b60405180910390fd5b826010819055508160118190555080601281905550601254601154601054611799919061488a565b6117a3919061488a565b600f81905550601e600f5411156117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e690614a50565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90614abc565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90614b4e565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119309190614496565b602060405180830381865afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190614b83565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016119ae929190614bb0565b6020604051808303816000875af11580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190614bee565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611a24929190614bb0565b60405180910390a15092915050565b60065481565b611a416129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac7906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3790614c8d565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b611bcf6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c55906146ef565b60405180910390fd5b600e60019054906101000a900460ff1615611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca590614cf9565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600e60019054906101000a900460ff16604051611d2291906142e4565b60405180910390a1600e60019054906101000a900460ff168015611d4857506000600d54145b15611d555743600d819055505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611d90906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054611dbc906145df565b8015611e095780601f10611dde57610100808354040283529160200191611e09565b820191906000526020600020905b815481529060010190602001808311611dec57829003601f168201915b5050505050905090565b611e1b6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea1906146ef565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3090614d8b565b60405180910390fd5b611f4382826137d0565b5050565b60008060016000611f566129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a90614e1d565b60405180910390fd5b61202761201e6129fb565b85858403612a03565b600191505092915050565b600061204661203f6129fb565b8484612bce565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600e60019054906101000a900460ff1681565b6120976129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211d906146ef565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121c391906142e4565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121fd6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906146ef565b60405180910390fd5b8260148190555081601581905550806016819055506016546015546014546122b4919061488a565b6122be919061488a565b601381905550601e601354111561230a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230190614a50565b60405180910390fd5b505050565b6123176129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239d906146ef565b60405180910390fd5b670de0b6b3a76400006103e860036123bc610d97565b6123c6919061473e565b6123d091906147c7565b6123da91906147c7565b81101561241c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241390614eaf565b60405180910390fd5b670de0b6b3a764000081612430919061473e565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161246791906143b5565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f990614b4e565b60405180910390fd5b670de0b6b3a764000081612516919061473e565b600a8190555050565b60175481565b600f5481565b6125336129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b9906146ef565b60405180910390fd5b670de0b6b3a76400006103e860016125d8610d97565b6125e2919061473e565b6125ec91906147c7565b6125f691906147c7565b811015612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f90614f41565b60405180910390fd5b670de0b6b3a76400008161264c919061473e565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161268391906143b5565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60115481565b61272f6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b5906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561282e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282590614fd3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90614b4e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16476040516129aa90615024565b60006040518083038185875af1925050503d80600081146129e7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ec565b606091505b50508091505050565b60155481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a906150ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada9061513d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc191906143b5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c35906151cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca590615261565b60405180910390fd5b60008111612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce8906152cd565b60405180910390fd5b600e60009054906101000a900460ff16156132a057612d0e611d57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d7c5750612d4c611d57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612db55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612def575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561329f57600e60019054906101000a900460ff16612f5e57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea95750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90615339565b60405180910390fd5b612ef0611d57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f54906153a5565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130015750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130a85760065481111561304b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304290615437565b60405180910390fd5b600854613057836112cd565b82613062919061488a565b11156130a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309a906154a3565b60405180910390fd5b61329e565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561314b5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561319a57600754811115613195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318c90615535565b60405180910390fd5b61329d565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561323e5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561329c5760085461324f836112cd565b8261325a919061488a565b111561329b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613292906154a3565b60405180910390fd5b5b5b5b5b5b60006132ab306112cd565b90506000600a5482101590508080156132d05750600e60029054906101000a900460ff165b80156132e95750600960009054906101000a900460ff16155b801561333f5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133955750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133eb5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342f576001600960006101000a81548160ff02191690831515021790555061341361387b565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134d65750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134e057600090505b60008082156137bb576000600d541180156135085750436001600d54613506919061488a565b115b1561355a576064600a8761351c919061473e565b61352691906147c7565b905061355588600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b18565b61378c565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135b557506000601354115b15613674576064601354876135ca919061473e565b6135d491906147c7565b9150601354601554836135e7919061473e565b6135f191906147c7565b60186000828254613602919061488a565b925050819055506013546014548361361a919061473e565b61362491906147c7565b60176000828254613635919061488a565b925050819055506013546016548361364d919061473e565b61365791906147c7565b60196000828254613668919061488a565b9250508190555061378b565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136cf57506000600f54115b1561378a576064600f54876136e4919061473e565b6136ee91906147c7565b9150600f5460115483613701919061473e565b61370b91906147c7565b6018600082825461371c919061488a565b92505081905550600f5460105483613734919061473e565b61373e91906147c7565b6017600082825461374f919061488a565b92505081905550600f5460125483613767919061473e565b61377191906147c7565b60196000828254613782919061488a565b925050819055505b5b5b60008211156137a1576137a0883084613b18565b5b80826137ad919061488a565b866137b89190615555565b95505b6137c6888888613b18565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138318282613d83565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613886306112cd565b9050600060195460175460185461389d919061488a565b6138a7919061488a565b905060008214806138b85750600081145b156138c4575050613b16565b6005600a546138d3919061473e565b8211156138ec576005600a546138e9919061473e565b91505b60008060028360185486613900919061473e565b61390a91906147c7565b61391491906147c7565b905061392a81856139259190615555565b613e17565b600047905060008190506000600260185461394591906147c7565b866139509190615555565b6017548461395e919061473e565b61396891906147c7565b90506000600260185461397b91906147c7565b876139869190615555565b60195485613994919061473e565b61399e91906147c7565b905080826139ac919061488a565b836139b79190615555565b92506000601881905550600060178190555060006019819055506000851180156139e15750600083115b156139f1576139f08584614054565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a3790615024565b60006040518083038185875af1925050503d8060008114613a74576040519150601f19603f3d011682016040523d82523d6000602084013e613a79565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ac590615024565b60006040518083038185875af1925050503d8060008114613b02576040519150601f19603f3d011682016040523d82523d6000602084013e613b07565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f906151cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef90615261565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c75906155fb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d11919061488a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d7591906143b5565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613e0b92919061561b565b60405180910390a15050565b6000600267ffffffffffffffff811115613e3457613e33615644565b5b604051908082528060200260200182016040528015613e625781602001602082028036833780820191505090505b5090503081600081518110613e7a57613e79615673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4391906156b7565b81600181518110613f5757613f56615673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fbc307f000000000000000000000000000000000000000000000000000000000000000084612a03565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161401e9594939291906157dd565b600060405180830381600087803b15801561403857600080fd5b505af115801561404c573d6000803e3d6000fd5b505050505050565b61407f307f000000000000000000000000000000000000000000000000000000000000000084612a03565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806140c9611d57565b426040518863ffffffff1660e01b81526004016140eb96959493929190615837565b60606040518083038185885af1158015614109573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061412e9190615898565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561416f578082015181840152602081019050614154565b8381111561417e576000848401525b50505050565b6000601f19601f8301169050919050565b60006141a082614135565b6141aa8185614140565b93506141ba818560208601614151565b6141c381614184565b840191505092915050565b600060208201905081810360008301526141e88184614195565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614220826141f5565b9050919050565b61423081614215565b811461423b57600080fd5b50565b60008135905061424d81614227565b92915050565b6000819050919050565b61426681614253565b811461427157600080fd5b50565b6000813590506142838161425d565b92915050565b600080604083850312156142a05761429f6141f0565b5b60006142ae8582860161423e565b92505060206142bf85828601614274565b9150509250929050565b60008115159050919050565b6142de816142c9565b82525050565b60006020820190506142f960008301846142d5565b92915050565b600060208284031215614315576143146141f0565b5b60006143238482850161423e565b91505092915050565b6000819050919050565b600061435161434c614347846141f5565b61432c565b6141f5565b9050919050565b600061436382614336565b9050919050565b600061437582614358565b9050919050565b6143858161436a565b82525050565b60006020820190506143a0600083018461437c565b92915050565b6143af81614253565b82525050565b60006020820190506143ca60008301846143a6565b92915050565b6000806000606084860312156143e9576143e86141f0565b5b60006143f78682870161423e565b93505060206144088682870161423e565b925050604061441986828701614274565b9150509250925092565b600060208284031215614439576144386141f0565b5b600061444784828501614274565b91505092915050565b600060ff82169050919050565b61446681614450565b82525050565b6000602082019050614481600083018461445d565b92915050565b61449081614215565b82525050565b60006020820190506144ab6000830184614487565b92915050565b6144ba816142c9565b81146144c557600080fd5b50565b6000813590506144d7816144b1565b92915050565b600080604083850312156144f4576144f36141f0565b5b60006145028582860161423e565b9250506020614513858286016144c8565b9150509250929050565b600080600060608486031215614536576145356141f0565b5b600061454486828701614274565b935050602061455586828701614274565b925050604061456686828701614274565b9150509250925092565b60008060408385031215614587576145866141f0565b5b60006145958582860161423e565b92505060206145a68582860161423e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145f757607f821691505b6020821081141561460b5761460a6145b0565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061466d602883614140565b915061467882614611565b604082019050919050565b6000602082019050818103600083015261469c81614660565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146d9602083614140565b91506146e4826146a3565b602082019050919050565b60006020820190508181036000830152614708816146cc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061474982614253565b915061475483614253565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561478d5761478c61470f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147d282614253565b91506147dd83614253565b9250826147ed576147ec614798565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614854602983614140565b915061485f826147f8565b604082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b600061489582614253565b91506148a083614253565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156148d5576148d461470f565b5b828201905092915050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b600061493c602483614140565b9150614947826148e0565b604082019050919050565b6000602082019050818103600083015261496b8161492f565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b60006149ce602783614140565b91506149d982614972565b604082019050919050565b600060208201905081810360008301526149fd816149c1565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b6000614a3a601983614140565b9150614a4582614a04565b602082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614aa6601a83614140565b9150614ab182614a70565b602082019050919050565b60006020820190508181036000830152614ad581614a99565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b38602183614140565b9150614b4382614adc565b604082019050919050565b60006020820190508181036000830152614b6781614b2b565b9050919050565b600081519050614b7d8161425d565b92915050565b600060208284031215614b9957614b986141f0565b5b6000614ba784828501614b6e565b91505092915050565b6000604082019050614bc56000830185614487565b614bd260208301846143a6565b9392505050565b600081519050614be8816144b1565b92915050565b600060208284031215614c0457614c036141f0565b5b6000614c1284828501614bd9565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614c77602383614140565b9150614c8282614c1b565b604082019050919050565b60006020820190508181036000830152614ca681614c6a565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614ce3601883614140565b9150614cee82614cad565b602082019050919050565b60006020820190508181036000830152614d1281614cd6565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d75603983614140565b9150614d8082614d19565b604082019050919050565b60006020820190508181036000830152614da481614d68565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e07602583614140565b9150614e1282614dab565b604082019050919050565b60006020820190508181036000830152614e3681614dfa565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614e99602c83614140565b9150614ea482614e3d565b604082019050919050565b60006020820190508181036000830152614ec881614e8c565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f2b602a83614140565b9150614f3682614ecf565b604082019050919050565b60006020820190508181036000830152614f5a81614f1e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fbd602683614140565b9150614fc882614f61565b604082019050919050565b60006020820190508181036000830152614fec81614fb0565b9050919050565b600081905092915050565b50565b600061500e600083614ff3565b915061501982614ffe565b600082019050919050565b600061502f82615001565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615095602483614140565b91506150a082615039565b604082019050919050565b600060208201905081810360008301526150c481615088565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615127602283614140565b9150615132826150cb565b604082019050919050565b600060208201905081810360008301526151568161511a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151b9602583614140565b91506151c48261515d565b604082019050919050565b600060208201905081810360008301526151e8816151ac565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061524b602383614140565b9150615256826151ef565b604082019050919050565b6000602082019050818103600083015261527a8161523e565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006152b7601d83614140565b91506152c282615281565b602082019050919050565b600060208201905081810360008301526152e6816152aa565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615323601683614140565b915061532e826152ed565b602082019050919050565b6000602082019050818103600083015261535281615316565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061538f601683614140565b915061539a82615359565b602082019050919050565b600060208201905081810360008301526153be81615382565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615421602883614140565b915061542c826153c5565b604082019050919050565b6000602082019050818103600083015261545081615414565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061548d601883614140565b915061549882615457565b602082019050919050565b600060208201905081810360008301526154bc81615480565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b600061551f602a83614140565b915061552a826154c3565b604082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b600061556082614253565b915061556b83614253565b92508282101561557e5761557d61470f565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006155e5602683614140565b91506155f082615589565b604082019050919050565b60006020820190508181036000830152615614816155d8565b9050919050565b60006040820190506156306000830185614487565b61563d60208301846142d5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506156b181614227565b92915050565b6000602082840312156156cd576156cc6141f0565b5b60006156db848285016156a2565b91505092915050565b6000819050919050565b60006157096157046156ff846156e4565b61432c565b614253565b9050919050565b615719816156ee565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61575481614215565b82525050565b6000615766838361574b565b60208301905092915050565b6000602082019050919050565b600061578a8261571f565b615794818561572a565b935061579f8361573b565b8060005b838110156157d05781516157b7888261575a565b97506157c283615772565b9250506001810190506157a3565b5085935050505092915050565b600060a0820190506157f260008301886143a6565b6157ff6020830187615710565b8181036040830152615811818661577f565b90506158206060830185614487565b61582d60808301846143a6565b9695505050505050565b600060c08201905061584c6000830189614487565b61585960208301886143a6565b6158666040830187615710565b6158736060830186615710565b6158806080830185614487565b61588d60a08301846143a6565b979650505050505050565b6000806000606084860312156158b1576158b06141f0565b5b60006158bf86828701614b6e565b93505060206158d086828701614b6e565b92505060406158e186828701614b6e565b915050925092509256fea2646970667358221220b696ecc57603eef440bdc2c2311264d04e6ea87e3848c16667ee42406e133fe764736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638906758d116101ab578063c17b5b8c116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610c0d578063f54afa7814610c36578063f5648a4f14610c61578063f637434214610c7857610340565b8063e2f4560514610b8c578063ee40166e14610bb7578063f11a24d314610be257610340565b8063cc2ffe7c116100d1578063cc2ffe7c14610ad0578063d85ba06314610afb578063dc3f0d0f14610b26578063dd62ed3e14610b4f57610340565b8063c17b5b8c14610a55578063c18bc19514610a7e578063cc274b2914610aa757610340565b8063a9059cbb11610164578063bb8d51311161013e578063bb8d5131146109ab578063bbc0c742146109d6578063c024666814610a01578063c054f2f414610a2a57610340565b8063a9059cbb14610906578063aa4bde2814610943578063b62496f51461096e57610340565b80638906758d1461080a5780638a8c523c146108335780638da5cb5b1461084a57806395d89b41146108755780639a7a23d6146108a0578063a457c2d7146108c957610340565b80635c068a8c11610285578063715018a61161022357806377a3b609116101fd57806377a3b6091461074e5780638095d564146107795780638366e79a146107a257806388e765ff146107df57610340565b8063715018a6146106f7578063751039fc1461070e5780637571336a1461072557610340565b80636a486a8e1161025f5780636a486a8e146106395780636b2fb124146106645780636ddd17131461068f57806370a08231146106ba57610340565b80635c068a8c146105ba5780636605bfda146105e557806366d602ae1461060e57610340565b806323b872dd116102f257806339509351116102cc57806339509351146104fc57806349bd5a5e146105395780634a62bb65146105645780635b5c251f1461058f57610340565b806323b872dd1461046b5780632be32b61146104a8578063313ce567146104d157610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631a8145bb1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ca3565b60405161036791906141ce565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614289565b610d35565b6040516103a491906142e4565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906142ff565b610d53565b6040516103e191906142e4565b60405180910390f35b3480156103f657600080fd5b506103ff610d73565b60405161040c919061438b565b60405180910390f35b34801561042157600080fd5b5061042a610d97565b60405161043791906143b5565b60405180910390f35b34801561044c57600080fd5b50610455610da1565b60405161046291906143b5565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d91906143d0565b610da7565b60405161049f91906142e4565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190614423565b610e9f565b005b3480156104dd57600080fd5b506104e6611002565b6040516104f3919061446c565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e9190614289565b61100b565b60405161053091906142e4565b60405180910390f35b34801561054557600080fd5b5061054e6110b7565b60405161055b9190614496565b60405180910390f35b34801561057057600080fd5b506105796110db565b60405161058691906142e4565b60405180910390f35b34801561059b57600080fd5b506105a46110ee565b6040516105b19190614496565b60405180910390f35b3480156105c657600080fd5b506105cf611114565b6040516105dc91906143b5565b60405180910390f35b3480156105f157600080fd5b5061060c600480360381019061060791906142ff565b61111a565b005b34801561061a57600080fd5b506106236112a8565b60405161063091906143b5565b60405180910390f35b34801561064557600080fd5b5061064e6112ae565b60405161065b91906143b5565b60405180910390f35b34801561067057600080fd5b506106796112b4565b60405161068691906143b5565b60405180910390f35b34801561069b57600080fd5b506106a46112ba565b6040516106b191906142e4565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc91906142ff565b6112cd565b6040516106ee91906143b5565b60405180910390f35b34801561070357600080fd5b5061070c611315565b005b34801561071a57600080fd5b5061072361146d565b005b34801561073157600080fd5b5061074c600480360381019061074791906144dd565b61154d565b005b34801561075a57600080fd5b506107636116d4565b60405161077091906143b5565b60405180910390f35b34801561078557600080fd5b506107a0600480360381019061079b919061451d565b6116da565b005b3480156107ae57600080fd5b506107c960048036038101906107c49190614570565b6117f4565b6040516107d691906142e4565b60405180910390f35b3480156107eb57600080fd5b506107f4611a33565b60405161080191906143b5565b60405180910390f35b34801561081657600080fd5b50610831600480360381019061082c91906142ff565b611a39565b005b34801561083f57600080fd5b50610848611bc7565b005b34801561085657600080fd5b5061085f611d57565b60405161086c9190614496565b60405180910390f35b34801561088157600080fd5b5061088a611d81565b60405161089791906141ce565b60405180910390f35b3480156108ac57600080fd5b506108c760048036038101906108c291906144dd565b611e13565b005b3480156108d557600080fd5b506108f060048036038101906108eb9190614289565b611f47565b6040516108fd91906142e4565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190614289565b612032565b60405161093a91906142e4565b60405180910390f35b34801561094f57600080fd5b50610958612050565b60405161096591906143b5565b60405180910390f35b34801561097a57600080fd5b50610995600480360381019061099091906142ff565b612056565b6040516109a291906142e4565b60405180910390f35b3480156109b757600080fd5b506109c0612076565b6040516109cd91906143b5565b60405180910390f35b3480156109e257600080fd5b506109eb61207c565b6040516109f891906142e4565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a2391906144dd565b61208f565b005b348015610a3657600080fd5b50610a3f6121cf565b604051610a4c9190614496565b60405180910390f35b348015610a6157600080fd5b50610a7c6004803603810190610a77919061451d565b6121f5565b005b348015610a8a57600080fd5b50610aa56004803603810190610aa09190614423565b61230f565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190614423565b612472565b005b348015610adc57600080fd5b50610ae561251f565b604051610af291906143b5565b60405180910390f35b348015610b0757600080fd5b50610b10612525565b604051610b1d91906143b5565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b489190614423565b61252b565b005b348015610b5b57600080fd5b50610b766004803603810190610b719190614570565b61268e565b604051610b8391906143b5565b60405180910390f35b348015610b9857600080fd5b50610ba1612715565b604051610bae91906143b5565b60405180910390f35b348015610bc357600080fd5b50610bcc61271b565b604051610bd991906143b5565b60405180910390f35b348015610bee57600080fd5b50610bf7612721565b604051610c0491906143b5565b60405180910390f35b348015610c1957600080fd5b50610c346004803603810190610c2f91906142ff565b612727565b005b348015610c4257600080fd5b50610c4b6128ee565b604051610c5891906143b5565b60405180910390f35b348015610c6d57600080fd5b50610c766128f4565b005b348015610c8457600080fd5b50610c8d6129f5565b604051610c9a91906143b5565b60405180910390f35b606060038054610cb2906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde906145df565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b6000610d49610d426129fb565b8484612a03565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60185481565b6000610db4848484612bce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dff6129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7690614683565b60405180910390fd5b610e9385610e8b6129fb565b858403612a03565b60019150509392505050565b610ea76129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d906146ef565b60405180910390fd5b670de0b6b3a76400006103e86001610f4c610d97565b610f56919061473e565b610f6091906147c7565b610f6a91906147c7565b811015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061486a565b60405180910390fd5b670de0b6b3a764000081610fc0919061473e565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ff791906143b5565b60405180910390a150565b60006012905090565b60006110ad6110186129fb565b8484600160006110266129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110a8919061488a565b612a03565b6001905092915050565b7f000000000000000000000000ba9d017919b477a5a6fc6385d16d91f43451554381565b600e60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6111226129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614952565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60135481565b60145481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61131d6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a3906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114756129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb906146ef565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115556129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db906146ef565b60405180910390fd5b80611679577f000000000000000000000000ba9d017919b477a5a6fc6385d16d91f43451554373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f906149e4565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6116e26129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611768906146ef565b60405180910390fd5b826010819055508160118190555080601281905550601254601154601054611799919061488a565b6117a3919061488a565b600f81905550601e600f5411156117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e690614a50565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90614abc565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90614b4e565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119309190614496565b602060405180830381865afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190614b83565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016119ae929190614bb0565b6020604051808303816000875af11580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190614bee565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611a24929190614bb0565b60405180910390a15092915050565b60065481565b611a416129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac7906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3790614c8d565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b611bcf6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c55906146ef565b60405180910390fd5b600e60019054906101000a900460ff1615611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca590614cf9565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600e60019054906101000a900460ff16604051611d2291906142e4565b60405180910390a1600e60019054906101000a900460ff168015611d4857506000600d54145b15611d555743600d819055505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611d90906145df565b80601f0160208091040260200160405190810160405280929190818152602001828054611dbc906145df565b8015611e095780601f10611dde57610100808354040283529160200191611e09565b820191906000526020600020905b815481529060010190602001808311611dec57829003601f168201915b5050505050905090565b611e1b6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea1906146ef565b60405180910390fd5b7f000000000000000000000000ba9d017919b477a5a6fc6385d16d91f43451554373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3090614d8b565b60405180910390fd5b611f4382826137d0565b5050565b60008060016000611f566129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a90614e1d565b60405180910390fd5b61202761201e6129fb565b85858403612a03565b600191505092915050565b600061204661203f6129fb565b8484612bce565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600e60019054906101000a900460ff1681565b6120976129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211d906146ef565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121c391906142e4565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121fd6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906146ef565b60405180910390fd5b8260148190555081601581905550806016819055506016546015546014546122b4919061488a565b6122be919061488a565b601381905550601e601354111561230a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230190614a50565b60405180910390fd5b505050565b6123176129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239d906146ef565b60405180910390fd5b670de0b6b3a76400006103e860036123bc610d97565b6123c6919061473e565b6123d091906147c7565b6123da91906147c7565b81101561241c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241390614eaf565b60405180910390fd5b670de0b6b3a764000081612430919061473e565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161246791906143b5565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f990614b4e565b60405180910390fd5b670de0b6b3a764000081612516919061473e565b600a8190555050565b60175481565b600f5481565b6125336129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b9906146ef565b60405180910390fd5b670de0b6b3a76400006103e860016125d8610d97565b6125e2919061473e565b6125ec91906147c7565b6125f691906147c7565b811015612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f90614f41565b60405180910390fd5b670de0b6b3a76400008161264c919061473e565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161268391906143b5565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60115481565b61272f6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b5906146ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561282e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282590614fd3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90614b4e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16476040516129aa90615024565b60006040518083038185875af1925050503d80600081146129e7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ec565b606091505b50508091505050565b60155481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a906150ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada9061513d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc191906143b5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c35906151cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca590615261565b60405180910390fd5b60008111612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce8906152cd565b60405180910390fd5b600e60009054906101000a900460ff16156132a057612d0e611d57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d7c5750612d4c611d57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612db55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612def575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561329f57600e60019054906101000a900460ff16612f5e57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea95750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf90615339565b60405180910390fd5b612ef0611d57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f54906153a5565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130015750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130a85760065481111561304b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304290615437565b60405180910390fd5b600854613057836112cd565b82613062919061488a565b11156130a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309a906154a3565b60405180910390fd5b61329e565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561314b5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561319a57600754811115613195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318c90615535565b60405180910390fd5b61329d565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561323e5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561329c5760085461324f836112cd565b8261325a919061488a565b111561329b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613292906154a3565b60405180910390fd5b5b5b5b5b5b60006132ab306112cd565b90506000600a5482101590508080156132d05750600e60029054906101000a900460ff165b80156132e95750600960009054906101000a900460ff16155b801561333f5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133955750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133eb5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342f576001600960006101000a81548160ff02191690831515021790555061341361387b565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134d65750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134e057600090505b60008082156137bb576000600d541180156135085750436001600d54613506919061488a565b115b1561355a576064600a8761351c919061473e565b61352691906147c7565b905061355588600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b18565b61378c565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135b557506000601354115b15613674576064601354876135ca919061473e565b6135d491906147c7565b9150601354601554836135e7919061473e565b6135f191906147c7565b60186000828254613602919061488a565b925050819055506013546014548361361a919061473e565b61362491906147c7565b60176000828254613635919061488a565b925050819055506013546016548361364d919061473e565b61365791906147c7565b60196000828254613668919061488a565b9250508190555061378b565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136cf57506000600f54115b1561378a576064600f54876136e4919061473e565b6136ee91906147c7565b9150600f5460115483613701919061473e565b61370b91906147c7565b6018600082825461371c919061488a565b92505081905550600f5460105483613734919061473e565b61373e91906147c7565b6017600082825461374f919061488a565b92505081905550600f5460125483613767919061473e565b61377191906147c7565b60196000828254613782919061488a565b925050819055505b5b5b60008211156137a1576137a0883084613b18565b5b80826137ad919061488a565b866137b89190615555565b95505b6137c6888888613b18565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138318282613d83565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613886306112cd565b9050600060195460175460185461389d919061488a565b6138a7919061488a565b905060008214806138b85750600081145b156138c4575050613b16565b6005600a546138d3919061473e565b8211156138ec576005600a546138e9919061473e565b91505b60008060028360185486613900919061473e565b61390a91906147c7565b61391491906147c7565b905061392a81856139259190615555565b613e17565b600047905060008190506000600260185461394591906147c7565b866139509190615555565b6017548461395e919061473e565b61396891906147c7565b90506000600260185461397b91906147c7565b876139869190615555565b60195485613994919061473e565b61399e91906147c7565b905080826139ac919061488a565b836139b79190615555565b92506000601881905550600060178190555060006019819055506000851180156139e15750600083115b156139f1576139f08584614054565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a3790615024565b60006040518083038185875af1925050503d8060008114613a74576040519150601f19603f3d011682016040523d82523d6000602084013e613a79565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ac590615024565b60006040518083038185875af1925050503d8060008114613b02576040519150601f19603f3d011682016040523d82523d6000602084013e613b07565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f906151cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef90615261565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c75906155fb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d11919061488a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d7591906143b5565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613e0b92919061561b565b60405180910390a15050565b6000600267ffffffffffffffff811115613e3457613e33615644565b5b604051908082528060200260200182016040528015613e625781602001602082028036833780820191505090505b5090503081600081518110613e7a57613e79615673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4391906156b7565b81600181518110613f5757613f56615673565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fbc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a03565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161401e9594939291906157dd565b600060405180830381600087803b15801561403857600080fd5b505af115801561404c573d6000803e3d6000fd5b505050505050565b61407f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a03565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806140c9611d57565b426040518863ffffffff1660e01b81526004016140eb96959493929190615837565b60606040518083038185885af1158015614109573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061412e9190615898565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561416f578082015181840152602081019050614154565b8381111561417e576000848401525b50505050565b6000601f19601f8301169050919050565b60006141a082614135565b6141aa8185614140565b93506141ba818560208601614151565b6141c381614184565b840191505092915050565b600060208201905081810360008301526141e88184614195565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614220826141f5565b9050919050565b61423081614215565b811461423b57600080fd5b50565b60008135905061424d81614227565b92915050565b6000819050919050565b61426681614253565b811461427157600080fd5b50565b6000813590506142838161425d565b92915050565b600080604083850312156142a05761429f6141f0565b5b60006142ae8582860161423e565b92505060206142bf85828601614274565b9150509250929050565b60008115159050919050565b6142de816142c9565b82525050565b60006020820190506142f960008301846142d5565b92915050565b600060208284031215614315576143146141f0565b5b60006143238482850161423e565b91505092915050565b6000819050919050565b600061435161434c614347846141f5565b61432c565b6141f5565b9050919050565b600061436382614336565b9050919050565b600061437582614358565b9050919050565b6143858161436a565b82525050565b60006020820190506143a0600083018461437c565b92915050565b6143af81614253565b82525050565b60006020820190506143ca60008301846143a6565b92915050565b6000806000606084860312156143e9576143e86141f0565b5b60006143f78682870161423e565b93505060206144088682870161423e565b925050604061441986828701614274565b9150509250925092565b600060208284031215614439576144386141f0565b5b600061444784828501614274565b91505092915050565b600060ff82169050919050565b61446681614450565b82525050565b6000602082019050614481600083018461445d565b92915050565b61449081614215565b82525050565b60006020820190506144ab6000830184614487565b92915050565b6144ba816142c9565b81146144c557600080fd5b50565b6000813590506144d7816144b1565b92915050565b600080604083850312156144f4576144f36141f0565b5b60006145028582860161423e565b9250506020614513858286016144c8565b9150509250929050565b600080600060608486031215614536576145356141f0565b5b600061454486828701614274565b935050602061455586828701614274565b925050604061456686828701614274565b9150509250925092565b60008060408385031215614587576145866141f0565b5b60006145958582860161423e565b92505060206145a68582860161423e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145f757607f821691505b6020821081141561460b5761460a6145b0565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061466d602883614140565b915061467882614611565b604082019050919050565b6000602082019050818103600083015261469c81614660565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146d9602083614140565b91506146e4826146a3565b602082019050919050565b60006020820190508181036000830152614708816146cc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061474982614253565b915061475483614253565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561478d5761478c61470f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147d282614253565b91506147dd83614253565b9250826147ed576147ec614798565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614854602983614140565b915061485f826147f8565b604082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b600061489582614253565b91506148a083614253565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156148d5576148d461470f565b5b828201905092915050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b600061493c602483614140565b9150614947826148e0565b604082019050919050565b6000602082019050818103600083015261496b8161492f565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b60006149ce602783614140565b91506149d982614972565b604082019050919050565b600060208201905081810360008301526149fd816149c1565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b6000614a3a601983614140565b9150614a4582614a04565b602082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614aa6601a83614140565b9150614ab182614a70565b602082019050919050565b60006020820190508181036000830152614ad581614a99565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b38602183614140565b9150614b4382614adc565b604082019050919050565b60006020820190508181036000830152614b6781614b2b565b9050919050565b600081519050614b7d8161425d565b92915050565b600060208284031215614b9957614b986141f0565b5b6000614ba784828501614b6e565b91505092915050565b6000604082019050614bc56000830185614487565b614bd260208301846143a6565b9392505050565b600081519050614be8816144b1565b92915050565b600060208284031215614c0457614c036141f0565b5b6000614c1284828501614bd9565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614c77602383614140565b9150614c8282614c1b565b604082019050919050565b60006020820190508181036000830152614ca681614c6a565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614ce3601883614140565b9150614cee82614cad565b602082019050919050565b60006020820190508181036000830152614d1281614cd6565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d75603983614140565b9150614d8082614d19565b604082019050919050565b60006020820190508181036000830152614da481614d68565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e07602583614140565b9150614e1282614dab565b604082019050919050565b60006020820190508181036000830152614e3681614dfa565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614e99602c83614140565b9150614ea482614e3d565b604082019050919050565b60006020820190508181036000830152614ec881614e8c565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f2b602a83614140565b9150614f3682614ecf565b604082019050919050565b60006020820190508181036000830152614f5a81614f1e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fbd602683614140565b9150614fc882614f61565b604082019050919050565b60006020820190508181036000830152614fec81614fb0565b9050919050565b600081905092915050565b50565b600061500e600083614ff3565b915061501982614ffe565b600082019050919050565b600061502f82615001565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615095602483614140565b91506150a082615039565b604082019050919050565b600060208201905081810360008301526150c481615088565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615127602283614140565b9150615132826150cb565b604082019050919050565b600060208201905081810360008301526151568161511a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151b9602583614140565b91506151c48261515d565b604082019050919050565b600060208201905081810360008301526151e8816151ac565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061524b602383614140565b9150615256826151ef565b604082019050919050565b6000602082019050818103600083015261527a8161523e565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006152b7601d83614140565b91506152c282615281565b602082019050919050565b600060208201905081810360008301526152e6816152aa565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615323601683614140565b915061532e826152ed565b602082019050919050565b6000602082019050818103600083015261535281615316565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061538f601683614140565b915061539a82615359565b602082019050919050565b600060208201905081810360008301526153be81615382565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615421602883614140565b915061542c826153c5565b604082019050919050565b6000602082019050818103600083015261545081615414565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061548d601883614140565b915061549882615457565b602082019050919050565b600060208201905081810360008301526154bc81615480565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b600061551f602a83614140565b915061552a826154c3565b604082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b600061556082614253565b915061556b83614253565b92508282101561557e5761557d61470f565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006155e5602683614140565b91506155f082615589565b604082019050919050565b60006020820190508181036000830152615614816155d8565b9050919050565b60006040820190506156306000830185614487565b61563d60208301846142d5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506156b181614227565b92915050565b6000602082840312156156cd576156cc6141f0565b5b60006156db848285016156a2565b91505092915050565b6000819050919050565b60006157096157046156ff846156e4565b61432c565b614253565b9050919050565b615719816156ee565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61575481614215565b82525050565b6000615766838361574b565b60208301905092915050565b6000602082019050919050565b600061578a8261571f565b615794818561572a565b935061579f8361573b565b8060005b838110156157d05781516157b7888261575a565b97506157c283615772565b9250506001810190506157a3565b5085935050505092915050565b600060a0820190506157f260008301886143a6565b6157ff6020830187615710565b8181036040830152615811818661577f565b90506158206060830185614487565b61582d60808301846143a6565b9695505050505050565b600060c08201905061584c6000830189614487565b61585960208301886143a6565b6158666040830187615710565b6158736060830186615710565b6158806080830185614487565b61588d60a08301846143a6565b979650505050505050565b6000806000606084860312156158b1576158b06141f0565b5b60006158bf86828701614b6e565b93505060206158d086828701614b6e565b92505060406158e186828701614b6e565b915050925092509256fea2646970667358221220b696ecc57603eef440bdc2c2311264d04e6ea87e3848c16667ee42406e133fe764736f6c634300080c0033

Deployed Bytecode Sourcemap

7330:14977:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2048:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2962:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8448:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7481:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2369:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8253:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3139:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11291:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2268:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3627:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7531:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7802:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7648:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7956:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19921:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7407:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8066;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8101:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7882:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2485:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6089:150;;;;;;;;;;;;;:::i;:::-;;11898:115;;;;;;;;;;;;;:::i;:::-;;12238:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8029:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13774:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13013:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7373:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20210:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21963:337;;;;;;;;;;;;;:::i;:::-;;5875:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2156:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18889:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3850:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2620:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7442:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8670:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8176:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7842:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14553:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7685:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14159:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12513:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12805:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8214:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7922:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11568:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2803:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7606:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7723:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7992:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6247:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8293:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13535:231;;;;;;;;;;;;;:::i;:::-;;8138:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2048:100;2102:13;2135:5;2128:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2048:100;:::o;2962:169::-;3045:4;3062:39;3071:12;:10;:12::i;:::-;3085:7;3094:6;3062:8;:39::i;:::-;3119:4;3112:11;;2962:169;;;;:::o;8448:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7481:43::-;;;:::o;2369:108::-;2430:7;2457:12;;2450:19;;2369:108;:::o;8253:33::-;;;;:::o;3139:480::-;3279:4;3296:36;3306:6;3314:9;3325:6;3296:9;:36::i;:::-;3345:24;3372:11;:19;3384:6;3372:19;;;;;;;;;;;;;;;:33;3392:12;:10;:12::i;:::-;3372:33;;;;;;;;;;;;;;;;3345:60;;3444:6;3424:16;:26;;3416:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3523:57;3532:6;3540:12;:10;:12::i;:::-;3573:6;3554:16;:25;3523:8;:57::i;:::-;3607:4;3600:11;;;3139:480;;;;;:::o;11291:269::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11410:4:::1;11404;11400:1;11384:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11383:31;;;;:::i;:::-;11373:6;:41;;11365:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;11496:6;11486;:17;;;;:::i;:::-;11471:12;:32;;;;11519:33;11539:12;;11519:33;;;;;;:::i;:::-;;;;;;;;11291:269:::0;:::o;2268:93::-;2326:5;2351:2;2344:9;;2268:93;:::o;3627:215::-;3715:4;3732:80;3741:12;:10;:12::i;:::-;3755:7;3801:10;3764:11;:25;3776:12;:10;:12::i;:::-;3764:25;;;;;;;;;;;;;;;:34;3790:7;3764:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3732:8;:80::i;:::-;3830:4;3823:11;;3627:215;;;;:::o;7531:38::-;;;:::o;7802:33::-;;;;;;;;;;;;;:::o;7648:30::-;;;;;;;;;;;;;:::o;7956:29::-;;;;:::o;19921:281::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20041:1:::1;20013:30;;:16;:30;;;;20005:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20121:16;20095:15;;:43;;;;;;;;;;;;;;;;;;20177:16;20154:40;;;;;;;;;;;;19921:281:::0;:::o;7407:28::-;;;;:::o;8066:::-;;;;:::o;8101:30::-;;;;:::o;7882:31::-;;;;;;;;;;;;;:::o;2485:127::-;2559:7;2586:9;:18;2596:7;2586:18;;;;;;;;;;;;;;;;2579:25;;2485:127;;;:::o;6089:150::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6198:1:::1;6161:40;;6182:6;;;;;;;;;;;6161:40;;;;;;;;;;;;6229:1;6212:6;;:19;;;;;;;;;;;;;;;;;;6089:150::o:0;11898:115::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11969:5:::1;11952:14;;:22;;;;;;;;;;;;;;;;;;11990:15;;;;;;;;;;11898:115::o:0;12238:267::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12334:4:::1;12330:111;;12372:13;12362:23;;:6;:23;;;;12354:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12330:111;12493:4;12451:31;:39;12483:6;12451:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12238:267:::0;;:::o;8029:28::-;;;;:::o;13774:377::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13910:12:::1;13893:14;:29;;;;13951:13;13933:15;:31;;;;13991:11;13975:13;:27;;;;14063:13;;14045:15;;14028:14;;:32;;;;:::i;:::-;:48;;;;:::i;:::-;14013:12;:63;;;;14111:2;14095:12;;:18;;14087:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13774:377:::0;;;:::o;13013:452::-;13088:10;13137:1;13119:20;;:6;:20;;;;13111:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13201:15;;;;;;;;;;;13189:27;;:10;:27;;;13181:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13264:24;13298:6;13291:24;;;13324:4;13291:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13264:66;;13356:6;13349:23;;;13373:3;13378:16;13349:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13341:54;;13411:46;13432:6;13440:16;13411:46;;;;;;;:::i;:::-;;;;;;;;13100:365;13013:452;;;;:::o;7373:27::-;;;;:::o;20210:273::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20327:1:::1;20300:29;;:15;:29;;;;20292:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;20405:15;20380:14;;:41;;;;;;;;;;;;;;;;;;20459:15;20437:38;;;;;;;;;;;;20210:273:::0;:::o;21963:337::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22027:13:::1;;;;;;;;;;;22026:14;22018:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;22096:4;22080:13;;:20;;;;;;;;;;;;;;;;;;22125:4;22111:11;;:18;;;;;;;;;;;;;;;;;;22145:29;22160:13;;;;;;;;;;;22145:29;;;;;;:::i;:::-;;;;;;;;22191:13;;;;;;;;;;;:40;;;;;22230:1;22208:18;;:23;22191:40;22187:106;;;22269:12;22248:18;:33;;;;22187:106;21963:337::o:0;5875:79::-;5913:7;5940:6;;;;;;;;;;;5933:13;;5875:79;:::o;2156:104::-;2212:13;2245:7;2238:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:104;:::o;18889:246::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18998:13:::1;18990:21;;:4;:21;;;;18982:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;19086:41;19115:4;19121:5;19086:28;:41::i;:::-;18889:246:::0;;:::o;3850:401::-;3943:4;3960:24;3987:11;:25;3999:12;:10;:12::i;:::-;3987:25;;;;;;;;;;;;;;;:34;4013:7;3987:34;;;;;;;;;;;;;;;;3960:61;;4060:15;4040:16;:35;;4032:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4145:67;4154:12;:10;:12::i;:::-;4168:7;4196:15;4177:16;:34;4145:8;:67::i;:::-;4239:4;4232:11;;;3850:401;;;;:::o;2620:175::-;2706:4;2723:42;2733:12;:10;:12::i;:::-;2747:9;2758:6;2723:9;:42::i;:::-;2783:4;2776:11;;2620:175;;;;:::o;7442:30::-;;;;:::o;8670:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;8176:29::-;;;;:::o;7842:33::-;;;;;;;;;;;;;:::o;14553:182::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14669:8:::1;14638:19;:28;14658:7;14638:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14709:7;14693:34;;;14718:8;14693:34;;;;;;:::i;:::-;;;;;;;;14553:182:::0;;:::o;7685:29::-;;;;;;;;;;;;;:::o;14159:386::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14297:12:::1;14279:15;:30;;;;14339:13;14320:16;:32;;;;14380:11;14363:14;:28;;;;14455:14;;14436:16;;14418:15;;:34;;;;:::i;:::-;:51;;;;:::i;:::-;14402:13;:67;;;;14505:2;14488:13;;:19;;14480:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14159:386:::0;;;:::o;12513:284::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12635:4:::1;12629;12625:1;12609:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12608:31;;;;:::i;:::-;12598:6;:41;;12590:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12727:6;12717;:17;;;;:::i;:::-;12699:15;:35;;;;12750:39;12773:15;;12750:39;;;;;;:::i;:::-;;;;;;;;12513:284:::0;:::o;12805:198::-;12892:15;;;;;;;;;;;12880:27;;:10;:27;;;12872:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12988:6;12976:9;:19;;;;:::i;:::-;12955:18;:40;;;;12805:198;:::o;8214:32::-;;;;:::o;7922:27::-;;;;:::o;11568:274::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11688:4:::1;11682;11678:1;11662:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11661:31;;;;:::i;:::-;11651:6;:41;;11643:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11776:6;11766;:17;;;;:::i;:::-;11750:13;:33;;;;11799:35;11820:13;;11799:35;;;;;;:::i;:::-;;;;;;;;11568:274:::0;:::o;2803:151::-;2892:7;2919:11;:18;2931:5;2919:18;;;;;;;;;;;;;;;:27;2938:7;2919:27;;;;;;;;;;;;;;;;2912:34;;2803:151;;;;:::o;7606:33::-;;;;:::o;7723:37::-;;;;:::o;7992:30::-;;;;:::o;6247:244::-;6012:12;:10;:12::i;:::-;6002:22;;:6;;;;;;;;;;;:22;;;5994:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6356:1:::1;6336:22;;:8;:22;;;;6328:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6446:8;6417:38;;6438:6;;;;;;;;;;;6417:38;;;;;;;;;;;;6475:8;6466:6;;:17;;;;;;;;;;;;;;;;;;6247:244:::0;:::o;8293:31::-;;;;:::o;13535:231::-;13581:12;13624:15;;;;;;;;;;;13612:27;;:10;:27;;;13604:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13708:10;13700:24;;13732:21;13700:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13687:71;;;;;13570:196;13535:231::o;8138:31::-;;;;:::o;487:98::-;540:7;567:10;560:17;;487:98;:::o;5168:380::-;5321:1;5304:19;;:5;:19;;;;5296:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5402:1;5383:21;;:7;:21;;;;5375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5486:6;5456:11;:18;5468:5;5456:18;;;;;;;;;;;;;;;:27;5475:7;5456:27;;;;;;;;;;;;;;;:36;;;;5524:7;5508:32;;5517:5;5508:32;;;5533:6;5508:32;;;;;;:::i;:::-;;;;;;;;5168:380;;;:::o;14745:3537::-;14861:1;14845:18;;:4;:18;;;;14837:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14938:1;14924:16;;:2;:16;;;;14916:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15008:1;14999:6;:10;14991:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15061:14;;;;;;;;;;;15058:1224;;;15103:7;:5;:7::i;:::-;15095:15;;:4;:15;;;;:32;;;;;15120:7;:5;:7::i;:::-;15114:13;;:2;:13;;;;15095:32;:52;;;;;15145:1;15131:16;;:2;:16;;;;15095:52;:77;;;;;15165:6;15151:21;;:2;:21;;;;15095:77;15091:1180;;;15196:13;;;;;;;;;;;15192:245;;15241:31;:37;15273:4;15241:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;15282:31;:35;15314:2;15282:35;;;;;;;;;;;;;;;;;;;;;;;;;15241:76;15233:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15383:7;:5;:7::i;:::-;15375:15;;:4;:15;;;15367:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15192:245;15487:25;:31;15513:4;15487:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15523:31;:35;15555:2;15523:35;;;;;;;;;;;;;;;;;;;;;;;;;15522:36;15487:71;15483:773;;;15601:12;;15591:6;:22;;15583:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15715:15;;15698:13;15708:2;15698:9;:13::i;:::-;15689:6;:22;;;;:::i;:::-;:41;;15681:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15483:773;;;15835:25;:29;15861:2;15835:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15869:31;:37;15901:4;15869:37;;;;;;;;;;;;;;;;;;;;;;;;;15868:38;15835:71;15831:425;;;15949:13;;15939:6;:23;;15931:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15831:425;;;16057:31;:35;16089:2;16057:35;;;;;;;;;;;;;;;;;;;;;;;;;16056:36;:78;;;;;16097:31;:37;16129:4;16097:37;;;;;;;;;;;;;;;;;;;;;;;;;16096:38;16056:78;16052:204;;;16192:15;;16175:13;16185:2;16175:9;:13::i;:::-;16166:6;:22;;;;:::i;:::-;:41;;16158:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16052:204;15831:425;15483:773;15091:1180;15058:1224;16294:28;16325:24;16343:4;16325:9;:24::i;:::-;16294:55;;16362:12;16401:18;;16377:20;:42;;16362:57;;16435:7;:22;;;;;16446:11;;;;;;;;;;;16435:22;:35;;;;;16462:8;;;;;;;;;;;16461:9;16435:35;:71;;;;;16475:25;:31;16501:4;16475:31;;;;;;;;;;;;;;;;;;;;;;;;;16474:32;16435:71;:101;;;;;16511:19;:25;16531:4;16511:25;;;;;;;;;;;;;;;;;;;;;;;;;16510:26;16435:101;:129;;;;;16541:19;:23;16561:2;16541:23;;;;;;;;;;;;;;;;;;;;;;;;;16540:24;16435:129;16432:236;;;16592:4;16581:8;;:15;;;;;;;;;;;;;;;;;;16613:10;:8;:10::i;:::-;16651:5;16640:8;;:16;;;;;;;;;;;;;;;;;;16432:236;16680:12;16695:4;16680:19;;16798;:25;16818:4;16798:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16827:19;:23;16847:2;16827:23;;;;;;;;;;;;;;;;;;;;;;;;;16798:52;16795:99;;;16877:5;16867:15;;16795:99;16906:12;16933:21;17036:7;17033:1196;;;17088:1;17069:18;;:20;:63;;;;;17120:12;17115:1;17094:18;;:22;;;;:::i;:::-;17093:39;17069:63;17066:1002;;;17182:3;17177:2;17168:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;17152:33;;17204:52;17220:4;17226:14;;;;;;;;;;;17242:13;17204:15;:52::i;:::-;17066:1002;;;17319:25;:29;17345:2;17319:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;17368:1;17352:13;;:17;17319:50;17315:753;;;17420:3;17405:13;;17396:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;17389:34;;17490:13;;17471:16;;17464:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17442:18;;:61;;;;;;;:::i;:::-;;;;;;;;17568:13;;17550:15;;17543:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;17522:17;;:59;;;;;;;:::i;:::-;;;;;;;;17644:13;;17627:14;;17620:4;:21;;;;:::i;:::-;:37;;;;:::i;:::-;17600:16;;:57;;;;;;;:::i;:::-;;;;;;;;17315:753;;;17718:25;:31;17744:4;17718:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17768:1;17753:12;;:16;17718:51;17715:353;;;17821:3;17806:12;;17797:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17790:34;;17890:12;;17872:15;;17865:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17843:18;;:59;;;;;;;:::i;:::-;;;;;;;;17966:12;;17949:14;;17942:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;17921:17;;:57;;;;;;;:::i;:::-;;;;;;;;18040:12;;18024:13;;18017:4;:20;;;;:::i;:::-;:35;;;;:::i;:::-;17997:16;;:55;;;;;;;:::i;:::-;;;;;;;;17715:353;17315:753;17066:1002;18094:1;18087:4;:8;18084:89;;;18115:42;18131:4;18145;18152;18115:15;:42::i;:::-;18084:89;18204:13;18197:4;:20;;;;:::i;:::-;18187:30;;;;;:::i;:::-;;;17033:1196;18241:33;18257:4;18263:2;18267:6;18241:15;:33::i;:::-;14824:3458;;;;;14745:3537;;;:::o;19143:240::-;19260:5;19226:25;:31;19252:4;19226:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19278;19305:4;19311:5;19278:26;:39::i;:::-;19369:5;19335:40;;19363:4;19335:40;;;;;;;;;;;;19143:240;;:::o;20494:1413::-;20533:23;20559:24;20577:4;20559:9;:24::i;:::-;20533:50;;20594:25;20663:16;;20643:17;;20622:18;;:38;;;;:::i;:::-;:57;;;;:::i;:::-;20594:85;;20714:1;20695:15;:20;:46;;;;20740:1;20719:17;:22;20695:46;20692:60;;;20744:7;;;;20692:60;20806:1;20785:18;;:22;;;;:::i;:::-;20767:15;:40;20764:111;;;20862:1;20841:18;;:22;;;;:::i;:::-;20823:40;;20764:111;20887:12;20961:23;21046:1;21026:17;21005:18;;20987:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;20961:86;;21060:51;21095:15;21077;:33;;;;:::i;:::-;21060:16;:51::i;:::-;21124:18;21145:21;21124:42;;21177:23;21203:10;21177:36;;21226:22;21325:1;21306:18;;:20;;;;:::i;:::-;21285:17;:42;;;;:::i;:::-;21264:17;;21251:10;:30;;;;:::i;:::-;:77;;;;:::i;:::-;21226:102;;21339:21;21436:1;21417:18;;:20;;;;:::i;:::-;21396:17;:42;;;;:::i;:::-;21376:16;;21363:10;:29;;;;:::i;:::-;:76;;;;:::i;:::-;21339:100;;21488:13;21471:14;:30;;;;:::i;:::-;21452:49;;;;;:::i;:::-;;;21535:1;21514:18;:22;;;;21567:1;21547:17;:21;;;;21598:1;21579:16;:20;;;;21633:1;21615:15;:19;:42;;;;;21656:1;21638:15;:19;21615:42;21612:119;;;21673:46;21686:15;21703;21673:12;:46::i;:::-;21612:119;21764:14;;;;;;;;;;;21756:28;;21792:13;21756:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21743:67;;;;;21844:15;;;;;;;;;;;21836:29;;21873:21;21836:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21823:76;;;;;20522:1385;;;;;;;;20494:1413;:::o;4259:602::-;4417:1;4399:20;;:6;:20;;;;4391:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4501:1;4480:23;;:9;:23;;;;4472:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4556:21;4580:9;:17;4590:6;4580:17;;;;;;;;;;;;;;;;4556:41;;4633:6;4616:13;:23;;4608:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4746:6;4730:13;:22;4710:9;:17;4720:6;4710:17;;;;;;;;;;;;;;;:42;;;;4794:6;4770:9;:20;4780:9;4770:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4835:9;4818:35;;4827:6;4818:35;;;4846:6;4818:35;;;;;;:::i;:::-;;;;;;;;4380:481;4259:602;;;:::o;12023:207::-;12153:10;12111:31;:39;12143:6;12111:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12179:43;12203:6;12211:10;12179:43;;;;;;;:::i;:::-;;;;;;;;12023:207;;:::o;18290:591::-;18418:21;18456:1;18442:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18418:40;;18487:4;18469;18474:1;18469:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18513:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18503:4;18508:1;18503:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18548:62;18565:4;18580:15;18598:11;18548:8;:62::i;:::-;18649:15;:66;;;18730:11;18756:1;18800:4;18827;18847:15;18649:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18345:536;18290:591;:::o;19391:522::-;19539:62;19556:4;19571:15;19589:11;19539:8;:62::i;:::-;19644:15;:31;;;19683:9;19716:4;19736:11;19762:1;19805;19856:7;:5;:7::i;:::-;19879:15;19644:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19391:522;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:144::-;4243:9;4276:37;4307:5;4276:37;:::i;:::-;4263:50;;4175:144;;;:::o;4325:167::-;4430:55;4479:5;4430:55;:::i;:::-;4425:3;4418:68;4325:167;;:::o;4498:258::-;4609:4;4647:2;4636:9;4632:18;4624:26;;4660:89;4746:1;4735:9;4731:17;4722:6;4660:89;:::i;:::-;4498:258;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:619::-;5191:6;5199;5207;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;:::i;:::-;5397:63;;5353:117;5509:2;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5480:118;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5114:619;;;;;:::o;5739:329::-;5798:6;5847:2;5835:9;5826:7;5822:23;5818:32;5815:119;;;5853:79;;:::i;:::-;5815:119;5973:1;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5944:117;5739:329;;;;:::o;6074:86::-;6109:7;6149:4;6142:5;6138:16;6127:27;;6074:86;;;:::o;6166:112::-;6249:22;6265:5;6249:22;:::i;:::-;6244:3;6237:35;6166:112;;:::o;6284:214::-;6373:4;6411:2;6400:9;6396:18;6388:26;;6424:67;6488:1;6477:9;6473:17;6464:6;6424:67;:::i;:::-;6284:214;;;;:::o;6504:118::-;6591:24;6609:5;6591:24;:::i;:::-;6586:3;6579:37;6504:118;;:::o;6628:222::-;6721:4;6759:2;6748:9;6744:18;6736:26;;6772:71;6840:1;6829:9;6825:17;6816:6;6772:71;:::i;:::-;6628:222;;;;:::o;6856:116::-;6926:21;6941:5;6926:21;:::i;:::-;6919:5;6916:32;6906:60;;6962:1;6959;6952:12;6906:60;6856:116;:::o;6978:133::-;7021:5;7059:6;7046:20;7037:29;;7075:30;7099:5;7075:30;:::i;:::-;6978:133;;;;:::o;7117:468::-;7182:6;7190;7239:2;7227:9;7218:7;7214:23;7210:32;7207:119;;;7245:79;;:::i;:::-;7207:119;7365:1;7390:53;7435:7;7426:6;7415:9;7411:22;7390:53;:::i;:::-;7380:63;;7336:117;7492:2;7518:50;7560:7;7551:6;7540:9;7536:22;7518:50;:::i;:::-;7508:60;;7463:115;7117:468;;;;;:::o;7591:619::-;7668:6;7676;7684;7733:2;7721:9;7712:7;7708:23;7704:32;7701:119;;;7739:79;;:::i;:::-;7701:119;7859:1;7884:53;7929:7;7920:6;7909:9;7905:22;7884:53;:::i;:::-;7874:63;;7830:117;7986:2;8012:53;8057:7;8048:6;8037:9;8033:22;8012:53;:::i;:::-;8002:63;;7957:118;8114:2;8140:53;8185:7;8176:6;8165:9;8161:22;8140:53;:::i;:::-;8130:63;;8085:118;7591:619;;;;;:::o;8216:474::-;8284:6;8292;8341:2;8329:9;8320:7;8316:23;8312:32;8309:119;;;8347:79;;:::i;:::-;8309:119;8467:1;8492:53;8537:7;8528:6;8517:9;8513:22;8492:53;:::i;:::-;8482:63;;8438:117;8594:2;8620:53;8665:7;8656:6;8645:9;8641:22;8620:53;:::i;:::-;8610:63;;8565:118;8216:474;;;;;:::o;8696:180::-;8744:77;8741:1;8734:88;8841:4;8838:1;8831:15;8865:4;8862:1;8855:15;8882:320;8926:6;8963:1;8957:4;8953:12;8943:22;;9010:1;9004:4;9000:12;9031:18;9021:81;;9087:4;9079:6;9075:17;9065:27;;9021:81;9149:2;9141:6;9138:14;9118:18;9115:38;9112:84;;;9168:18;;:::i;:::-;9112:84;8933:269;8882:320;;;:::o;9208:227::-;9348:34;9344:1;9336:6;9332:14;9325:58;9417:10;9412:2;9404:6;9400:15;9393:35;9208:227;:::o;9441:366::-;9583:3;9604:67;9668:2;9663:3;9604:67;:::i;:::-;9597:74;;9680:93;9769:3;9680:93;:::i;:::-;9798:2;9793:3;9789:12;9782:19;;9441:366;;;:::o;9813:419::-;9979:4;10017:2;10006:9;10002:18;9994:26;;10066:9;10060:4;10056:20;10052:1;10041:9;10037:17;10030:47;10094:131;10220:4;10094:131;:::i;:::-;10086:139;;9813:419;;;:::o;10238:182::-;10378:34;10374:1;10366:6;10362:14;10355:58;10238:182;:::o;10426:366::-;10568:3;10589:67;10653:2;10648:3;10589:67;:::i;:::-;10582:74;;10665:93;10754:3;10665:93;:::i;:::-;10783:2;10778:3;10774:12;10767:19;;10426:366;;;:::o;10798:419::-;10964:4;11002:2;10991:9;10987:18;10979:26;;11051:9;11045:4;11041:20;11037:1;11026:9;11022:17;11015:47;11079:131;11205:4;11079:131;:::i;:::-;11071:139;;10798:419;;;:::o;11223:180::-;11271:77;11268:1;11261:88;11368:4;11365:1;11358:15;11392:4;11389:1;11382:15;11409:348;11449:7;11472:20;11490:1;11472:20;:::i;:::-;11467:25;;11506:20;11524:1;11506:20;:::i;:::-;11501:25;;11694:1;11626:66;11622:74;11619:1;11616:81;11611:1;11604:9;11597:17;11593:105;11590:131;;;11701:18;;:::i;:::-;11590:131;11749:1;11746;11742:9;11731:20;;11409:348;;;;:::o;11763:180::-;11811:77;11808:1;11801:88;11908:4;11905:1;11898:15;11932:4;11929:1;11922:15;11949:185;11989:1;12006:20;12024:1;12006:20;:::i;:::-;12001:25;;12040:20;12058:1;12040:20;:::i;:::-;12035:25;;12079:1;12069:35;;12084:18;;:::i;:::-;12069:35;12126:1;12123;12119:9;12114:14;;11949:185;;;;:::o;12140:228::-;12280:34;12276:1;12268:6;12264:14;12257:58;12349:11;12344:2;12336:6;12332:15;12325:36;12140:228;:::o;12374:366::-;12516:3;12537:67;12601:2;12596:3;12537:67;:::i;:::-;12530:74;;12613:93;12702:3;12613:93;:::i;:::-;12731:2;12726:3;12722:12;12715:19;;12374:366;;;:::o;12746:419::-;12912:4;12950:2;12939:9;12935:18;12927:26;;12999:9;12993:4;12989:20;12985:1;12974:9;12970:17;12963:47;13027:131;13153:4;13027:131;:::i;:::-;13019:139;;12746:419;;;:::o;13171:305::-;13211:3;13230:20;13248:1;13230:20;:::i;:::-;13225:25;;13264:20;13282:1;13264:20;:::i;:::-;13259:25;;13418:1;13350:66;13346:74;13343:1;13340:81;13337:107;;;13424:18;;:::i;:::-;13337:107;13468:1;13465;13461:9;13454:16;;13171:305;;;;:::o;13482:223::-;13622:34;13618:1;13610:6;13606:14;13599:58;13691:6;13686:2;13678:6;13674:15;13667:31;13482:223;:::o;13711:366::-;13853:3;13874:67;13938:2;13933:3;13874:67;:::i;:::-;13867:74;;13950:93;14039:3;13950:93;:::i;:::-;14068:2;14063:3;14059:12;14052:19;;13711:366;;;:::o;14083:419::-;14249:4;14287:2;14276:9;14272:18;14264:26;;14336:9;14330:4;14326:20;14322:1;14311:9;14307:17;14300:47;14364:131;14490:4;14364:131;:::i;:::-;14356:139;;14083:419;;;:::o;14508:226::-;14648:34;14644:1;14636:6;14632:14;14625:58;14717:9;14712:2;14704:6;14700:15;14693:34;14508:226;:::o;14740:366::-;14882:3;14903:67;14967:2;14962:3;14903:67;:::i;:::-;14896:74;;14979:93;15068:3;14979:93;:::i;:::-;15097:2;15092:3;15088:12;15081:19;;14740:366;;;:::o;15112:419::-;15278:4;15316:2;15305:9;15301:18;15293:26;;15365:9;15359:4;15355:20;15351:1;15340:9;15336:17;15329:47;15393:131;15519:4;15393:131;:::i;:::-;15385:139;;15112:419;;;:::o;15537:175::-;15677:27;15673:1;15665:6;15661:14;15654:51;15537:175;:::o;15718:366::-;15860:3;15881:67;15945:2;15940:3;15881:67;:::i;:::-;15874:74;;15957:93;16046:3;15957:93;:::i;:::-;16075:2;16070:3;16066:12;16059:19;;15718:366;;;:::o;16090:419::-;16256:4;16294:2;16283:9;16279:18;16271:26;;16343:9;16337:4;16333:20;16329:1;16318:9;16314:17;16307:47;16371:131;16497:4;16371:131;:::i;:::-;16363:139;;16090:419;;;:::o;16515:176::-;16655:28;16651:1;16643:6;16639:14;16632:52;16515:176;:::o;16697:366::-;16839:3;16860:67;16924:2;16919:3;16860:67;:::i;:::-;16853:74;;16936:93;17025:3;16936:93;:::i;:::-;17054:2;17049:3;17045:12;17038:19;;16697:366;;;:::o;17069:419::-;17235:4;17273:2;17262:9;17258:18;17250:26;;17322:9;17316:4;17312:20;17308:1;17297:9;17293:17;17286:47;17350:131;17476:4;17350:131;:::i;:::-;17342:139;;17069:419;;;:::o;17494:220::-;17634:34;17630:1;17622:6;17618:14;17611:58;17703:3;17698:2;17690:6;17686:15;17679:28;17494:220;:::o;17720:366::-;17862:3;17883:67;17947:2;17942:3;17883:67;:::i;:::-;17876:74;;17959:93;18048:3;17959:93;:::i;:::-;18077:2;18072:3;18068:12;18061:19;;17720:366;;;:::o;18092:419::-;18258:4;18296:2;18285:9;18281:18;18273:26;;18345:9;18339:4;18335:20;18331:1;18320:9;18316:17;18309:47;18373:131;18499:4;18373:131;:::i;:::-;18365:139;;18092:419;;;:::o;18517:143::-;18574:5;18605:6;18599:13;18590:22;;18621:33;18648:5;18621:33;:::i;:::-;18517:143;;;;:::o;18666:351::-;18736:6;18785:2;18773:9;18764:7;18760:23;18756:32;18753:119;;;18791:79;;:::i;:::-;18753:119;18911:1;18936:64;18992:7;18983:6;18972:9;18968:22;18936:64;:::i;:::-;18926:74;;18882:128;18666:351;;;;:::o;19023:332::-;19144:4;19182:2;19171:9;19167:18;19159:26;;19195:71;19263:1;19252:9;19248:17;19239:6;19195:71;:::i;:::-;19276:72;19344:2;19333:9;19329:18;19320:6;19276:72;:::i;:::-;19023:332;;;;;:::o;19361:137::-;19415:5;19446:6;19440:13;19431:22;;19462:30;19486:5;19462:30;:::i;:::-;19361:137;;;;:::o;19504:345::-;19571:6;19620:2;19608:9;19599:7;19595:23;19591:32;19588:119;;;19626:79;;:::i;:::-;19588:119;19746:1;19771:61;19824:7;19815:6;19804:9;19800:22;19771:61;:::i;:::-;19761:71;;19717:125;19504:345;;;;:::o;19855:222::-;19995:34;19991:1;19983:6;19979:14;19972:58;20064:5;20059:2;20051:6;20047:15;20040:30;19855:222;:::o;20083:366::-;20225:3;20246:67;20310:2;20305:3;20246:67;:::i;:::-;20239:74;;20322:93;20411:3;20322:93;:::i;:::-;20440:2;20435:3;20431:12;20424:19;;20083:366;;;:::o;20455:419::-;20621:4;20659:2;20648:9;20644:18;20636:26;;20708:9;20702:4;20698:20;20694:1;20683:9;20679:17;20672:47;20736:131;20862:4;20736:131;:::i;:::-;20728:139;;20455:419;;;:::o;20880:174::-;21020:26;21016:1;21008:6;21004:14;20997:50;20880:174;:::o;21060:366::-;21202:3;21223:67;21287:2;21282:3;21223:67;:::i;:::-;21216:74;;21299:93;21388:3;21299:93;:::i;:::-;21417:2;21412:3;21408:12;21401:19;;21060:366;;;:::o;21432:419::-;21598:4;21636:2;21625:9;21621:18;21613:26;;21685:9;21679:4;21675:20;21671:1;21660:9;21656:17;21649:47;21713:131;21839:4;21713:131;:::i;:::-;21705:139;;21432:419;;;:::o;21857:244::-;21997:34;21993:1;21985:6;21981:14;21974:58;22066:27;22061:2;22053:6;22049:15;22042:52;21857:244;:::o;22107:366::-;22249:3;22270:67;22334:2;22329:3;22270:67;:::i;:::-;22263:74;;22346:93;22435:3;22346:93;:::i;:::-;22464:2;22459:3;22455:12;22448:19;;22107:366;;;:::o;22479:419::-;22645:4;22683:2;22672:9;22668:18;22660:26;;22732:9;22726:4;22722:20;22718:1;22707:9;22703:17;22696:47;22760:131;22886:4;22760:131;:::i;:::-;22752:139;;22479:419;;;:::o;22904:224::-;23044:34;23040:1;23032:6;23028:14;23021:58;23113:7;23108:2;23100:6;23096:15;23089:32;22904:224;:::o;23134:366::-;23276:3;23297:67;23361:2;23356:3;23297:67;:::i;:::-;23290:74;;23373:93;23462:3;23373:93;:::i;:::-;23491:2;23486:3;23482:12;23475:19;;23134:366;;;:::o;23506:419::-;23672:4;23710:2;23699:9;23695:18;23687:26;;23759:9;23753:4;23749:20;23745:1;23734:9;23730:17;23723:47;23787:131;23913:4;23787:131;:::i;:::-;23779:139;;23506:419;;;:::o;23931:231::-;24071:34;24067:1;24059:6;24055:14;24048:58;24140:14;24135:2;24127:6;24123:15;24116:39;23931:231;:::o;24168:366::-;24310:3;24331:67;24395:2;24390:3;24331:67;:::i;:::-;24324:74;;24407:93;24496:3;24407:93;:::i;:::-;24525:2;24520:3;24516:12;24509:19;;24168:366;;;:::o;24540:419::-;24706:4;24744:2;24733:9;24729:18;24721:26;;24793:9;24787:4;24783:20;24779:1;24768:9;24764:17;24757:47;24821:131;24947:4;24821:131;:::i;:::-;24813:139;;24540:419;;;:::o;24965:229::-;25105:34;25101:1;25093:6;25089:14;25082:58;25174:12;25169:2;25161:6;25157:15;25150:37;24965:229;:::o;25200:366::-;25342:3;25363:67;25427:2;25422:3;25363:67;:::i;:::-;25356:74;;25439:93;25528:3;25439:93;:::i;:::-;25557:2;25552:3;25548:12;25541:19;;25200:366;;;:::o;25572:419::-;25738:4;25776:2;25765:9;25761:18;25753:26;;25825:9;25819:4;25815:20;25811:1;25800:9;25796:17;25789:47;25853:131;25979:4;25853:131;:::i;:::-;25845:139;;25572:419;;;:::o;25997:225::-;26137:34;26133:1;26125:6;26121:14;26114:58;26206:8;26201:2;26193:6;26189:15;26182:33;25997:225;:::o;26228:366::-;26370:3;26391:67;26455:2;26450:3;26391:67;:::i;:::-;26384:74;;26467:93;26556:3;26467:93;:::i;:::-;26585:2;26580:3;26576:12;26569:19;;26228:366;;;:::o;26600:419::-;26766:4;26804:2;26793:9;26789:18;26781:26;;26853:9;26847:4;26843:20;26839:1;26828:9;26824:17;26817:47;26881:131;27007:4;26881:131;:::i;:::-;26873:139;;26600:419;;;:::o;27025:147::-;27126:11;27163:3;27148:18;;27025:147;;;;:::o;27178:114::-;;:::o;27298:398::-;27457:3;27478:83;27559:1;27554:3;27478:83;:::i;:::-;27471:90;;27570:93;27659:3;27570:93;:::i;:::-;27688:1;27683:3;27679:11;27672:18;;27298:398;;;:::o;27702:379::-;27886:3;27908:147;28051:3;27908:147;:::i;:::-;27901:154;;28072:3;28065:10;;27702:379;;;:::o;28087:223::-;28227:34;28223:1;28215:6;28211:14;28204:58;28296:6;28291:2;28283:6;28279:15;28272:31;28087:223;:::o;28316:366::-;28458:3;28479:67;28543:2;28538:3;28479:67;:::i;:::-;28472:74;;28555:93;28644:3;28555:93;:::i;:::-;28673:2;28668:3;28664:12;28657:19;;28316:366;;;:::o;28688:419::-;28854:4;28892:2;28881:9;28877:18;28869:26;;28941:9;28935:4;28931:20;28927:1;28916:9;28912:17;28905:47;28969:131;29095:4;28969:131;:::i;:::-;28961:139;;28688:419;;;:::o;29113:221::-;29253:34;29249:1;29241:6;29237:14;29230:58;29322:4;29317:2;29309:6;29305:15;29298:29;29113:221;:::o;29340:366::-;29482:3;29503:67;29567:2;29562:3;29503:67;:::i;:::-;29496:74;;29579:93;29668:3;29579:93;:::i;:::-;29697:2;29692:3;29688:12;29681:19;;29340:366;;;:::o;29712:419::-;29878:4;29916:2;29905:9;29901:18;29893:26;;29965:9;29959:4;29955:20;29951:1;29940:9;29936:17;29929:47;29993:131;30119:4;29993:131;:::i;:::-;29985:139;;29712:419;;;:::o;30137:224::-;30277:34;30273:1;30265:6;30261:14;30254:58;30346:7;30341:2;30333:6;30329:15;30322:32;30137:224;:::o;30367:366::-;30509:3;30530:67;30594:2;30589:3;30530:67;:::i;:::-;30523:74;;30606:93;30695:3;30606:93;:::i;:::-;30724:2;30719:3;30715:12;30708:19;;30367:366;;;:::o;30739:419::-;30905:4;30943:2;30932:9;30928:18;30920:26;;30992:9;30986:4;30982:20;30978:1;30967:9;30963:17;30956:47;31020:131;31146:4;31020:131;:::i;:::-;31012:139;;30739:419;;;:::o;31164:222::-;31304:34;31300:1;31292:6;31288:14;31281:58;31373:5;31368:2;31360:6;31356:15;31349:30;31164:222;:::o;31392:366::-;31534:3;31555:67;31619:2;31614:3;31555:67;:::i;:::-;31548:74;;31631:93;31720:3;31631:93;:::i;:::-;31749:2;31744:3;31740:12;31733:19;;31392:366;;;:::o;31764:419::-;31930:4;31968:2;31957:9;31953:18;31945:26;;32017:9;32011:4;32007:20;32003:1;31992:9;31988:17;31981:47;32045:131;32171:4;32045:131;:::i;:::-;32037:139;;31764:419;;;:::o;32189:179::-;32329:31;32325:1;32317:6;32313:14;32306:55;32189:179;:::o;32374:366::-;32516:3;32537:67;32601:2;32596:3;32537:67;:::i;:::-;32530:74;;32613:93;32702:3;32613:93;:::i;:::-;32731:2;32726:3;32722:12;32715:19;;32374:366;;;:::o;32746:419::-;32912:4;32950:2;32939:9;32935:18;32927:26;;32999:9;32993:4;32989:20;32985:1;32974:9;32970:17;32963:47;33027:131;33153:4;33027:131;:::i;:::-;33019:139;;32746:419;;;:::o;33171:172::-;33311:24;33307:1;33299:6;33295:14;33288:48;33171:172;:::o;33349:366::-;33491:3;33512:67;33576:2;33571:3;33512:67;:::i;:::-;33505:74;;33588:93;33677:3;33588:93;:::i;:::-;33706:2;33701:3;33697:12;33690:19;;33349:366;;;:::o;33721:419::-;33887:4;33925:2;33914:9;33910:18;33902:26;;33974:9;33968:4;33964:20;33960:1;33949:9;33945:17;33938:47;34002:131;34128:4;34002:131;:::i;:::-;33994:139;;33721:419;;;:::o;34146:172::-;34286:24;34282:1;34274:6;34270:14;34263:48;34146:172;:::o;34324:366::-;34466:3;34487:67;34551:2;34546:3;34487:67;:::i;:::-;34480:74;;34563:93;34652:3;34563:93;:::i;:::-;34681:2;34676:3;34672:12;34665:19;;34324:366;;;:::o;34696:419::-;34862:4;34900:2;34889:9;34885:18;34877:26;;34949:9;34943:4;34939:20;34935:1;34924:9;34920:17;34913:47;34977:131;35103:4;34977:131;:::i;:::-;34969:139;;34696:419;;;:::o;35121:227::-;35261:34;35257:1;35249:6;35245:14;35238:58;35330:10;35325:2;35317:6;35313:15;35306:35;35121:227;:::o;35354:366::-;35496:3;35517:67;35581:2;35576:3;35517:67;:::i;:::-;35510:74;;35593:93;35682:3;35593:93;:::i;:::-;35711:2;35706:3;35702:12;35695:19;;35354:366;;;:::o;35726:419::-;35892:4;35930:2;35919:9;35915:18;35907:26;;35979:9;35973:4;35969:20;35965:1;35954:9;35950:17;35943:47;36007:131;36133:4;36007:131;:::i;:::-;35999:139;;35726:419;;;:::o;36151:174::-;36291:26;36287:1;36279:6;36275:14;36268:50;36151:174;:::o;36331:366::-;36473:3;36494:67;36558:2;36553:3;36494:67;:::i;:::-;36487:74;;36570:93;36659:3;36570:93;:::i;:::-;36688:2;36683:3;36679:12;36672:19;;36331:366;;;:::o;36703:419::-;36869:4;36907:2;36896:9;36892:18;36884:26;;36956:9;36950:4;36946:20;36942:1;36931:9;36927:17;36920:47;36984:131;37110:4;36984:131;:::i;:::-;36976:139;;36703:419;;;:::o;37128:229::-;37268:34;37264:1;37256:6;37252:14;37245:58;37337:12;37332:2;37324:6;37320:15;37313:37;37128:229;:::o;37363:366::-;37505:3;37526:67;37590:2;37585:3;37526:67;:::i;:::-;37519:74;;37602:93;37691:3;37602:93;:::i;:::-;37720:2;37715:3;37711:12;37704:19;;37363:366;;;:::o;37735:419::-;37901:4;37939:2;37928:9;37924:18;37916:26;;37988:9;37982:4;37978:20;37974:1;37963:9;37959:17;37952:47;38016:131;38142:4;38016:131;:::i;:::-;38008:139;;37735:419;;;:::o;38160:191::-;38200:4;38220:20;38238:1;38220:20;:::i;:::-;38215:25;;38254:20;38272:1;38254:20;:::i;:::-;38249:25;;38293:1;38290;38287:8;38284:34;;;38298:18;;:::i;:::-;38284:34;38343:1;38340;38336:9;38328:17;;38160:191;;;;:::o;38357:225::-;38497:34;38493:1;38485:6;38481:14;38474:58;38566:8;38561:2;38553:6;38549:15;38542:33;38357:225;:::o;38588:366::-;38730:3;38751:67;38815:2;38810:3;38751:67;:::i;:::-;38744:74;;38827:93;38916:3;38827:93;:::i;:::-;38945:2;38940:3;38936:12;38929:19;;38588:366;;;:::o;38960:419::-;39126:4;39164:2;39153:9;39149:18;39141:26;;39213:9;39207:4;39203:20;39199:1;39188:9;39184:17;39177:47;39241:131;39367:4;39241:131;:::i;:::-;39233:139;;38960:419;;;:::o;39385:320::-;39500:4;39538:2;39527:9;39523:18;39515:26;;39551:71;39619:1;39608:9;39604:17;39595:6;39551:71;:::i;:::-;39632:66;39694:2;39683:9;39679:18;39670:6;39632:66;:::i;:::-;39385:320;;;;;:::o;39711:180::-;39759:77;39756:1;39749:88;39856:4;39853:1;39846:15;39880:4;39877:1;39870:15;39897:180;39945:77;39942:1;39935:88;40042:4;40039:1;40032:15;40066:4;40063:1;40056:15;40083:143;40140:5;40171:6;40165:13;40156:22;;40187:33;40214:5;40187:33;:::i;:::-;40083:143;;;;:::o;40232:351::-;40302:6;40351:2;40339:9;40330:7;40326:23;40322:32;40319:119;;;40357:79;;:::i;:::-;40319:119;40477:1;40502:64;40558:7;40549:6;40538:9;40534:22;40502:64;:::i;:::-;40492:74;;40448:128;40232:351;;;;:::o;40589:85::-;40634:7;40663:5;40652:16;;40589:85;;;:::o;40680:158::-;40738:9;40771:61;40789:42;40798:32;40824:5;40798:32;:::i;:::-;40789:42;:::i;:::-;40771:61;:::i;:::-;40758:74;;40680:158;;;:::o;40844:147::-;40939:45;40978:5;40939:45;:::i;:::-;40934:3;40927:58;40844:147;;:::o;40997:114::-;41064:6;41098:5;41092:12;41082:22;;40997:114;;;:::o;41117:184::-;41216:11;41250:6;41245:3;41238:19;41290:4;41285:3;41281:14;41266:29;;41117:184;;;;:::o;41307:132::-;41374:4;41397:3;41389:11;;41427:4;41422:3;41418:14;41410:22;;41307:132;;;:::o;41445:108::-;41522:24;41540:5;41522:24;:::i;:::-;41517:3;41510:37;41445:108;;:::o;41559:179::-;41628:10;41649:46;41691:3;41683:6;41649:46;:::i;:::-;41727:4;41722:3;41718:14;41704:28;;41559:179;;;;:::o;41744:113::-;41814:4;41846;41841:3;41837:14;41829:22;;41744:113;;;:::o;41893:732::-;42012:3;42041:54;42089:5;42041:54;:::i;:::-;42111:86;42190:6;42185:3;42111:86;:::i;:::-;42104:93;;42221:56;42271:5;42221:56;:::i;:::-;42300:7;42331:1;42316:284;42341:6;42338:1;42335:13;42316:284;;;42417:6;42411:13;42444:63;42503:3;42488:13;42444:63;:::i;:::-;42437:70;;42530:60;42583:6;42530:60;:::i;:::-;42520:70;;42376:224;42363:1;42360;42356:9;42351:14;;42316:284;;;42320:14;42616:3;42609:10;;42017:608;;;41893:732;;;;:::o;42631:831::-;42894:4;42932:3;42921:9;42917:19;42909:27;;42946:71;43014:1;43003:9;42999:17;42990:6;42946:71;:::i;:::-;43027:80;43103:2;43092:9;43088:18;43079:6;43027:80;:::i;:::-;43154:9;43148:4;43144:20;43139:2;43128:9;43124:18;43117:48;43182:108;43285:4;43276:6;43182:108;:::i;:::-;43174:116;;43300:72;43368:2;43357:9;43353:18;43344:6;43300:72;:::i;:::-;43382:73;43450:3;43439:9;43435:19;43426:6;43382:73;:::i;:::-;42631:831;;;;;;;;:::o;43468:807::-;43717:4;43755:3;43744:9;43740:19;43732:27;;43769:71;43837:1;43826:9;43822:17;43813:6;43769:71;:::i;:::-;43850:72;43918:2;43907:9;43903:18;43894:6;43850:72;:::i;:::-;43932:80;44008:2;43997:9;43993:18;43984:6;43932:80;:::i;:::-;44022;44098:2;44087:9;44083:18;44074:6;44022:80;:::i;:::-;44112:73;44180:3;44169:9;44165:19;44156:6;44112:73;:::i;:::-;44195;44263:3;44252:9;44248:19;44239:6;44195:73;:::i;:::-;43468:807;;;;;;;;;:::o;44281:663::-;44369:6;44377;44385;44434:2;44422:9;44413:7;44409:23;44405:32;44402:119;;;44440:79;;:::i;:::-;44402:119;44560:1;44585:64;44641:7;44632:6;44621:9;44617:22;44585:64;:::i;:::-;44575:74;;44531:128;44698:2;44724:64;44780:7;44771:6;44760:9;44756:22;44724:64;:::i;:::-;44714:74;;44669:129;44837:2;44863:64;44919:7;44910:6;44899:9;44895:22;44863:64;:::i;:::-;44853:74;;44808:129;44281:663;;;;;:::o

Swarm Source

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