ETH Price: $1,843.14 (-1.06%)
 

Overview

Max Total Supply

1,000,000,000 TREND

Holders

549 (0.00%)

Transfers

-
2

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

TrendApp is a cutting-edge social media video-sharing platform that seamlessly integrates social commerce, bridging Web2 accessibility with Web3 innovation. Designed to empower creators, brands, and users, TrendApp allows TREND token holders to engage dynamically within its ecosystem

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
token

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2025-05-10
*/

/** 
Website: http://token.trend.app
https://t.me/trendappofficial

Twitter : https://twitter.com/trenddotapp
**/


// SPDX-License-Identifier: MIT

pragma solidity 0.8.15;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), 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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    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 token is ERC20, Ownable {

    uint256 public maxBuy;
    uint256 public maxSell;
    uint256 public maxWallet;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;
    address devAddress;

    bool public tradingActive = false;
    bool public swapEnabled = false;
    
    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    /******************/

    // 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 Launched();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("TrendApp", "TREND") {

        address newOwner = msg.sender;
        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);
        
        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxBuy = totalSupply * 1 / 100;
        maxSell = totalSupply * 1 / 100;
        maxWallet = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 5 / 10000;

        buyOperationsFee = 10;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee;

        sellOperationsFee = 25;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee;

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

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

        operationsAddress = address(newOwner);
        devAddress = address(newOwner);

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

    receive() external payable {}

    // only enable if no plan to airdrop

    function golive() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        emit Launched();
    }


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

    function updateMaxSell(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max sell amount lower than 0.2%");
        maxSell = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSell);
    }

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

    function updateSwapTokens(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
        swapTokensAtAmount = newAmount;
    }

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

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

    function setAMM(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _DevFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _DevFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _DevFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _DevFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% 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(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

     
        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

        
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuy, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSell, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "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;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

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

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

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

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

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

    function swapBack() private {

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForDev;

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

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

        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 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForDev = 0;

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

        (success,) = address(devAddress).call{value: ethForDev}("");

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

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setOpsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
    }

    function setMarketingAddress(address _devAddress) external onlyOwner {
        require(_devAddress != address(0), "_marketingAddress address cannot be 0");
        devAddress = payable(_devAddress);
    }



    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBack(uint256 amountInWei) external onlyOwner {
        require(amountInWei <= 10 ether, "May not buy more than 10 ETH in a single buy to reduce sandwich attacks");

        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

        // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
        emit BuyBackTriggered(amountInWei);
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","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":[],"name":"Launched","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":[{"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":"UpdatedOperationsAddress","type":"event"},{"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":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","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":"buyOperationsFee","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":"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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","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":"excludeFromMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"golive","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":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOpsAddress","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","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":[{"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":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600d60146101000a81548160ff0219169083151502179055506000600d60156101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600881526020017f5472656e644170700000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5452454e440000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000e75565b508060049081620000d7919062000e75565b5050506000620000ec6200063960201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000fc6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ea919062000fc6565b6040518363ffffffff1660e01b81526004016200030992919062001009565b6020604051808303816000875af115801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f919062000fc6565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003c4600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200064160201b60201c565b620003f9600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006d760201b60201c565b60006b033b2e3c9fd0803ce8000000905060646001826200041b919062001065565b620004279190620010f5565b60068190555060646001826200043e919062001065565b6200044a9190620010f5565b600781905550606460018262000461919062001065565b6200046d9190620010f5565b60088190555061271060058262000485919062001065565b620004919190620010f5565b600b81905550600a600f8190555060006010819055506000601181905550601154601054600f54620004c491906200112d565b620004d091906200112d565b600e819055506019601381905550600060148190555060006015819055506015546014546013546200050391906200112d565b6200050f91906200112d565b601281905550620005288360016200064160201b60201c565b6200053b3060016200064160201b60201c565b6200055061dead60016200064160201b60201c565b620005638360016200078a60201b60201c565b620005763060016200078a60201b60201c565b6200058b61dead60016200078a60201b60201c565b82600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200061f8382620008d760201b60201c565b620006308362000a2760201b60201c565b505050620013ac565b600033905090565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006cb929190620011a7565b60405180910390a15050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200074082826200064160201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200079a6200063960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200082c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008239062001235565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008cb919062001257565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200094090620012c4565b60405180910390fd5b80600260008282546200095d91906200112d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009b491906200112d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a1b9190620012f7565b60405180910390a35050565b62000a376200063960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000ac9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac09062001235565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b32906200138a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c7d57607f821691505b60208210810362000c935762000c9262000c35565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cfd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cbe565b62000d09868362000cbe565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d5662000d5062000d4a8462000d21565b62000d2b565b62000d21565b9050919050565b6000819050919050565b62000d728362000d35565b62000d8a62000d818262000d5d565b84845462000ccb565b825550505050565b600090565b62000da162000d92565b62000dae81848462000d67565b505050565b5b8181101562000dd65762000dca60008262000d97565b60018101905062000db4565b5050565b601f82111562000e255762000def8162000c99565b62000dfa8462000cae565b8101602085101562000e0a578190505b62000e2262000e198562000cae565b83018262000db3565b50505b505050565b600082821c905092915050565b600062000e4a6000198460080262000e2a565b1980831691505092915050565b600062000e65838362000e37565b9150826002028217905092915050565b62000e808262000bfb565b67ffffffffffffffff81111562000e9c5762000e9b62000c06565b5b62000ea8825462000c64565b62000eb582828562000dda565b600060209050601f83116001811462000eed576000841562000ed8578287015190505b62000ee4858262000e57565b86555062000f54565b601f19841662000efd8662000c99565b60005b8281101562000f275784890151825560018201915060208501945060208101905062000f00565b8683101562000f47578489015162000f43601f89168262000e37565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f8e8262000f61565b9050919050565b62000fa08162000f81565b811462000fac57600080fd5b50565b60008151905062000fc08162000f95565b92915050565b60006020828403121562000fdf5762000fde62000f5c565b5b600062000fef8482850162000faf565b91505092915050565b620010038162000f81565b82525050565b600060408201905062001020600083018562000ff8565b6200102f602083018462000ff8565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010728262000d21565b91506200107f8362000d21565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620010bb57620010ba62001036565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011028262000d21565b91506200110f8362000d21565b925082620011225762001121620010c6565b5b828204905092915050565b60006200113a8262000d21565b9150620011478362000d21565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200117f576200117e62001036565b5b828201905092915050565b60008115159050919050565b620011a1816200118a565b82525050565b6000604082019050620011be600083018562000ff8565b620011cd602083018462001196565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200121d602083620011d4565b91506200122a82620011e5565b602082019050919050565b6000602082019050818103600083015262001250816200120e565b9050919050565b60006020820190506200126e600083018462001196565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620012ac601f83620011d4565b9150620012b98262001274565b602082019050919050565b60006020820190508181036000830152620012df816200129d565b9050919050565b620012f18162000d21565b82525050565b60006020820190506200130e6000830184620012e6565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001372602683620011d4565b91506200137f8262001314565b604082019050919050565b60006020820190508181036000830152620013a58162001363565b9050919050565b615bdf80620013bc6000396000f3fe6080604052600436106102cd5760003560e01c80638366e79a11610175578063b8eb3546116100dc578063e2f4560511610095578063f5648a4f1161006f578063f5648a4f14610b05578063f637434214610b1c578063f8b45b0514610b47578063fb002c9714610b72576102d4565b8063e2f4560514610a86578063f11a24d314610ab1578063f2fde38b14610adc576102d4565b8063b8eb354614610976578063bbc0c742146109a1578063c0246668146109cc578063c17b5b8c146109f5578063d85ba06314610a1e578063dd62ed3e14610a49576102d4565b80639fccce321161012e5780639fccce3214610840578063a0d82dc51461086b578063a457c2d714610896578063a9059cbb146108d3578063a9d3cd8a14610910578063b62496f514610939576102d4565b80638366e79a146107305780638da5cb5b1461076d578063906e9dd0146107985780639164f9db146107c157806395d89b41146107ea5780639c3b4fdc14610815576102d4565b806339509351116102345780636a486a8e116101ed57806370a08231116101c757806370a082311461068857806370db69d6146106c5578063715018a6146106f05780638095d56414610707576102d4565b80636a486a8e146106095780636ddd171314610634578063707789c51461065f576102d4565b806339509351146104f9578063452ed4f11461053657806346f1f5de146105615780634f77f6c01461058a57806358881304146105b55780635a139dd4146105de576102d4565b80631a8145bb116102865780631a8145bb146103fd5780631c499ab0146104285780631e146da81461045157806323b872dd14610468578063249ec2bb146104a5578063313ce567146104ce576102d4565b8063053f9040146102d957806306fdde03146103025780630758d9241461032d578063095ea7b31461035857806310d5de531461039557806318160ddd146103d2576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b5061030060048036038101906102fb9190614253565b610b9d565b005b34801561030e57600080fd5b50610317610ecd565b6040516103249190614319565b60405180910390f35b34801561033957600080fd5b50610342610f5f565b60405161034f91906143ba565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a9190614413565b610f85565b60405161038c919061446e565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190614489565b610fa3565b6040516103c9919061446e565b60405180910390f35b3480156103de57600080fd5b506103e7610fc3565b6040516103f491906144c5565b60405180910390f35b34801561040957600080fd5b50610412610fcd565b60405161041f91906144c5565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190614253565b610fd3565b005b34801561045d57600080fd5b50610466611136565b005b34801561047457600080fd5b5061048f600480360381019061048a91906144e0565b611281565b60405161049c919061446e565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c7919061455f565b611379565b005b3480156104da57600080fd5b506104e3611501565b6040516104f091906145bb565b60405180910390f35b34801561050557600080fd5b50610520600480360381019061051b9190614413565b61150a565b60405161052d919061446e565b60405180910390f35b34801561054257600080fd5b5061054b6115b6565b60405161055891906145e5565b60405180910390f35b34801561056d57600080fd5b5061058860048036038101906105839190614253565b6115dc565b005b34801561059657600080fd5b5061059f611744565b6040516105ac91906144c5565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190614253565b61174a565b005b3480156105ea57600080fd5b506105f36118ad565b60405161060091906144c5565b60405180910390f35b34801561061557600080fd5b5061061e6118b3565b60405161062b91906144c5565b60405180910390f35b34801561064057600080fd5b506106496118b9565b604051610656919061446e565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190614489565b6118cc565b005b34801561069457600080fd5b506106af60048036038101906106aa9190614489565b611a16565b6040516106bc91906144c5565b60405180910390f35b3480156106d157600080fd5b506106da611a5e565b6040516106e791906144c5565b60405180910390f35b3480156106fc57600080fd5b50610705611a64565b005b34801561071357600080fd5b5061072e60048036038101906107299190614600565b611bbc565b005b34801561073c57600080fd5b5061075760048036038101906107529190614653565b611cd6565b604051610764919061446e565b60405180910390f35b34801561077957600080fd5b50610782611f8a565b60405161078f91906145e5565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190614489565b611fb4565b005b3480156107cd57600080fd5b506107e860048036038101906107e39190614253565b6120fe565b005b3480156107f657600080fd5b506107ff612261565b60405161080c9190614319565b60405180910390f35b34801561082157600080fd5b5061082a6122f3565b60405161083791906144c5565b60405180910390f35b34801561084c57600080fd5b506108556122f9565b60405161086291906144c5565b60405180910390f35b34801561087757600080fd5b506108806122ff565b60405161088d91906144c5565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190614413565b612305565b6040516108ca919061446e565b60405180910390f35b3480156108df57600080fd5b506108fa60048036038101906108f59190614413565b6123f0565b604051610907919061446e565b60405180910390f35b34801561091c57600080fd5b506109376004803603810190610932919061455f565b61240e565b005b34801561094557600080fd5b50610960600480360381019061095b9190614489565b612589565b60405161096d919061446e565b60405180910390f35b34801561098257600080fd5b5061098b6125a9565b60405161099891906144c5565b60405180910390f35b3480156109ad57600080fd5b506109b66125af565b6040516109c3919061446e565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee919061455f565b6125c2565b005b348015610a0157600080fd5b50610a1c6004803603810190610a179190614600565b612702565b005b348015610a2a57600080fd5b50610a3361281c565b604051610a4091906144c5565b60405180910390f35b348015610a5557600080fd5b50610a706004803603810190610a6b9190614653565b612822565b604051610a7d91906144c5565b60405180910390f35b348015610a9257600080fd5b50610a9b6128a9565b604051610aa891906144c5565b60405180910390f35b348015610abd57600080fd5b50610ac66128af565b604051610ad391906144c5565b60405180910390f35b348015610ae857600080fd5b50610b036004803603810190610afe9190614489565b6128b5565b005b348015610b1157600080fd5b50610b1a612a7b565b005b348015610b2857600080fd5b50610b31612b83565b604051610b3e91906144c5565b60405180910390f35b348015610b5357600080fd5b50610b5c612b89565b604051610b6991906144c5565b60405180910390f35b348015610b7e57600080fd5b50610b87612b8f565b604051610b9491906144c5565b60405180910390f35b610ba5612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b906146df565b60405180910390fd5b678ac7230489e80000811115610c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7690614797565b60405180910390fd5b6000600267ffffffffffffffff811115610c9c57610c9b6147b7565b5b604051908082528060200260200182016040528015610cca5781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906147fb565b81600081518110610d7257610d71614828565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610dc157610dc0614828565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b8152600401610e609493929190614950565b6000604051808303818588803b158015610e7957600080fd5b505af1158015610e8d573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051610ec191906144c5565b60405180910390a15050565b606060038054610edc906149cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610f08906149cb565b8015610f555780601f10610f2a57610100808354040283529160200191610f55565b820191906000526020600020905b815481529060010190602001808311610f3857829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f99610f92612b95565b8484612b9d565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60175481565b610fdb612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611061906146df565b60405180910390fd5b670de0b6b3a76400006103e86003611080610fc3565b61108a9190614a2b565b6110949190614ab4565b61109e9190614ab4565b8110156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790614b57565b60405180910390fd5b670de0b6b3a7640000816110f49190614a2b565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161112b91906144c5565b60405180910390a150565b61113e612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c4906146df565b60405180910390fd5b600d60149054906101000a900460ff161561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490614bc3565b60405180910390fd5b6001600d60146101000a81548160ff0219169083151502179055506001600d60156101000a81548160ff0219169083151502179055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a1565b600061128e848484612d66565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112d9612b95565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090614c55565b60405180910390fd5b61136d85611365612b95565b858403612b9d565b60019150509392505050565b611381612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906146df565b60405180910390fd5b806114a657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90614ce7565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60006115ac611517612b95565b848460016000611525612b95565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115a79190614d07565b612b9d565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115e4612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a906146df565b60405180910390fd5b620186a06001611681610fc3565b61168b9190614a2b565b6116959190614ab4565b8110156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614dcf565b60405180910390fd5b6103e860016116e4610fc3565b6116ee9190614a2b565b6116f89190614ab4565b81111561173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190614e61565b60405180910390fd5b80600b8190555050565b60135481565b611752612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d8906146df565b60405180910390fd5b670de0b6b3a76400006103e860026117f7610fc3565b6118019190614a2b565b61180b9190614ab4565b6118159190614ab4565b811015611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90614ef3565b60405180910390fd5b670de0b6b3a76400008161186b9190614a2b565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516118a291906144c5565b60405180910390a150565b600f5481565b60125481565b600d60159054906101000a900460ff1681565b6118d4612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c990614f85565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b611a6c612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af2906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611bc4612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a906146df565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f54611c7b9190614d07565b611c859190614d07565b600e819055506014600e541115611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc890614ff1565b60405180910390fd5b505050565b6000611ce0612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d66906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd59061505d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e43906150c9565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e8791906145e5565b602060405180830381865afa158015611ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec891906150fe565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611f0592919061512b565b6020604051808303816000875af1158015611f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f489190615169565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611f7b92919061512b565b60405180910390a15092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611fbc612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612042906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190615208565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612106612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218c906146df565b60405180910390fd5b670de0b6b3a76400006103e860026121ab610fc3565b6121b59190614a2b565b6121bf9190614ab4565b6121c99190614ab4565b81101561220b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122029061529a565b60405180910390fd5b670de0b6b3a76400008161221f9190614a2b565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161225691906144c5565b60405180910390a150565b606060048054612270906149cb565b80601f016020809104026020016040519081016040528092919081815260200182805461229c906149cb565b80156122e95780601f106122be576101008083540402835291602001916122e9565b820191906000526020600020905b8154815290600101906020018083116122cc57829003601f168201915b5050505050905090565b60115481565b60185481565b60155481565b60008060016000612314612b95565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c89061532c565b60405180910390fd5b6123e56123dc612b95565b85858403612b9d565b600191505092915050565b60006124046123fd612b95565b8484612d66565b6001905092915050565b612416612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249c906146df565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252c90615398565b60405180910390fd5b61253f82826138b0565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b601b6020528060005260406000206000915054906101000a900460ff1681565b60075481565b600d60149054906101000a900460ff1681565b6125ca612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612650906146df565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516126f6919061446e565b60405180910390a25050565b61270a612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612790906146df565b60405180910390fd5b8260138190555081601481905550806015819055506015546014546013546127c19190614d07565b6127cb9190614d07565b60128190555060196012541115612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90615404565b60405180910390fd5b505050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60105481565b6128bd612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461294c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612943906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b290615496565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a83612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b09906146df565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b38906154e7565b60006040518083038185875af1925050503d8060008114612b75576040519150601f19603f3d011682016040523d82523d6000602084013e612b7a565b606091505b50508091505050565b60145481565b60085481565b60165481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c039061556e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7290615600565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d5991906144c5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc90615692565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3b90615724565b60405180910390fd5b60008111612e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7e90615790565b60405180910390fd5b600d60149054906101000a900460ff16612f7c57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f3c5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f72906157fc565b60405180910390fd5b5b612f84611f8a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ff25750612fc2611f8a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561302b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613065575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130bb5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131115750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ff57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131b95750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561326057600654811115613203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fa9061588e565b60405180910390fd5b60085461320f83611a16565b8261321a9190614d07565b111561325b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613252906158fa565b60405180910390fd5b6133fe565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133035750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133525760075481111561334d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133449061598c565b60405180910390fd5b6133fd565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133fc576008546133af83611a16565b826133ba9190614d07565b11156133fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f2906158fa565b60405180910390fd5b5b5b5b5b600061340a30611a16565b90506000600b54821015905080801561342f5750600d60159054906101000a900460ff165b80156134485750600a60149054906101000a900460ff16155b801561349e5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134f45750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561354a5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561358e576001600a60146101000a81548160ff02191690831515021790555061357261395b565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136355750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561363f57600090505b6000811561389c57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136a257506000601254115b15613761576064601254866136b79190614a2b565b6136c19190614ab4565b9050601254601454826136d49190614a2b565b6136de9190614ab4565b601760008282546136ef9190614d07565b92505081905550601254601354826137079190614a2b565b6137119190614ab4565b601660008282546137229190614d07565b925050819055506012546015548261373a9190614a2b565b6137449190614ab4565b601860008282546137559190614d07565b92505081905550613878565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137bc57506000600e54115b15613877576064600e54866137d19190614a2b565b6137db9190614ab4565b9050600e54601054826137ee9190614a2b565b6137f89190614ab4565b601760008282546138099190614d07565b92505081905550600e54600f54826138219190614a2b565b61382b9190614ab4565b6016600082825461383c9190614d07565b92505081905550600e54601154826138549190614a2b565b61385e9190614ab4565b6018600082825461386f9190614d07565b925050819055505b5b600081111561388d5761388c873083613bf8565b5b808561389991906159ac565b94505b6138a7878787613bf8565b50505050505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506139118282613e61565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061396630611a16565b9050600060185460165460175461397d9190614d07565b6139879190614d07565b905060008214806139985750600081145b156139a4575050613bf6565b6014600b546139b39190614a2b565b8211156139cc576014600b546139c99190614a2b565b91505b600080600283601754866139e09190614a2b565b6139ea9190614ab4565b6139f49190614ab4565b9050613a0a8185613a0591906159ac565b613ef5565b6000479050600081905060006002601754613a259190614ab4565b86613a3091906159ac565b60165484613a3e9190614a2b565b613a489190614ab4565b905060006002601754613a5b9190614ab4565b87613a6691906159ac565b60185485613a749190614a2b565b613a7e9190614ab4565b90508082613a8c9190614d07565b83613a9791906159ac565b9250600060178190555060006016819055506000601881905550600085118015613ac15750600083115b15613ad157613ad08584614138565b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b17906154e7565b60006040518083038185875af1925050503d8060008114613b54576040519150601f19603f3d011682016040523d82523d6000602084013e613b59565b606091505b505080965050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ba5906154e7565b60006040518083038185875af1925050503d8060008114613be2576040519150601f19603f3d011682016040523d82523d6000602084013e613be7565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c5e90615692565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ccd90615724565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5390615a52565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613def9190614d07565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e5391906144c5565b60405180910390a350505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613ee9929190615a72565b60405180910390a15050565b6000600267ffffffffffffffff811115613f1257613f116147b7565b5b604051908082528060200260200182016040528015613f405781602001602082028036833780820191505090505b5090503081600081518110613f5857613f57614828565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402391906147fb565b8160018151811061403757614036614828565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061409e30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b9d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614102959493929190615a9b565b600060405180830381600087803b15801561411c57600080fd5b505af1158015614130573d6000803e3d6000fd5b505050505050565b61416530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b9d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016141ce96959493929190615af5565b60606040518083038185885af11580156141ec573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906142119190615b56565b5050505050565b600080fd5b6000819050919050565b6142308161421d565b811461423b57600080fd5b50565b60008135905061424d81614227565b92915050565b60006020828403121561426957614268614218565b5b60006142778482850161423e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142ba57808201518184015260208101905061429f565b838111156142c9576000848401525b50505050565b6000601f19601f8301169050919050565b60006142eb82614280565b6142f5818561428b565b935061430581856020860161429c565b61430e816142cf565b840191505092915050565b6000602082019050818103600083015261433381846142e0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061438061437b6143768461433b565b61435b565b61433b565b9050919050565b600061439282614365565b9050919050565b60006143a482614387565b9050919050565b6143b481614399565b82525050565b60006020820190506143cf60008301846143ab565b92915050565b60006143e08261433b565b9050919050565b6143f0816143d5565b81146143fb57600080fd5b50565b60008135905061440d816143e7565b92915050565b6000806040838503121561442a57614429614218565b5b6000614438858286016143fe565b92505060206144498582860161423e565b9150509250929050565b60008115159050919050565b61446881614453565b82525050565b6000602082019050614483600083018461445f565b92915050565b60006020828403121561449f5761449e614218565b5b60006144ad848285016143fe565b91505092915050565b6144bf8161421d565b82525050565b60006020820190506144da60008301846144b6565b92915050565b6000806000606084860312156144f9576144f8614218565b5b6000614507868287016143fe565b9350506020614518868287016143fe565b92505060406145298682870161423e565b9150509250925092565b61453c81614453565b811461454757600080fd5b50565b60008135905061455981614533565b92915050565b6000806040838503121561457657614575614218565b5b6000614584858286016143fe565b92505060206145958582860161454a565b9150509250929050565b600060ff82169050919050565b6145b58161459f565b82525050565b60006020820190506145d060008301846145ac565b92915050565b6145df816143d5565b82525050565b60006020820190506145fa60008301846145d6565b92915050565b60008060006060848603121561461957614618614218565b5b60006146278682870161423e565b93505060206146388682870161423e565b92505060406146498682870161423e565b9150509250925092565b6000806040838503121561466a57614669614218565b5b6000614678858286016143fe565b9250506020614689858286016143fe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146c960208361428b565b91506146d482614693565b602082019050919050565b600060208201905081810360008301526146f8816146bc565b9050919050565b7f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060008201527f612073696e676c652062757920746f207265647563652073616e64776963682060208201527f61747461636b7300000000000000000000000000000000000000000000000000604082015250565b600061478160478361428b565b915061478c826146ff565b606082019050919050565b600060208201905081810360008301526147b081614774565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506147f5816143e7565b92915050565b60006020828403121561481157614810614218565b5b600061481f848285016147e6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061487c61487761487284614857565b61435b565b61421d565b9050919050565b61488c81614861565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148c7816143d5565b82525050565b60006148d983836148be565b60208301905092915050565b6000602082019050919050565b60006148fd82614892565b614907818561489d565b9350614912836148ae565b8060005b8381101561494357815161492a88826148cd565b9750614935836148e5565b925050600181019050614916565b5085935050505092915050565b60006080820190506149656000830187614883565b818103602083015261497781866148f2565b905061498660408301856145d6565b61499360608301846144b6565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806149e357607f821691505b6020821081036149f6576149f561499c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614a368261421d565b9150614a418361421d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a7a57614a796149fc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614abf8261421d565b9150614aca8361421d565b925082614ada57614ad9614a85565b5b828204905092915050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614b41602c8361428b565b9150614b4c82614ae5565b604082019050919050565b60006020820190508181036000830152614b7081614b34565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614bad60178361428b565b9150614bb882614b77565b602082019050919050565b60006020820190508181036000830152614bdc81614ba0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614c3f60288361428b565b9150614c4a82614be3565b604082019050919050565b60006020820190508181036000830152614c6e81614c32565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614cd160278361428b565b9150614cdc82614c75565b604082019050919050565b60006020820190508181036000830152614d0081614cc4565b9050919050565b6000614d128261421d565b9150614d1d8361421d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d5257614d516149fc565b5b828201905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614db960358361428b565b9150614dc482614d5d565b604082019050919050565b60006020820190508181036000830152614de881614dac565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614e4b60348361428b565b9150614e5682614def565b604082019050919050565b60006020820190508181036000830152614e7a81614e3e565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b6000614edd60298361428b565b9150614ee882614e81565b604082019050919050565b60006020820190508181036000830152614f0c81614ed0565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614f6f60268361428b565b9150614f7a82614f13565b604082019050919050565b60006020820190508181036000830152614f9e81614f62565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614fdb601d8361428b565b9150614fe682614fa5565b602082019050919050565b6000602082019050818103600083015261500a81614fce565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000615047601a8361428b565b915061505282615011565b602082019050919050565b600060208201905081810360008301526150768161503a565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006150b3601c8361428b565b91506150be8261507d565b602082019050919050565b600060208201905081810360008301526150e2816150a6565b9050919050565b6000815190506150f881614227565b92915050565b60006020828403121561511457615113614218565b5b6000615122848285016150e9565b91505092915050565b600060408201905061514060008301856145d6565b61514d60208301846144b6565b9392505050565b60008151905061516381614533565b92915050565b60006020828403121561517f5761517e614218565b5b600061518d84828501615154565b91505092915050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b60006151f260258361428b565b91506151fd82615196565b604082019050919050565b60006020820190508181036000830152615221816151e5565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b6000615284602a8361428b565b915061528f82615228565b604082019050919050565b600060208201905081810360008301526152b381615277565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061531660258361428b565b9150615321826152ba565b604082019050919050565b6000602082019050818103600083015261534581615309565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f766564000000000000600082015250565b6000615382601a8361428b565b915061538d8261534c565b602082019050919050565b600060208201905081810360008301526153b181615375565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006153ee601d8361428b565b91506153f9826153b8565b602082019050919050565b6000602082019050818103600083015261541d816153e1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061548060268361428b565b915061548b82615424565b604082019050919050565b600060208201905081810360008301526154af81615473565b9050919050565b600081905092915050565b50565b60006154d16000836154b6565b91506154dc826154c1565b600082019050919050565b60006154f2826154c4565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061555860248361428b565b9150615563826154fc565b604082019050919050565b600060208201905081810360008301526155878161554b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006155ea60228361428b565b91506155f58261558e565b604082019050919050565b60006020820190508181036000830152615619816155dd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061567c60258361428b565b915061568782615620565b604082019050919050565b600060208201905081810360008301526156ab8161566f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061570e60238361428b565b9150615719826156b2565b604082019050919050565b6000602082019050818103600083015261573d81615701565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061577a601d8361428b565b915061578582615744565b602082019050919050565b600060208201905081810360008301526157a98161576d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006157e660168361428b565b91506157f1826157b0565b602082019050919050565b60006020820190508181036000830152615815816157d9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b600061587860288361428b565b91506158838261581c565b604082019050919050565b600060208201905081810360008301526158a78161586b565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006158e460188361428b565b91506158ef826158ae565b602082019050919050565b60006020820190508181036000830152615913816158d7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615976602a8361428b565b91506159818261591a565b604082019050919050565b600060208201905081810360008301526159a581615969565b9050919050565b60006159b78261421d565b91506159c28361421d565b9250828210156159d5576159d46149fc565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615a3c60268361428b565b9150615a47826159e0565b604082019050919050565b60006020820190508181036000830152615a6b81615a2f565b9050919050565b6000604082019050615a8760008301856145d6565b615a94602083018461445f565b9392505050565b600060a082019050615ab060008301886144b6565b615abd6020830187614883565b8181036040830152615acf81866148f2565b9050615ade60608301856145d6565b615aeb60808301846144b6565b9695505050505050565b600060c082019050615b0a60008301896145d6565b615b1760208301886144b6565b615b246040830187614883565b615b316060830186614883565b615b3e60808301856145d6565b615b4b60a08301846144b6565b979650505050505050565b600080600060608486031215615b6f57615b6e614218565b5b6000615b7d868287016150e9565b9350506020615b8e868287016150e9565b9250506040615b9f868287016150e9565b915050925092509256fea2646970667358221220d4ff44ec4824c7a6c2bf3d1c817cf8ef27d738d8fda7390bfc6ff58d07723ba264736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c80638366e79a11610175578063b8eb3546116100dc578063e2f4560511610095578063f5648a4f1161006f578063f5648a4f14610b05578063f637434214610b1c578063f8b45b0514610b47578063fb002c9714610b72576102d4565b8063e2f4560514610a86578063f11a24d314610ab1578063f2fde38b14610adc576102d4565b8063b8eb354614610976578063bbc0c742146109a1578063c0246668146109cc578063c17b5b8c146109f5578063d85ba06314610a1e578063dd62ed3e14610a49576102d4565b80639fccce321161012e5780639fccce3214610840578063a0d82dc51461086b578063a457c2d714610896578063a9059cbb146108d3578063a9d3cd8a14610910578063b62496f514610939576102d4565b80638366e79a146107305780638da5cb5b1461076d578063906e9dd0146107985780639164f9db146107c157806395d89b41146107ea5780639c3b4fdc14610815576102d4565b806339509351116102345780636a486a8e116101ed57806370a08231116101c757806370a082311461068857806370db69d6146106c5578063715018a6146106f05780638095d56414610707576102d4565b80636a486a8e146106095780636ddd171314610634578063707789c51461065f576102d4565b806339509351146104f9578063452ed4f11461053657806346f1f5de146105615780634f77f6c01461058a57806358881304146105b55780635a139dd4146105de576102d4565b80631a8145bb116102865780631a8145bb146103fd5780631c499ab0146104285780631e146da81461045157806323b872dd14610468578063249ec2bb146104a5578063313ce567146104ce576102d4565b8063053f9040146102d957806306fdde03146103025780630758d9241461032d578063095ea7b31461035857806310d5de531461039557806318160ddd146103d2576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b5061030060048036038101906102fb9190614253565b610b9d565b005b34801561030e57600080fd5b50610317610ecd565b6040516103249190614319565b60405180910390f35b34801561033957600080fd5b50610342610f5f565b60405161034f91906143ba565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a9190614413565b610f85565b60405161038c919061446e565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190614489565b610fa3565b6040516103c9919061446e565b60405180910390f35b3480156103de57600080fd5b506103e7610fc3565b6040516103f491906144c5565b60405180910390f35b34801561040957600080fd5b50610412610fcd565b60405161041f91906144c5565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190614253565b610fd3565b005b34801561045d57600080fd5b50610466611136565b005b34801561047457600080fd5b5061048f600480360381019061048a91906144e0565b611281565b60405161049c919061446e565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c7919061455f565b611379565b005b3480156104da57600080fd5b506104e3611501565b6040516104f091906145bb565b60405180910390f35b34801561050557600080fd5b50610520600480360381019061051b9190614413565b61150a565b60405161052d919061446e565b60405180910390f35b34801561054257600080fd5b5061054b6115b6565b60405161055891906145e5565b60405180910390f35b34801561056d57600080fd5b5061058860048036038101906105839190614253565b6115dc565b005b34801561059657600080fd5b5061059f611744565b6040516105ac91906144c5565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190614253565b61174a565b005b3480156105ea57600080fd5b506105f36118ad565b60405161060091906144c5565b60405180910390f35b34801561061557600080fd5b5061061e6118b3565b60405161062b91906144c5565b60405180910390f35b34801561064057600080fd5b506106496118b9565b604051610656919061446e565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190614489565b6118cc565b005b34801561069457600080fd5b506106af60048036038101906106aa9190614489565b611a16565b6040516106bc91906144c5565b60405180910390f35b3480156106d157600080fd5b506106da611a5e565b6040516106e791906144c5565b60405180910390f35b3480156106fc57600080fd5b50610705611a64565b005b34801561071357600080fd5b5061072e60048036038101906107299190614600565b611bbc565b005b34801561073c57600080fd5b5061075760048036038101906107529190614653565b611cd6565b604051610764919061446e565b60405180910390f35b34801561077957600080fd5b50610782611f8a565b60405161078f91906145e5565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190614489565b611fb4565b005b3480156107cd57600080fd5b506107e860048036038101906107e39190614253565b6120fe565b005b3480156107f657600080fd5b506107ff612261565b60405161080c9190614319565b60405180910390f35b34801561082157600080fd5b5061082a6122f3565b60405161083791906144c5565b60405180910390f35b34801561084c57600080fd5b506108556122f9565b60405161086291906144c5565b60405180910390f35b34801561087757600080fd5b506108806122ff565b60405161088d91906144c5565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b89190614413565b612305565b6040516108ca919061446e565b60405180910390f35b3480156108df57600080fd5b506108fa60048036038101906108f59190614413565b6123f0565b604051610907919061446e565b60405180910390f35b34801561091c57600080fd5b506109376004803603810190610932919061455f565b61240e565b005b34801561094557600080fd5b50610960600480360381019061095b9190614489565b612589565b60405161096d919061446e565b60405180910390f35b34801561098257600080fd5b5061098b6125a9565b60405161099891906144c5565b60405180910390f35b3480156109ad57600080fd5b506109b66125af565b6040516109c3919061446e565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee919061455f565b6125c2565b005b348015610a0157600080fd5b50610a1c6004803603810190610a179190614600565b612702565b005b348015610a2a57600080fd5b50610a3361281c565b604051610a4091906144c5565b60405180910390f35b348015610a5557600080fd5b50610a706004803603810190610a6b9190614653565b612822565b604051610a7d91906144c5565b60405180910390f35b348015610a9257600080fd5b50610a9b6128a9565b604051610aa891906144c5565b60405180910390f35b348015610abd57600080fd5b50610ac66128af565b604051610ad391906144c5565b60405180910390f35b348015610ae857600080fd5b50610b036004803603810190610afe9190614489565b6128b5565b005b348015610b1157600080fd5b50610b1a612a7b565b005b348015610b2857600080fd5b50610b31612b83565b604051610b3e91906144c5565b60405180910390f35b348015610b5357600080fd5b50610b5c612b89565b604051610b6991906144c5565b60405180910390f35b348015610b7e57600080fd5b50610b87612b8f565b604051610b9491906144c5565b60405180910390f35b610ba5612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b906146df565b60405180910390fd5b678ac7230489e80000811115610c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7690614797565b60405180910390fd5b6000600267ffffffffffffffff811115610c9c57610c9b6147b7565b5b604051908082528060200260200182016040528015610cca5781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906147fb565b81600081518110610d7257610d71614828565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610dc157610dc0614828565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b8152600401610e609493929190614950565b6000604051808303818588803b158015610e7957600080fd5b505af1158015610e8d573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051610ec191906144c5565b60405180910390a15050565b606060038054610edc906149cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610f08906149cb565b8015610f555780601f10610f2a57610100808354040283529160200191610f55565b820191906000526020600020905b815481529060010190602001808311610f3857829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f99610f92612b95565b8484612b9d565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60175481565b610fdb612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611061906146df565b60405180910390fd5b670de0b6b3a76400006103e86003611080610fc3565b61108a9190614a2b565b6110949190614ab4565b61109e9190614ab4565b8110156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790614b57565b60405180910390fd5b670de0b6b3a7640000816110f49190614a2b565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161112b91906144c5565b60405180910390a150565b61113e612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c4906146df565b60405180910390fd5b600d60149054906101000a900460ff161561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490614bc3565b60405180910390fd5b6001600d60146101000a81548160ff0219169083151502179055506001600d60156101000a81548160ff0219169083151502179055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a1565b600061128e848484612d66565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112d9612b95565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090614c55565b60405180910390fd5b61136d85611365612b95565b858403612b9d565b60019150509392505050565b611381612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906146df565b60405180910390fd5b806114a657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90614ce7565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60006115ac611517612b95565b848460016000611525612b95565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115a79190614d07565b612b9d565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6115e4612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a906146df565b60405180910390fd5b620186a06001611681610fc3565b61168b9190614a2b565b6116959190614ab4565b8110156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614dcf565b60405180910390fd5b6103e860016116e4610fc3565b6116ee9190614a2b565b6116f89190614ab4565b81111561173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190614e61565b60405180910390fd5b80600b8190555050565b60135481565b611752612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d8906146df565b60405180910390fd5b670de0b6b3a76400006103e860026117f7610fc3565b6118019190614a2b565b61180b9190614ab4565b6118159190614ab4565b811015611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90614ef3565b60405180910390fd5b670de0b6b3a76400008161186b9190614a2b565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516118a291906144c5565b60405180910390a150565b600f5481565b60125481565b600d60159054906101000a900460ff1681565b6118d4612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c990614f85565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60065481565b611a6c612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af2906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611bc4612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a906146df565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f54611c7b9190614d07565b611c859190614d07565b600e819055506014600e541115611cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc890614ff1565b60405180910390fd5b505050565b6000611ce0612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d66906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd59061505d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e43906150c9565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e8791906145e5565b602060405180830381865afa158015611ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec891906150fe565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611f0592919061512b565b6020604051808303816000875af1158015611f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f489190615169565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611f7b92919061512b565b60405180910390a15092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611fbc612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612042906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190615208565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612106612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218c906146df565b60405180910390fd5b670de0b6b3a76400006103e860026121ab610fc3565b6121b59190614a2b565b6121bf9190614ab4565b6121c99190614ab4565b81101561220b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122029061529a565b60405180910390fd5b670de0b6b3a76400008161221f9190614a2b565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161225691906144c5565b60405180910390a150565b606060048054612270906149cb565b80601f016020809104026020016040519081016040528092919081815260200182805461229c906149cb565b80156122e95780601f106122be576101008083540402835291602001916122e9565b820191906000526020600020905b8154815290600101906020018083116122cc57829003601f168201915b5050505050905090565b60115481565b60185481565b60155481565b60008060016000612314612b95565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c89061532c565b60405180910390fd5b6123e56123dc612b95565b85858403612b9d565b600191505092915050565b60006124046123fd612b95565b8484612d66565b6001905092915050565b612416612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249c906146df565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252c90615398565b60405180910390fd5b61253f82826138b0565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b601b6020528060005260406000206000915054906101000a900460ff1681565b60075481565b600d60149054906101000a900460ff1681565b6125ca612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612650906146df565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516126f6919061446e565b60405180910390a25050565b61270a612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612790906146df565b60405180910390fd5b8260138190555081601481905550806015819055506015546014546013546127c19190614d07565b6127cb9190614d07565b60128190555060196012541115612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90615404565b60405180910390fd5b505050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60105481565b6128bd612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461294c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612943906146df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b290615496565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a83612b95565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b09906146df565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b38906154e7565b60006040518083038185875af1925050503d8060008114612b75576040519150601f19603f3d011682016040523d82523d6000602084013e612b7a565b606091505b50508091505050565b60145481565b60085481565b60165481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c039061556e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7290615600565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d5991906144c5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc90615692565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3b90615724565b60405180910390fd5b60008111612e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7e90615790565b60405180910390fd5b600d60149054906101000a900460ff16612f7c57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f3c5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f72906157fc565b60405180910390fd5b5b612f84611f8a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ff25750612fc2611f8a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561302b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613065575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130bb5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131115750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ff57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131b95750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561326057600654811115613203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fa9061588e565b60405180910390fd5b60085461320f83611a16565b8261321a9190614d07565b111561325b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613252906158fa565b60405180910390fd5b6133fe565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133035750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133525760075481111561334d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133449061598c565b60405180910390fd5b6133fd565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133fc576008546133af83611a16565b826133ba9190614d07565b11156133fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f2906158fa565b60405180910390fd5b5b5b5b5b600061340a30611a16565b90506000600b54821015905080801561342f5750600d60159054906101000a900460ff165b80156134485750600a60149054906101000a900460ff16155b801561349e5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134f45750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561354a5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561358e576001600a60146101000a81548160ff02191690831515021790555061357261395b565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136355750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561363f57600090505b6000811561389c57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136a257506000601254115b15613761576064601254866136b79190614a2b565b6136c19190614ab4565b9050601254601454826136d49190614a2b565b6136de9190614ab4565b601760008282546136ef9190614d07565b92505081905550601254601354826137079190614a2b565b6137119190614ab4565b601660008282546137229190614d07565b925050819055506012546015548261373a9190614a2b565b6137449190614ab4565b601860008282546137559190614d07565b92505081905550613878565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137bc57506000600e54115b15613877576064600e54866137d19190614a2b565b6137db9190614ab4565b9050600e54601054826137ee9190614a2b565b6137f89190614ab4565b601760008282546138099190614d07565b92505081905550600e54600f54826138219190614a2b565b61382b9190614ab4565b6016600082825461383c9190614d07565b92505081905550600e54601154826138549190614a2b565b61385e9190614ab4565b6018600082825461386f9190614d07565b925050819055505b5b600081111561388d5761388c873083613bf8565b5b808561389991906159ac565b94505b6138a7878787613bf8565b50505050505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506139118282613e61565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061396630611a16565b9050600060185460165460175461397d9190614d07565b6139879190614d07565b905060008214806139985750600081145b156139a4575050613bf6565b6014600b546139b39190614a2b565b8211156139cc576014600b546139c99190614a2b565b91505b600080600283601754866139e09190614a2b565b6139ea9190614ab4565b6139f49190614ab4565b9050613a0a8185613a0591906159ac565b613ef5565b6000479050600081905060006002601754613a259190614ab4565b86613a3091906159ac565b60165484613a3e9190614a2b565b613a489190614ab4565b905060006002601754613a5b9190614ab4565b87613a6691906159ac565b60185485613a749190614a2b565b613a7e9190614ab4565b90508082613a8c9190614d07565b83613a9791906159ac565b9250600060178190555060006016819055506000601881905550600085118015613ac15750600083115b15613ad157613ad08584614138565b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b17906154e7565b60006040518083038185875af1925050503d8060008114613b54576040519150601f19603f3d011682016040523d82523d6000602084013e613b59565b606091505b505080965050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ba5906154e7565b60006040518083038185875af1925050503d8060008114613be2576040519150601f19603f3d011682016040523d82523d6000602084013e613be7565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c5e90615692565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ccd90615724565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5390615a52565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613def9190614d07565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e5391906144c5565b60405180910390a350505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613ee9929190615a72565b60405180910390a15050565b6000600267ffffffffffffffff811115613f1257613f116147b7565b5b604051908082528060200260200182016040528015613f405781602001602082028036833780820191505090505b5090503081600081518110613f5857613f57614828565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402391906147fb565b8160018151811061403757614036614828565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061409e30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b9d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614102959493929190615a9b565b600060405180830381600087803b15801561411c57600080fd5b505af1158015614130573d6000803e3d6000fd5b505050505050565b61416530600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b9d565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016141ce96959493929190615af5565b60606040518083038185885af11580156141ec573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906142119190615b56565b5050505050565b600080fd5b6000819050919050565b6142308161421d565b811461423b57600080fd5b50565b60008135905061424d81614227565b92915050565b60006020828403121561426957614268614218565b5b60006142778482850161423e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142ba57808201518184015260208101905061429f565b838111156142c9576000848401525b50505050565b6000601f19601f8301169050919050565b60006142eb82614280565b6142f5818561428b565b935061430581856020860161429c565b61430e816142cf565b840191505092915050565b6000602082019050818103600083015261433381846142e0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061438061437b6143768461433b565b61435b565b61433b565b9050919050565b600061439282614365565b9050919050565b60006143a482614387565b9050919050565b6143b481614399565b82525050565b60006020820190506143cf60008301846143ab565b92915050565b60006143e08261433b565b9050919050565b6143f0816143d5565b81146143fb57600080fd5b50565b60008135905061440d816143e7565b92915050565b6000806040838503121561442a57614429614218565b5b6000614438858286016143fe565b92505060206144498582860161423e565b9150509250929050565b60008115159050919050565b61446881614453565b82525050565b6000602082019050614483600083018461445f565b92915050565b60006020828403121561449f5761449e614218565b5b60006144ad848285016143fe565b91505092915050565b6144bf8161421d565b82525050565b60006020820190506144da60008301846144b6565b92915050565b6000806000606084860312156144f9576144f8614218565b5b6000614507868287016143fe565b9350506020614518868287016143fe565b92505060406145298682870161423e565b9150509250925092565b61453c81614453565b811461454757600080fd5b50565b60008135905061455981614533565b92915050565b6000806040838503121561457657614575614218565b5b6000614584858286016143fe565b92505060206145958582860161454a565b9150509250929050565b600060ff82169050919050565b6145b58161459f565b82525050565b60006020820190506145d060008301846145ac565b92915050565b6145df816143d5565b82525050565b60006020820190506145fa60008301846145d6565b92915050565b60008060006060848603121561461957614618614218565b5b60006146278682870161423e565b93505060206146388682870161423e565b92505060406146498682870161423e565b9150509250925092565b6000806040838503121561466a57614669614218565b5b6000614678858286016143fe565b9250506020614689858286016143fe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146c960208361428b565b91506146d482614693565b602082019050919050565b600060208201905081810360008301526146f8816146bc565b9050919050565b7f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060008201527f612073696e676c652062757920746f207265647563652073616e64776963682060208201527f61747461636b7300000000000000000000000000000000000000000000000000604082015250565b600061478160478361428b565b915061478c826146ff565b606082019050919050565b600060208201905081810360008301526147b081614774565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506147f5816143e7565b92915050565b60006020828403121561481157614810614218565b5b600061481f848285016147e6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061487c61487761487284614857565b61435b565b61421d565b9050919050565b61488c81614861565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148c7816143d5565b82525050565b60006148d983836148be565b60208301905092915050565b6000602082019050919050565b60006148fd82614892565b614907818561489d565b9350614912836148ae565b8060005b8381101561494357815161492a88826148cd565b9750614935836148e5565b925050600181019050614916565b5085935050505092915050565b60006080820190506149656000830187614883565b818103602083015261497781866148f2565b905061498660408301856145d6565b61499360608301846144b6565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806149e357607f821691505b6020821081036149f6576149f561499c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614a368261421d565b9150614a418361421d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a7a57614a796149fc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614abf8261421d565b9150614aca8361421d565b925082614ada57614ad9614a85565b5b828204905092915050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614b41602c8361428b565b9150614b4c82614ae5565b604082019050919050565b60006020820190508181036000830152614b7081614b34565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614bad60178361428b565b9150614bb882614b77565b602082019050919050565b60006020820190508181036000830152614bdc81614ba0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614c3f60288361428b565b9150614c4a82614be3565b604082019050919050565b60006020820190508181036000830152614c6e81614c32565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614cd160278361428b565b9150614cdc82614c75565b604082019050919050565b60006020820190508181036000830152614d0081614cc4565b9050919050565b6000614d128261421d565b9150614d1d8361421d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d5257614d516149fc565b5b828201905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614db960358361428b565b9150614dc482614d5d565b604082019050919050565b60006020820190508181036000830152614de881614dac565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614e4b60348361428b565b9150614e5682614def565b604082019050919050565b60006020820190508181036000830152614e7a81614e3e565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b6000614edd60298361428b565b9150614ee882614e81565b604082019050919050565b60006020820190508181036000830152614f0c81614ed0565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614f6f60268361428b565b9150614f7a82614f13565b604082019050919050565b60006020820190508181036000830152614f9e81614f62565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614fdb601d8361428b565b9150614fe682614fa5565b602082019050919050565b6000602082019050818103600083015261500a81614fce565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000615047601a8361428b565b915061505282615011565b602082019050919050565b600060208201905081810360008301526150768161503a565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006150b3601c8361428b565b91506150be8261507d565b602082019050919050565b600060208201905081810360008301526150e2816150a6565b9050919050565b6000815190506150f881614227565b92915050565b60006020828403121561511457615113614218565b5b6000615122848285016150e9565b91505092915050565b600060408201905061514060008301856145d6565b61514d60208301846144b6565b9392505050565b60008151905061516381614533565b92915050565b60006020828403121561517f5761517e614218565b5b600061518d84828501615154565b91505092915050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b60006151f260258361428b565b91506151fd82615196565b604082019050919050565b60006020820190508181036000830152615221816151e5565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b6000615284602a8361428b565b915061528f82615228565b604082019050919050565b600060208201905081810360008301526152b381615277565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061531660258361428b565b9150615321826152ba565b604082019050919050565b6000602082019050818103600083015261534581615309565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f766564000000000000600082015250565b6000615382601a8361428b565b915061538d8261534c565b602082019050919050565b600060208201905081810360008301526153b181615375565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006153ee601d8361428b565b91506153f9826153b8565b602082019050919050565b6000602082019050818103600083015261541d816153e1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061548060268361428b565b915061548b82615424565b604082019050919050565b600060208201905081810360008301526154af81615473565b9050919050565b600081905092915050565b50565b60006154d16000836154b6565b91506154dc826154c1565b600082019050919050565b60006154f2826154c4565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061555860248361428b565b9150615563826154fc565b604082019050919050565b600060208201905081810360008301526155878161554b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006155ea60228361428b565b91506155f58261558e565b604082019050919050565b60006020820190508181036000830152615619816155dd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061567c60258361428b565b915061568782615620565b604082019050919050565b600060208201905081810360008301526156ab8161566f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061570e60238361428b565b9150615719826156b2565b604082019050919050565b6000602082019050818103600083015261573d81615701565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061577a601d8361428b565b915061578582615744565b602082019050919050565b600060208201905081810360008301526157a98161576d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006157e660168361428b565b91506157f1826157b0565b602082019050919050565b60006020820190508181036000830152615815816157d9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b600061587860288361428b565b91506158838261581c565b604082019050919050565b600060208201905081810360008301526158a78161586b565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006158e460188361428b565b91506158ef826158ae565b602082019050919050565b60006020820190508181036000830152615913816158d7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615976602a8361428b565b91506159818261591a565b604082019050919050565b600060208201905081810360008301526159a581615969565b9050919050565b60006159b78261421d565b91506159c28361421d565b9250828210156159d5576159d46149fc565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615a3c60268361428b565b9150615a47826159e0565b604082019050919050565b60006020820190508181036000830152615a6b81615a2f565b9050919050565b6000604082019050615a8760008301856145d6565b615a94602083018461445f565b9392505050565b600060a082019050615ab060008301886144b6565b615abd6020830187614883565b8181036040830152615acf81866148f2565b9050615ade60608301856145d6565b615aeb60808301846144b6565b9695505050505050565b600060c082019050615b0a60008301896145d6565b615b1760208301886144b6565b615b246040830187614883565b615b316060830186614883565b615b3e60808301856145d6565b615b4b60a08301846144b6565b979650505050505050565b600080600060608486031215615b6f57615b6e614218565b5b6000615b7d868287016150e9565b9350506020615b8e868287016150e9565b9250506040615b9f868287016150e9565b915050925092509256fea2646970667358221220d4ff44ec4824c7a6c2bf3d1c817cf8ef27d738d8fda7390bfc6ff58d07723ba264736f6c634300080f0033

Deployed Bytecode Sourcemap

8024:14307:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21718:610;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1913:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8156:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2827:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8995:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2234:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8774:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12353:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11628:192;;;;;;;;;;;;;:::i;:::-;;3004:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13192:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2133:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3504:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8190:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12627:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8616:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11830:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8467:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8581:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8389:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21166:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2350:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8066:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6548:150;;;;;;;;;;;;;:::i;:::-;;13944:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20534:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6334:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21404:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12089:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2021:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8542:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8814:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8693:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3727:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2485:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13449:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9217:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8094:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8349:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14715:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14325:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8433:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2668:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8248:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8505:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6706:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20998:160;;;;;;;;;;;;;:::i;:::-;;8655:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8123:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8733:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21718:610;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21809:8:::1;21794:11;:23;;21786:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;21906:21;21944:1;21930:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21906:40;;21967:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21957:4;21962:1;21957:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;::::0;::::1;22012:4;21994;21999:1;21994:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22056:9;;;;;;;;;;;:60;;;22124:11;22151:1;22200:4;22227:6;22249:15;22056:219;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;22291:29;22308:11;22291:29;;;;;;:::i;:::-;;;;;;;;21775:553;21718:610:::0;:::o;1913:100::-;1967:13;2000:5;1993:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1913:100;:::o;8156:27::-;;;;;;;;;;;;;:::o;2827:169::-;2910:4;2927:39;2936:12;:10;:12::i;:::-;2950:7;2959:6;2927:8;:39::i;:::-;2984:4;2977:11;;2827:169;;;;:::o;8995:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;2234:108::-;2295:7;2322:12;;2315:19;;2234:108;:::o;8774:33::-;;;;:::o;12353:266::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12469:4:::1;12463;12459:1;12443:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12442:31;;;;:::i;:::-;12432:6;:41;;12424:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12555:6;12545;:17;;;;:::i;:::-;12533:9;:29;;;;12578:33;12601:9;;12578:33;;;;;;:::i;:::-;;;;;;;;12353:266:::0;:::o;11628:192::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11685:13:::1;;;;;;;;;;;11684:14;11676:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11753:4;11737:13;;:20;;;;;;;;;;;;;;;;;;11782:4;11768:11;;:18;;;;;;;;;;;;;;;;;;11802:10;;;;;;;;;;11628:192::o:0;3004:492::-;3144:4;3161:36;3171:6;3179:9;3190:6;3161:9;:36::i;:::-;3210:24;3237:11;:19;3249:6;3237:19;;;;;;;;;;;;;;;:33;3257:12;:10;:12::i;:::-;3237:33;;;;;;;;;;;;;;;;3210:60;;3309:6;3289:16;:26;;3281:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3396:57;3405:6;3413:12;:10;:12::i;:::-;3446:6;3427:16;:25;3396:8;:57::i;:::-;3484:4;3477:11;;;3004:492;;;;;:::o;13192:249::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13277:4:::1;13273:104;;13315:6;;;;;;;;;;;13305:16;;:6;:16;;::::0;13297:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13273:104;13429:4;13387:31;:39;13419:6;13387:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;13192:249:::0;;:::o;2133:93::-;2191:5;2216:2;2209:9;;2133:93;:::o;3504:215::-;3592:4;3609:80;3618:12;:10;:12::i;:::-;3632:7;3678:10;3641:11;:25;3653:12;:10;:12::i;:::-;3641:25;;;;;;;;;;;;;;;:34;3667:7;3641:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3609:8;:80::i;:::-;3707:4;3700:11;;3504:215;;;;:::o;8190:21::-;;;;;;;;;;;;;:::o;12627:342::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12743:6:::1;12739:1;12723:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;12710:9;:39;;12702:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;12859:4;12855:1;12839:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12826:9;:37;;12818:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12952:9;12931:18;:30;;;;12627:342:::0;:::o;8616:32::-;;;;:::o;11830:251::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11943:4:::1;11937;11933:1;11917:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11916:31;;;;:::i;:::-;11906:6;:41;;11898:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;12023:6;12013;:17;;;;:::i;:::-;12004:6;:26;;;;12046:27;12066:6;;12046:27;;;;;;:::i;:::-;;;;;;;;11830:251:::0;:::o;8467:31::-;;;;:::o;8581:28::-;;;;:::o;8389:31::-;;;;;;;;;;;;;:::o;21166:230::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21285:1:::1;21255:32;;:18;:32;;::::0;21247:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21369:18;21341:17;;:47;;;;;;;;;;;;;;;;;;21166:230:::0;:::o;2350:127::-;2424:7;2451:9;:18;2461:7;2451:18;;;;;;;;;;;;;;;;2444:25;;2350:127;;;:::o;8066:21::-;;;;:::o;6548:150::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6657:1:::1;6620:40;;6641:6;;;;;;;;;;;6620:40;;;;;;;;;;;;6688:1;6671:6;;:19;;;;;;;;;;;;;;;;;;6548:150::o:0;13944:373::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14080:14:::1;14061:16;:33;;;;14123:13;14105:15;:31;;;;14159:7;14147:9;:19;;;;14229:9;;14211:15;;14192:16;;:34;;;;:::i;:::-;:46;;;;:::i;:::-;14177:12;:61;;;;14273:2;14257:12;;:18;;14249:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13944:373:::0;;;:::o;20534:456::-;20621:10;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20670:1:::1;20652:20;;:6;:20;;::::0;20644:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20740:4;20722:23;;:6;:23;;::::0;20714:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20789:24;20823:6;20816:24;;;20849:4;20816:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20789:66;;20881:6;20874:23;;;20898:3;20903:16;20874:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20866:54;;20936:46;20957:6;20965:16;20936:46;;;;;;;:::i;:::-;;;;;;;;20633:357;20534:456:::0;;;;:::o;6334:79::-;6372:7;6399:6;;;;;;;;;;;6392:13;;6334:79;:::o;21404:207::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21515:1:::1;21492:25;;:11;:25;;::::0;21484:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21591:11;21570:10;;:33;;;;;;;;;;;;;;;;;;21404:207:::0;:::o;12089:256::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12203:4:::1;12197;12193:1;12177:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12176:31;;;;:::i;:::-;12166:6;:41;;12158:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;12285:6;12275;:17;;;;:::i;:::-;12265:7;:27;;;;12308:29;12329:7;;12308:29;;;;;;:::i;:::-;;;;;;;;12089:256:::0;:::o;2021:104::-;2077:13;2110:7;2103:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:104;:::o;8542:24::-;;;;:::o;8814:27::-;;;;:::o;8693:25::-;;;;:::o;3727:413::-;3820:4;3837:24;3864:11;:25;3876:12;:10;:12::i;:::-;3864:25;;;;;;;;;;;;;;;:34;3890:7;3864:34;;;;;;;;;;;;;;;;3837:61;;3937:15;3917:16;:35;;3909:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4030:67;4039:12;:10;:12::i;:::-;4053:7;4081:15;4062:16;:34;4030:8;:67::i;:::-;4128:4;4121:11;;;3727:413;;;;:::o;2485:175::-;2571:4;2588:42;2598:12;:10;:12::i;:::-;2612:9;2623:6;2588:9;:42::i;:::-;2648:4;2641:11;;2485:175;;;;:::o;13449:243::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13537:6:::1;;;;;;;;;;;13529:14;;:4;:14;;::::0;13521:53:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13587:41;13616:4;13622:5;13587:28;:41::i;:::-;13678:5;13644:40;;13672:4;13644:40;;;;;;;;;;;;13449:243:::0;;:::o;9217:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;8094:22::-;;;;:::o;8349:33::-;;;;;;;;;;;;;:::o;14715:182::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14831:8:::1;14800:19;:28;14820:7;14800:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14871:7;14855:34;;;14880:8;14855:34;;;;;;:::i;:::-;;;;;;;;14715:182:::0;;:::o;14325:382::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14463:14:::1;14443:17;:34;;;;14507:13;14488:16;:32;;;;14544:7;14531:10;:20;;;;14617:10;;14598:16;;14578:17;;:36;;;;:::i;:::-;:49;;;;:::i;:::-;14562:13;:65;;;;14663:2;14646:13;;:19;;14638:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14325:382:::0;;;:::o;8433:27::-;;;;:::o;2668:151::-;2757:7;2784:11;:18;2796:5;2784:18;;;;;;;;;;;;;;;:27;2803:7;2784:27;;;;;;;;;;;;;;;;2777:34;;2668:151;;;;:::o;8248:33::-;;;;:::o;8505:30::-;;;;:::o;6706:244::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6815:1:::1;6795:22;;:8;:22;;::::0;6787:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6905:8;6876:38;;6897:6;;;;;;;;;;;6876:38;;;;;;;;;;;;6934:8;6925:6;;:17;;;;;;;;;;;;;;;;;;6706:244:::0;:::o;20998:160::-;6471:12;:10;:12::i;:::-;6461:22;;:6;;;;;;;;;;;:22;;;6453:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21056:12:::1;21100:10;21092:24;;21124:21;21092:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21079:71;;;;;21045:113;20998:160::o:0;8655:31::-;;;;:::o;8123:24::-;;;;:::o;8733:34::-;;;;:::o;219:98::-;272:7;299:10;292:17;;219:98;:::o;5627:380::-;5780:1;5763:19;;:5;:19;;;5755:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5861:1;5842:21;;:7;:21;;;5834:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5945:6;5915:11;:18;5927:5;5915:18;;;;;;;;;;;;;;;:27;5934:7;5915:27;;;;;;;;;;;;;;;:36;;;;5983:7;5967:32;;5976:5;5967:32;;;5992:6;5967:32;;;;;;:::i;:::-;;;;;;;;5627:380;;;:::o;14905:3114::-;15021:1;15005:18;;:4;:18;;;14997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15098:1;15084:16;;:2;:16;;;15076:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15168:1;15159:6;:10;15151:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15220:13;;;;;;;;;;;15216:132;;15257:19;:25;15277:4;15257:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15286:19;:23;15306:2;15286:23;;;;;;;;;;;;;;;;;;;;;;;;;15257:52;15249:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;15216:132;15379:7;:5;:7::i;:::-;15371:15;;:4;:15;;;;:32;;;;;15396:7;:5;:7::i;:::-;15390:13;;:2;:13;;;;15371:32;:52;;;;;15421:1;15407:16;;:2;:16;;;;15371:52;:77;;;;;15441:6;15427:21;;:2;:21;;;;15371:77;:107;;;;;15453:19;:25;15473:4;15453:25;;;;;;;;;;;;;;;;;;;;;;;;;15452:26;15371:107;:135;;;;;15483:19;:23;15503:2;15483:23;;;;;;;;;;;;;;;;;;;;;;;;;15482:24;15371:135;15367:929;;;15570:25;:31;15596:4;15570:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15606:31;:35;15638:2;15606:35;;;;;;;;;;;;;;;;;;;;;;;;;15605:36;15570:71;15566:719;;;15688:6;;15678;:16;;15670:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;15800:9;;15783:13;15793:2;15783:9;:13::i;:::-;15774:6;:22;;;;:::i;:::-;:35;;15766:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15566:719;;;15914:25;:29;15940:2;15914:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15948:31;:37;15980:4;15948:37;;;;;;;;;;;;;;;;;;;;;;;;;15947:38;15914:71;15910:375;;;16032:7;;16022:6;:17;;16014:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15910:375;;;16134:31;:35;16166:2;16134:35;;;;;;;;;;;;;;;;;;;;;;;;;16129:156;;16227:9;;16210:13;16220:2;16210:9;:13::i;:::-;16201:6;:22;;;;:::i;:::-;:35;;16193:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16129:156;15910:375;15566:719;15367:929;16318:28;16349:24;16367:4;16349:9;:24::i;:::-;16318:55;;16386:12;16425:18;;16401:20;:42;;16386:57;;16459:7;:22;;;;;16470:11;;;;;;;;;;;16459:22;:35;;;;;16486:8;;;;;;;;;;;16485:9;16459:35;:71;;;;;16499:25;:31;16525:4;16499:31;;;;;;;;;;;;;;;;;;;;;;;;;16498:32;16459:71;:101;;;;;16535:19;:25;16555:4;16535:25;;;;;;;;;;;;;;;;;;;;;;;;;16534:26;16459:101;:129;;;;;16565:19;:23;16585:2;16565:23;;;;;;;;;;;;;;;;;;;;;;;;;16564:24;16459:129;16456:236;;;16616:4;16605:8;;:15;;;;;;;;;;;;;;;;;;16637:10;:8;:10::i;:::-;16675:5;16664:8;;:16;;;;;;;;;;;;;;;;;;16456:236;16704:12;16719:4;16704:19;;16822;:25;16842:4;16822:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16851:19;:23;16871:2;16851:23;;;;;;;;;;;;;;;;;;;;;;;;;16822:52;16819:99;;;16901:5;16891:15;;16819:99;16930:12;17034:7;17031:935;;;17075:25;:29;17101:2;17075:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;17124:1;17108:13;;:17;17075:50;17071:748;;;17177:3;17161:13;;17152:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;17145:35;;17247:13;;17228:16;;17221:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17199:18;;:61;;;;;;;:::i;:::-;;;;;;;;17329:13;;17309:17;;17302:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;17279:19;;:63;;;;;;;:::i;:::-;;;;;;;;17397:13;;17384:10;;17377:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;17361:12;;:49;;;;;;;:::i;:::-;;;;;;;;17071:748;;;17473:25;:31;17499:4;17473:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17523:1;17508:12;;:16;17473:51;17470:349;;;17576:3;17561:12;;17552:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17545:34;;17645:12;;17627:15;;17620:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17598:18;;:59;;;;;;;:::i;:::-;;;;;;;;17725:12;;17706:16;;17699:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;17676:19;;:61;;;;;;;:::i;:::-;;;;;;;;17791:12;;17779:9;;17772:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;17756:12;;:47;;;;;;;:::i;:::-;;;;;;;;17470:349;17071:748;17845:1;17838:4;:8;17835:89;;;17866:42;17882:4;17896;17903;17866:15;:42::i;:::-;17835:89;17950:4;17940:14;;;;;:::i;:::-;;;17031:935;17978:33;17994:4;18000:2;18004:6;17978:15;:33::i;:::-;14984:3035;;;;14905:3114;;;:::o;13700:236::-;13817:5;13783:25;:31;13809:4;13783:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13833;13860:4;13866:5;13833:26;:39::i;:::-;13922:5;13888:40;;13916:4;13888:40;;;;;;;;;;;;13700:236;;:::o;19125:1401::-;19166:23;19192:24;19210:4;19192:9;:24::i;:::-;19166:50;;19227:25;19298:12;;19276:19;;19255:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;19227:83;;19345:1;19326:15;:20;:46;;;;19371:1;19350:17;:22;19326:46;19323:60;;;19375:7;;;;19323:60;19437:2;19416:18;;:23;;;;:::i;:::-;19398:15;:41;19395:113;;;19494:2;19473:18;;:23;;;;:::i;:::-;19455:41;;19395:113;19520:12;19594:23;19679:1;19659:17;19638:18;;19620:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;19594:86;;19693:51;19728:15;19710;:33;;;;:::i;:::-;19693:16;:51::i;:::-;19757:18;19778:21;19757:42;;19810:23;19836:10;19810:36;;19859:24;19962:1;19943:18;;:20;;;;:::i;:::-;19922:17;:42;;;;:::i;:::-;19899:19;;19886:10;:32;;;;:::i;:::-;:79;;;;:::i;:::-;19859:106;;19976:17;20065:1;20046:18;;:20;;;;:::i;:::-;20025:17;:42;;;;:::i;:::-;20009:12;;19996:10;:25;;;;:::i;:::-;:72;;;;:::i;:::-;19976:92;;20119:9;20100:16;:28;;;;:::i;:::-;20081:47;;;;;:::i;:::-;;;20162:1;20141:18;:22;;;;20196:1;20174:19;:23;;;;20223:1;20208:12;:16;;;;20258:1;20240:15;:19;:42;;;;;20281:1;20263:15;:19;20240:42;20237:119;;;20298:46;20311:15;20328;20298:12;:46::i;:::-;20237:119;20389:10;;;;;;;;;;;20381:24;;20413:9;20381:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20368:59;;;;;20461:17;;;;;;;;;;;20453:31;;20492:21;20453:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20440:78;;;;;19153:1373;;;;;;;;19125:1401;:::o;4148:614::-;4306:1;4288:20;;:6;:20;;;4280:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4390:1;4369:23;;:9;:23;;;4361:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4445:21;4469:9;:17;4479:6;4469:17;;;;;;;;;;;;;;;;4445:41;;4522:6;4505:13;:23;;4497:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4643:6;4627:13;:22;4607:9;:17;4617:6;4607:17;;;;;;;;;;;;;;;:42;;;;4695:6;4671:9;:20;4681:9;4671:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4736:9;4719:35;;4728:6;4719:35;;;4747:6;4719:35;;;;;;:::i;:::-;;;;;;;;4269:493;4148:614;;;:::o;12977:207::-;13107:10;13065:31;:39;13097:6;13065:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;13133:43;13157:6;13165:10;13133:43;;;;;;;:::i;:::-;;;;;;;;12977:207;;:::o;18027:573::-;18155:21;18193:1;18179:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18155:40;;18224:4;18206;18211:1;18206:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18250:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18240:4;18245:1;18240:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;18279:56;18296:4;18311:9;;;;;;;;;;;18323:11;18279:8;:56::i;:::-;18374:9;;;;;;;;;;;:60;;;18449:11;18475:1;18519:4;18546;18566:15;18374:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18082:518;18027:573;:::o;18608:509::-;18756:56;18773:4;18788:9;;;;;;;;;;;18800:11;18756:8;:56::i;:::-;18855:9;;;;;;;;;;;:25;;;18888:9;18921:4;18941:11;18967:1;19010;19061:6;19083:15;18855:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18608:509;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:60::-;2575:3;2596:5;2589:12;;2547:60;;;:::o;2613:142::-;2663:9;2696:53;2714:34;2723:24;2741:5;2723:24;:::i;:::-;2714:34;:::i;:::-;2696:53;:::i;:::-;2683:66;;2613:142;;;:::o;2761:126::-;2811:9;2844:37;2875:5;2844:37;:::i;:::-;2831:50;;2761:126;;;:::o;2893:144::-;2961:9;2994:37;3025:5;2994:37;:::i;:::-;2981:50;;2893:144;;;:::o;3043:167::-;3148:55;3197:5;3148:55;:::i;:::-;3143:3;3136:68;3043:167;;:::o;3216:258::-;3327:4;3365:2;3354:9;3350:18;3342:26;;3378:89;3464:1;3453:9;3449:17;3440:6;3378:89;:::i;:::-;3216:258;;;;:::o;3480:96::-;3517:7;3546:24;3564:5;3546:24;:::i;:::-;3535:35;;3480:96;;;:::o;3582:122::-;3655:24;3673:5;3655:24;:::i;:::-;3648:5;3645:35;3635:63;;3694:1;3691;3684:12;3635:63;3582:122;:::o;3710:139::-;3756:5;3794:6;3781:20;3772:29;;3810:33;3837:5;3810:33;:::i;:::-;3710:139;;;;:::o;3855:474::-;3923:6;3931;3980:2;3968:9;3959:7;3955:23;3951:32;3948:119;;;3986:79;;:::i;:::-;3948:119;4106:1;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;:::i;:::-;4121:63;;4077:117;4233:2;4259:53;4304:7;4295:6;4284:9;4280:22;4259:53;:::i;:::-;4249:63;;4204:118;3855:474;;;;;:::o;4335:90::-;4369:7;4412:5;4405:13;4398:21;4387:32;;4335:90;;;:::o;4431:109::-;4512:21;4527:5;4512:21;:::i;:::-;4507:3;4500:34;4431:109;;:::o;4546:210::-;4633:4;4671:2;4660:9;4656:18;4648:26;;4684:65;4746:1;4735:9;4731:17;4722:6;4684:65;:::i;:::-;4546:210;;;;:::o;4762:329::-;4821:6;4870:2;4858:9;4849:7;4845:23;4841:32;4838:119;;;4876:79;;:::i;:::-;4838:119;4996:1;5021:53;5066:7;5057:6;5046:9;5042:22;5021:53;:::i;:::-;5011:63;;4967:117;4762:329;;;;:::o;5097:118::-;5184:24;5202:5;5184:24;:::i;:::-;5179:3;5172:37;5097:118;;:::o;5221:222::-;5314:4;5352:2;5341:9;5337:18;5329:26;;5365:71;5433:1;5422:9;5418:17;5409:6;5365:71;:::i;:::-;5221:222;;;;:::o;5449:619::-;5526:6;5534;5542;5591:2;5579:9;5570:7;5566:23;5562:32;5559:119;;;5597:79;;:::i;:::-;5559:119;5717:1;5742:53;5787:7;5778:6;5767:9;5763:22;5742:53;:::i;:::-;5732:63;;5688:117;5844:2;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5815:118;5972:2;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5943:118;5449:619;;;;;:::o;6074:116::-;6144:21;6159:5;6144:21;:::i;:::-;6137:5;6134:32;6124:60;;6180:1;6177;6170:12;6124:60;6074:116;:::o;6196:133::-;6239:5;6277:6;6264:20;6255:29;;6293:30;6317:5;6293:30;:::i;:::-;6196:133;;;;:::o;6335:468::-;6400:6;6408;6457:2;6445:9;6436:7;6432:23;6428:32;6425:119;;;6463:79;;:::i;:::-;6425:119;6583:1;6608:53;6653:7;6644:6;6633:9;6629:22;6608:53;:::i;:::-;6598:63;;6554:117;6710:2;6736:50;6778:7;6769:6;6758:9;6754:22;6736:50;:::i;:::-;6726:60;;6681:115;6335:468;;;;;:::o;6809:86::-;6844:7;6884:4;6877:5;6873:16;6862:27;;6809:86;;;:::o;6901:112::-;6984:22;7000:5;6984:22;:::i;:::-;6979:3;6972:35;6901:112;;:::o;7019:214::-;7108:4;7146:2;7135:9;7131:18;7123:26;;7159:67;7223:1;7212:9;7208:17;7199:6;7159:67;:::i;:::-;7019:214;;;;:::o;7239:118::-;7326:24;7344:5;7326:24;:::i;:::-;7321:3;7314:37;7239:118;;:::o;7363:222::-;7456:4;7494:2;7483:9;7479:18;7471:26;;7507:71;7575:1;7564:9;7560:17;7551:6;7507:71;:::i;:::-;7363:222;;;;:::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:182::-;8836:34;8832:1;8824:6;8820:14;8813:58;8696:182;:::o;8884:366::-;9026:3;9047:67;9111:2;9106:3;9047:67;:::i;:::-;9040:74;;9123:93;9212:3;9123:93;:::i;:::-;9241:2;9236:3;9232:12;9225:19;;8884:366;;;:::o;9256:419::-;9422:4;9460:2;9449:9;9445:18;9437:26;;9509:9;9503:4;9499:20;9495:1;9484:9;9480:17;9473:47;9537:131;9663:4;9537:131;:::i;:::-;9529:139;;9256:419;;;:::o;9681:295::-;9821:34;9817:1;9809:6;9805:14;9798:58;9890:34;9885:2;9877:6;9873:15;9866:59;9959:9;9954:2;9946:6;9942:15;9935:34;9681:295;:::o;9982:366::-;10124:3;10145:67;10209:2;10204:3;10145:67;:::i;:::-;10138:74;;10221:93;10310:3;10221:93;:::i;:::-;10339:2;10334:3;10330:12;10323:19;;9982:366;;;:::o;10354:419::-;10520:4;10558:2;10547:9;10543:18;10535:26;;10607:9;10601:4;10597:20;10593:1;10582:9;10578:17;10571:47;10635:131;10761:4;10635:131;:::i;:::-;10627:139;;10354:419;;;:::o;10779:180::-;10827:77;10824:1;10817:88;10924:4;10921:1;10914:15;10948:4;10945:1;10938:15;10965:143;11022:5;11053:6;11047:13;11038:22;;11069:33;11096:5;11069:33;:::i;:::-;10965:143;;;;:::o;11114:351::-;11184:6;11233:2;11221:9;11212:7;11208:23;11204:32;11201:119;;;11239:79;;:::i;:::-;11201:119;11359:1;11384:64;11440:7;11431:6;11420:9;11416:22;11384:64;:::i;:::-;11374:74;;11330:128;11114:351;;;;:::o;11471:180::-;11519:77;11516:1;11509:88;11616:4;11613:1;11606:15;11640:4;11637:1;11630:15;11657:85;11702:7;11731:5;11720:16;;11657:85;;;:::o;11748:158::-;11806:9;11839:61;11857:42;11866:32;11892:5;11866:32;:::i;:::-;11857:42;:::i;:::-;11839:61;:::i;:::-;11826:74;;11748:158;;;:::o;11912:147::-;12007:45;12046:5;12007:45;:::i;:::-;12002:3;11995:58;11912:147;;:::o;12065:114::-;12132:6;12166:5;12160:12;12150:22;;12065:114;;;:::o;12185:184::-;12284:11;12318:6;12313:3;12306:19;12358:4;12353:3;12349:14;12334:29;;12185:184;;;;:::o;12375:132::-;12442:4;12465:3;12457:11;;12495:4;12490:3;12486:14;12478:22;;12375:132;;;:::o;12513:108::-;12590:24;12608:5;12590:24;:::i;:::-;12585:3;12578:37;12513:108;;:::o;12627:179::-;12696:10;12717:46;12759:3;12751:6;12717:46;:::i;:::-;12795:4;12790:3;12786:14;12772:28;;12627:179;;;;:::o;12812:113::-;12882:4;12914;12909:3;12905:14;12897:22;;12812:113;;;:::o;12961:732::-;13080:3;13109:54;13157:5;13109:54;:::i;:::-;13179:86;13258:6;13253:3;13179:86;:::i;:::-;13172:93;;13289:56;13339:5;13289:56;:::i;:::-;13368:7;13399:1;13384:284;13409:6;13406:1;13403:13;13384:284;;;13485:6;13479:13;13512:63;13571:3;13556:13;13512:63;:::i;:::-;13505:70;;13598:60;13651:6;13598:60;:::i;:::-;13588:70;;13444:224;13431:1;13428;13424:9;13419:14;;13384:284;;;13388:14;13684:3;13677:10;;13085:608;;;12961:732;;;;:::o;13699:720::-;13934:4;13972:3;13961:9;13957:19;13949:27;;13986:79;14062:1;14051:9;14047:17;14038:6;13986:79;:::i;:::-;14112:9;14106:4;14102:20;14097:2;14086:9;14082:18;14075:48;14140:108;14243:4;14234:6;14140:108;:::i;:::-;14132:116;;14258:72;14326:2;14315:9;14311:18;14302:6;14258:72;:::i;:::-;14340;14408:2;14397:9;14393:18;14384:6;14340:72;:::i;:::-;13699:720;;;;;;;:::o;14425:180::-;14473:77;14470:1;14463:88;14570:4;14567:1;14560:15;14594:4;14591:1;14584:15;14611:320;14655:6;14692:1;14686:4;14682:12;14672:22;;14739:1;14733:4;14729:12;14760:18;14750:81;;14816:4;14808:6;14804:17;14794:27;;14750:81;14878:2;14870:6;14867:14;14847:18;14844:38;14841:84;;14897:18;;:::i;:::-;14841:84;14662:269;14611:320;;;:::o;14937:180::-;14985:77;14982:1;14975:88;15082:4;15079:1;15072:15;15106:4;15103:1;15096:15;15123:348;15163:7;15186:20;15204:1;15186:20;:::i;:::-;15181:25;;15220:20;15238:1;15220:20;:::i;:::-;15215:25;;15408:1;15340:66;15336:74;15333:1;15330:81;15325:1;15318:9;15311:17;15307:105;15304:131;;;15415:18;;:::i;:::-;15304:131;15463:1;15460;15456:9;15445:20;;15123:348;;;;:::o;15477:180::-;15525:77;15522:1;15515:88;15622:4;15619:1;15612:15;15646:4;15643:1;15636:15;15663:185;15703:1;15720:20;15738:1;15720:20;:::i;:::-;15715:25;;15754:20;15772:1;15754:20;:::i;:::-;15749:25;;15793:1;15783:35;;15798:18;;:::i;:::-;15783:35;15840:1;15837;15833:9;15828:14;;15663:185;;;;:::o;15854:231::-;15994:34;15990:1;15982:6;15978:14;15971:58;16063:14;16058:2;16050:6;16046:15;16039:39;15854:231;:::o;16091:366::-;16233:3;16254:67;16318:2;16313:3;16254:67;:::i;:::-;16247:74;;16330:93;16419:3;16330:93;:::i;:::-;16448:2;16443:3;16439:12;16432:19;;16091:366;;;:::o;16463:419::-;16629:4;16667:2;16656:9;16652:18;16644:26;;16716:9;16710:4;16706:20;16702:1;16691:9;16687:17;16680:47;16744:131;16870:4;16744:131;:::i;:::-;16736:139;;16463:419;;;:::o;16888:173::-;17028:25;17024:1;17016:6;17012:14;17005:49;16888:173;:::o;17067:366::-;17209:3;17230:67;17294:2;17289:3;17230:67;:::i;:::-;17223:74;;17306:93;17395:3;17306:93;:::i;:::-;17424:2;17419:3;17415:12;17408:19;;17067:366;;;:::o;17439:419::-;17605:4;17643:2;17632:9;17628:18;17620:26;;17692:9;17686:4;17682:20;17678:1;17667:9;17663:17;17656:47;17720:131;17846:4;17720:131;:::i;:::-;17712:139;;17439:419;;;:::o;17864:227::-;18004:34;18000:1;17992:6;17988:14;17981:58;18073:10;18068:2;18060:6;18056:15;18049:35;17864:227;:::o;18097:366::-;18239:3;18260:67;18324:2;18319:3;18260:67;:::i;:::-;18253:74;;18336:93;18425:3;18336:93;:::i;:::-;18454:2;18449:3;18445:12;18438:19;;18097:366;;;:::o;18469:419::-;18635:4;18673:2;18662:9;18658:18;18650:26;;18722:9;18716:4;18712:20;18708:1;18697:9;18693:17;18686:47;18750:131;18876:4;18750:131;:::i;:::-;18742:139;;18469:419;;;:::o;18894:226::-;19034:34;19030:1;19022:6;19018:14;19011:58;19103:9;19098:2;19090:6;19086:15;19079:34;18894:226;:::o;19126:366::-;19268:3;19289:67;19353:2;19348:3;19289:67;:::i;:::-;19282:74;;19365:93;19454:3;19365:93;:::i;:::-;19483:2;19478:3;19474:12;19467:19;;19126:366;;;:::o;19498:419::-;19664:4;19702:2;19691:9;19687:18;19679:26;;19751:9;19745:4;19741:20;19737:1;19726:9;19722:17;19715:47;19779:131;19905:4;19779:131;:::i;:::-;19771:139;;19498:419;;;:::o;19923:305::-;19963:3;19982:20;20000:1;19982:20;:::i;:::-;19977:25;;20016:20;20034:1;20016:20;:::i;:::-;20011:25;;20170:1;20102:66;20098:74;20095:1;20092:81;20089:107;;;20176:18;;:::i;:::-;20089:107;20220:1;20217;20213:9;20206:16;;19923:305;;;;:::o;20234:240::-;20374:34;20370:1;20362:6;20358:14;20351:58;20443:23;20438:2;20430:6;20426:15;20419:48;20234:240;:::o;20480:366::-;20622:3;20643:67;20707:2;20702:3;20643:67;:::i;:::-;20636:74;;20719:93;20808:3;20719:93;:::i;:::-;20837:2;20832:3;20828:12;20821:19;;20480:366;;;:::o;20852:419::-;21018:4;21056:2;21045:9;21041:18;21033:26;;21105:9;21099:4;21095:20;21091:1;21080:9;21076:17;21069:47;21133:131;21259:4;21133:131;:::i;:::-;21125:139;;20852:419;;;:::o;21277:239::-;21417:34;21413:1;21405:6;21401:14;21394:58;21486:22;21481:2;21473:6;21469:15;21462:47;21277:239;:::o;21522:366::-;21664:3;21685:67;21749:2;21744:3;21685:67;:::i;:::-;21678:74;;21761:93;21850:3;21761:93;:::i;:::-;21879:2;21874:3;21870:12;21863:19;;21522:366;;;:::o;21894:419::-;22060:4;22098:2;22087:9;22083:18;22075:26;;22147:9;22141:4;22137:20;22133:1;22122:9;22118:17;22111:47;22175:131;22301:4;22175:131;:::i;:::-;22167:139;;21894:419;;;:::o;22319:228::-;22459:34;22455:1;22447:6;22443:14;22436:58;22528:11;22523:2;22515:6;22511:15;22504:36;22319:228;:::o;22553:366::-;22695:3;22716:67;22780:2;22775:3;22716:67;:::i;:::-;22709:74;;22792:93;22881:3;22792:93;:::i;:::-;22910:2;22905:3;22901:12;22894:19;;22553:366;;;:::o;22925:419::-;23091:4;23129:2;23118:9;23114:18;23106:26;;23178:9;23172:4;23168:20;23164:1;23153:9;23149:17;23142:47;23206:131;23332:4;23206:131;:::i;:::-;23198:139;;22925:419;;;:::o;23350:225::-;23490:34;23486:1;23478:6;23474:14;23467:58;23559:8;23554:2;23546:6;23542:15;23535:33;23350:225;:::o;23581:366::-;23723:3;23744:67;23808:2;23803:3;23744:67;:::i;:::-;23737:74;;23820:93;23909:3;23820:93;:::i;:::-;23938:2;23933:3;23929:12;23922:19;;23581:366;;;:::o;23953:419::-;24119:4;24157:2;24146:9;24142:18;24134:26;;24206:9;24200:4;24196:20;24192:1;24181:9;24177:17;24170:47;24234:131;24360:4;24234:131;:::i;:::-;24226:139;;23953:419;;;:::o;24378:179::-;24518:31;24514:1;24506:6;24502:14;24495:55;24378:179;:::o;24563:366::-;24705:3;24726:67;24790:2;24785:3;24726:67;:::i;:::-;24719:74;;24802:93;24891:3;24802:93;:::i;:::-;24920:2;24915:3;24911:12;24904:19;;24563:366;;;:::o;24935:419::-;25101:4;25139:2;25128:9;25124:18;25116:26;;25188:9;25182:4;25178:20;25174:1;25163:9;25159:17;25152:47;25216:131;25342:4;25216:131;:::i;:::-;25208:139;;24935:419;;;:::o;25360:176::-;25500:28;25496:1;25488:6;25484:14;25477:52;25360:176;:::o;25542:366::-;25684:3;25705:67;25769:2;25764:3;25705:67;:::i;:::-;25698:74;;25781:93;25870:3;25781:93;:::i;:::-;25899:2;25894:3;25890:12;25883:19;;25542:366;;;:::o;25914:419::-;26080:4;26118:2;26107:9;26103:18;26095:26;;26167:9;26161:4;26157:20;26153:1;26142:9;26138:17;26131:47;26195:131;26321:4;26195:131;:::i;:::-;26187:139;;25914:419;;;:::o;26339:178::-;26479:30;26475:1;26467:6;26463:14;26456:54;26339:178;:::o;26523:366::-;26665:3;26686:67;26750:2;26745:3;26686:67;:::i;:::-;26679:74;;26762:93;26851:3;26762:93;:::i;:::-;26880:2;26875:3;26871:12;26864:19;;26523:366;;;:::o;26895:419::-;27061:4;27099:2;27088:9;27084:18;27076:26;;27148:9;27142:4;27138:20;27134:1;27123:9;27119:17;27112:47;27176:131;27302:4;27176:131;:::i;:::-;27168:139;;26895:419;;;:::o;27320:143::-;27377:5;27408:6;27402:13;27393:22;;27424:33;27451:5;27424:33;:::i;:::-;27320:143;;;;:::o;27469:351::-;27539:6;27588:2;27576:9;27567:7;27563:23;27559:32;27556:119;;;27594:79;;:::i;:::-;27556:119;27714:1;27739:64;27795:7;27786:6;27775:9;27771:22;27739:64;:::i;:::-;27729:74;;27685:128;27469:351;;;;:::o;27826:332::-;27947:4;27985:2;27974:9;27970:18;27962:26;;27998:71;28066:1;28055:9;28051:17;28042:6;27998:71;:::i;:::-;28079:72;28147:2;28136:9;28132:18;28123:6;28079:72;:::i;:::-;27826:332;;;;;:::o;28164:137::-;28218:5;28249:6;28243:13;28234:22;;28265:30;28289:5;28265:30;:::i;:::-;28164:137;;;;:::o;28307:345::-;28374:6;28423:2;28411:9;28402:7;28398:23;28394:32;28391:119;;;28429:79;;:::i;:::-;28391:119;28549:1;28574:61;28627:7;28618:6;28607:9;28603:22;28574:61;:::i;:::-;28564:71;;28520:125;28307:345;;;;:::o;28658:224::-;28798:34;28794:1;28786:6;28782:14;28775:58;28867:7;28862:2;28854:6;28850:15;28843:32;28658:224;:::o;28888:366::-;29030:3;29051:67;29115:2;29110:3;29051:67;:::i;:::-;29044:74;;29127:93;29216:3;29127:93;:::i;:::-;29245:2;29240:3;29236:12;29229:19;;28888:366;;;:::o;29260:419::-;29426:4;29464:2;29453:9;29449:18;29441:26;;29513:9;29507:4;29503:20;29499:1;29488:9;29484:17;29477:47;29541:131;29667:4;29541:131;:::i;:::-;29533:139;;29260:419;;;:::o;29685:229::-;29825:34;29821:1;29813:6;29809:14;29802:58;29894:12;29889:2;29881:6;29877:15;29870:37;29685:229;:::o;29920:366::-;30062:3;30083:67;30147:2;30142:3;30083:67;:::i;:::-;30076:74;;30159:93;30248:3;30159:93;:::i;:::-;30277:2;30272:3;30268:12;30261:19;;29920:366;;;:::o;30292:419::-;30458:4;30496:2;30485:9;30481:18;30473:26;;30545:9;30539:4;30535:20;30531:1;30520:9;30516:17;30509:47;30573:131;30699:4;30573:131;:::i;:::-;30565:139;;30292:419;;;:::o;30717:224::-;30857:34;30853:1;30845:6;30841:14;30834:58;30926:7;30921:2;30913:6;30909:15;30902:32;30717:224;:::o;30947:366::-;31089:3;31110:67;31174:2;31169:3;31110:67;:::i;:::-;31103:74;;31186:93;31275:3;31186:93;:::i;:::-;31304:2;31299:3;31295:12;31288:19;;30947:366;;;:::o;31319:419::-;31485:4;31523:2;31512:9;31508:18;31500:26;;31572:9;31566:4;31562:20;31558:1;31547:9;31543:17;31536:47;31600:131;31726:4;31600:131;:::i;:::-;31592:139;;31319:419;;;:::o;31744:176::-;31884:28;31880:1;31872:6;31868:14;31861:52;31744:176;:::o;31926:366::-;32068:3;32089:67;32153:2;32148:3;32089:67;:::i;:::-;32082:74;;32165:93;32254:3;32165:93;:::i;:::-;32283:2;32278:3;32274:12;32267:19;;31926:366;;;:::o;32298:419::-;32464:4;32502:2;32491:9;32487:18;32479:26;;32551:9;32545:4;32541:20;32537:1;32526:9;32522:17;32515:47;32579:131;32705:4;32579:131;:::i;:::-;32571:139;;32298:419;;;:::o;32723:179::-;32863:31;32859:1;32851:6;32847:14;32840:55;32723:179;:::o;32908:366::-;33050:3;33071:67;33135:2;33130:3;33071:67;:::i;:::-;33064:74;;33147:93;33236:3;33147:93;:::i;:::-;33265:2;33260:3;33256:12;33249:19;;32908:366;;;:::o;33280:419::-;33446:4;33484:2;33473:9;33469:18;33461:26;;33533:9;33527:4;33523:20;33519:1;33508:9;33504:17;33497:47;33561:131;33687:4;33561:131;:::i;:::-;33553:139;;33280:419;;;:::o;33705:225::-;33845:34;33841:1;33833:6;33829:14;33822:58;33914:8;33909:2;33901:6;33897:15;33890:33;33705:225;:::o;33936:366::-;34078:3;34099:67;34163:2;34158:3;34099:67;:::i;:::-;34092:74;;34175:93;34264:3;34175:93;:::i;:::-;34293:2;34288:3;34284:12;34277:19;;33936:366;;;:::o;34308:419::-;34474:4;34512:2;34501:9;34497:18;34489:26;;34561:9;34555:4;34551:20;34547:1;34536:9;34532:17;34525:47;34589:131;34715:4;34589:131;:::i;:::-;34581:139;;34308:419;;;:::o;34733:147::-;34834:11;34871:3;34856:18;;34733:147;;;;:::o;34886:114::-;;:::o;35006:398::-;35165:3;35186:83;35267:1;35262:3;35186:83;:::i;:::-;35179:90;;35278:93;35367:3;35278:93;:::i;:::-;35396:1;35391:3;35387:11;35380:18;;35006:398;;;:::o;35410:379::-;35594:3;35616:147;35759:3;35616:147;:::i;:::-;35609:154;;35780:3;35773:10;;35410:379;;;:::o;35795:223::-;35935:34;35931:1;35923:6;35919:14;35912:58;36004:6;35999:2;35991:6;35987:15;35980:31;35795:223;:::o;36024:366::-;36166:3;36187:67;36251:2;36246:3;36187:67;:::i;:::-;36180:74;;36263:93;36352:3;36263:93;:::i;:::-;36381:2;36376:3;36372:12;36365:19;;36024:366;;;:::o;36396:419::-;36562:4;36600:2;36589:9;36585:18;36577:26;;36649:9;36643:4;36639:20;36635:1;36624:9;36620:17;36613:47;36677:131;36803:4;36677:131;:::i;:::-;36669:139;;36396:419;;;:::o;36821:221::-;36961:34;36957:1;36949:6;36945:14;36938:58;37030:4;37025:2;37017:6;37013:15;37006:29;36821:221;:::o;37048:366::-;37190:3;37211:67;37275:2;37270:3;37211:67;:::i;:::-;37204:74;;37287:93;37376:3;37287:93;:::i;:::-;37405:2;37400:3;37396:12;37389:19;;37048:366;;;:::o;37420:419::-;37586:4;37624:2;37613:9;37609:18;37601:26;;37673:9;37667:4;37663:20;37659:1;37648:9;37644:17;37637:47;37701:131;37827:4;37701:131;:::i;:::-;37693:139;;37420:419;;;:::o;37845:224::-;37985:34;37981:1;37973:6;37969:14;37962:58;38054:7;38049:2;38041:6;38037:15;38030:32;37845:224;:::o;38075:366::-;38217:3;38238:67;38302:2;38297:3;38238:67;:::i;:::-;38231:74;;38314:93;38403:3;38314:93;:::i;:::-;38432:2;38427:3;38423:12;38416:19;;38075:366;;;:::o;38447:419::-;38613:4;38651:2;38640:9;38636:18;38628:26;;38700:9;38694:4;38690:20;38686:1;38675:9;38671:17;38664:47;38728:131;38854:4;38728:131;:::i;:::-;38720:139;;38447:419;;;:::o;38872:222::-;39012:34;39008:1;39000:6;38996:14;38989:58;39081:5;39076:2;39068:6;39064:15;39057:30;38872:222;:::o;39100:366::-;39242:3;39263:67;39327:2;39322:3;39263:67;:::i;:::-;39256:74;;39339:93;39428:3;39339:93;:::i;:::-;39457:2;39452:3;39448:12;39441:19;;39100:366;;;:::o;39472:419::-;39638:4;39676:2;39665:9;39661:18;39653:26;;39725:9;39719:4;39715:20;39711:1;39700:9;39696:17;39689:47;39753:131;39879:4;39753:131;:::i;:::-;39745:139;;39472:419;;;:::o;39897:179::-;40037:31;40033:1;40025:6;40021:14;40014:55;39897:179;:::o;40082:366::-;40224:3;40245:67;40309:2;40304:3;40245:67;:::i;:::-;40238:74;;40321:93;40410:3;40321:93;:::i;:::-;40439:2;40434:3;40430:12;40423:19;;40082:366;;;:::o;40454:419::-;40620:4;40658:2;40647:9;40643:18;40635:26;;40707:9;40701:4;40697:20;40693:1;40682:9;40678:17;40671:47;40735:131;40861:4;40735:131;:::i;:::-;40727:139;;40454:419;;;:::o;40879:172::-;41019:24;41015:1;41007:6;41003:14;40996:48;40879:172;:::o;41057:366::-;41199:3;41220:67;41284:2;41279:3;41220:67;:::i;:::-;41213:74;;41296:93;41385:3;41296:93;:::i;:::-;41414:2;41409:3;41405:12;41398:19;;41057:366;;;:::o;41429:419::-;41595:4;41633:2;41622:9;41618:18;41610:26;;41682:9;41676:4;41672:20;41668:1;41657:9;41653:17;41646:47;41710:131;41836:4;41710:131;:::i;:::-;41702:139;;41429:419;;;:::o;41854:227::-;41994:34;41990:1;41982:6;41978:14;41971:58;42063:10;42058:2;42050:6;42046:15;42039:35;41854:227;:::o;42087:366::-;42229:3;42250:67;42314:2;42309:3;42250:67;:::i;:::-;42243:74;;42326:93;42415:3;42326:93;:::i;:::-;42444:2;42439:3;42435:12;42428:19;;42087:366;;;:::o;42459:419::-;42625:4;42663:2;42652:9;42648:18;42640:26;;42712:9;42706:4;42702:20;42698:1;42687:9;42683:17;42676:47;42740:131;42866:4;42740:131;:::i;:::-;42732:139;;42459:419;;;:::o;42884:174::-;43024:26;43020:1;43012:6;43008:14;43001:50;42884:174;:::o;43064:366::-;43206:3;43227:67;43291:2;43286:3;43227:67;:::i;:::-;43220:74;;43303:93;43392:3;43303:93;:::i;:::-;43421:2;43416:3;43412:12;43405:19;;43064:366;;;:::o;43436:419::-;43602:4;43640:2;43629:9;43625:18;43617:26;;43689:9;43683:4;43679:20;43675:1;43664:9;43660:17;43653:47;43717:131;43843:4;43717:131;:::i;:::-;43709:139;;43436:419;;;:::o;43861:229::-;44001:34;43997:1;43989:6;43985:14;43978:58;44070:12;44065:2;44057:6;44053:15;44046:37;43861:229;:::o;44096:366::-;44238:3;44259:67;44323:2;44318:3;44259:67;:::i;:::-;44252:74;;44335:93;44424:3;44335:93;:::i;:::-;44453:2;44448:3;44444:12;44437:19;;44096:366;;;:::o;44468:419::-;44634:4;44672:2;44661:9;44657:18;44649:26;;44721:9;44715:4;44711:20;44707:1;44696:9;44692:17;44685:47;44749:131;44875:4;44749:131;:::i;:::-;44741:139;;44468:419;;;:::o;44893:191::-;44933:4;44953:20;44971:1;44953:20;:::i;:::-;44948:25;;44987:20;45005:1;44987:20;:::i;:::-;44982:25;;45026:1;45023;45020:8;45017:34;;;45031:18;;:::i;:::-;45017:34;45076:1;45073;45069:9;45061:17;;44893:191;;;;:::o;45090:225::-;45230:34;45226:1;45218:6;45214:14;45207:58;45299:8;45294:2;45286:6;45282:15;45275:33;45090:225;:::o;45321:366::-;45463:3;45484:67;45548:2;45543:3;45484:67;:::i;:::-;45477:74;;45560:93;45649:3;45560:93;:::i;:::-;45678:2;45673:3;45669:12;45662:19;;45321:366;;;:::o;45693:419::-;45859:4;45897:2;45886:9;45882:18;45874:26;;45946:9;45940:4;45936:20;45932:1;45921:9;45917:17;45910:47;45974:131;46100:4;45974:131;:::i;:::-;45966:139;;45693:419;;;:::o;46118:320::-;46233:4;46271:2;46260:9;46256:18;46248:26;;46284:71;46352:1;46341:9;46337:17;46328:6;46284:71;:::i;:::-;46365:66;46427:2;46416:9;46412:18;46403:6;46365:66;:::i;:::-;46118:320;;;;;:::o;46444:831::-;46707:4;46745:3;46734:9;46730:19;46722:27;;46759:71;46827:1;46816:9;46812:17;46803:6;46759:71;:::i;:::-;46840:80;46916:2;46905:9;46901:18;46892:6;46840:80;:::i;:::-;46967:9;46961:4;46957:20;46952:2;46941:9;46937:18;46930:48;46995:108;47098:4;47089:6;46995:108;:::i;:::-;46987:116;;47113:72;47181:2;47170:9;47166:18;47157:6;47113:72;:::i;:::-;47195:73;47263:3;47252:9;47248:19;47239:6;47195:73;:::i;:::-;46444:831;;;;;;;;:::o;47281:807::-;47530:4;47568:3;47557:9;47553:19;47545:27;;47582:71;47650:1;47639:9;47635:17;47626:6;47582:71;:::i;:::-;47663:72;47731:2;47720:9;47716:18;47707:6;47663:72;:::i;:::-;47745:80;47821:2;47810:9;47806:18;47797:6;47745:80;:::i;:::-;47835;47911:2;47900:9;47896:18;47887:6;47835:80;:::i;:::-;47925:73;47993:3;47982:9;47978:19;47969:6;47925:73;:::i;:::-;48008;48076:3;48065:9;48061:19;48052:6;48008:73;:::i;:::-;47281:807;;;;;;;;;:::o;48094:663::-;48182:6;48190;48198;48247:2;48235:9;48226:7;48222:23;48218:32;48215:119;;;48253:79;;:::i;:::-;48215:119;48373:1;48398:64;48454:7;48445:6;48434:9;48430:22;48398:64;:::i;:::-;48388:74;;48344:128;48511:2;48537:64;48593:7;48584:6;48573:9;48569:22;48537:64;:::i;:::-;48527:74;;48482:129;48650:2;48676:64;48732:7;48723:6;48712:9;48708:22;48676:64;:::i;:::-;48666:74;;48621:129;48094:663;;;;;:::o

Swarm Source

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